Wprowadzenie do technologii Segregated Witness (SegWit)
Strona Główna
Artykuły
Wprowadzenie do technologii Segregated Witness (SegWit)

Wprowadzenie do technologii Segregated Witness (SegWit)

Zaawansowany
Opublikowane Nov 25, 2019Zaktualizowane Jun 13, 2023
6m

Spis treści


Co to jest SegWit?

Segregated Witness (SegWit) jest aktualizacją protokołu opracowaną w 2015 r. Koncepcja ta została wprowadzona jako próba rozwiązania problemu skalowalności, z którym zmagały i nadal zmagają się sieci blockchain.

Statystycznie, sieć Bitcoin weryfikuje nowy blok co 10 minut, przy czym każdy z nich zawiera do kilku transakcji. Zatem wielkość bloku bezpośrednio wpływa na liczbę transakcji możliwych do zatwierdzenia w jednym bloku. Obecnie blockchain Bitcoina jest w stanie przetworzyć około 7 transakcji na sekundę.

Głównym pomysłem SegWit jest reorganizacja danych bloku w taki sposób, że sygnatury kryptograficzne nie są już umieszczane wraz z informacjami transakcyjnymi. Innymi słowy, aktualizacja SegWit polega na oddzieleniu (segregate) poświadczeń (witnesses) od danych transakcyjnych. W praktyce pozwala to na przechowywanie większej liczby transakcji w jednym bloku, tym samym zwiększając przepustowość całej sieci.

Z powodu tego, że Bitcoin potrafi przetworzyć zaledwie 7 transakcji na sekundę, przesyłanie płatności poprzez jego sieć może czasem zająć sporo czasu. Pozostawia go to w tyle za konwencjonalnymi rozwiązaniami i sieciami płatniczymi, przetwarzającymi tysiące transakcji na sekundę.

SegWit został stworzony w 2015 roku, przez programistę Bitcoina - Pieter Wuille, wraz z innymi współtwórcami Bitcoin Core. W sierpniu 2017r. aktualizacja wprowadzająca SegWit została dodana do sieci Bitcoina pod postacią soft fork'a.
Dziś istnieje kilka kryptowalut stosujących technologię SegWit, w tym Bitcoin i Litecoin. Uaktualnienie protokołu przyniosło szereg korzyści, takich jak zwiększenie szybkość transakcji i przepustowości bloku. Ponadto SegWit rozwiązał, tak zwany, błąd związany z ciągliwością transakcji (omówiony poniżej).


Jakie są główne korzyści płynące ze stosowania SegWit?

Wzrost pojemności

Jedną z największych korzyści zastosowania SegWit jest zwiększenie przepustowości bloków. Usuwając dane sygnatur z wejścia (input) transakcji, można przechowywać więcej transakcji w jednym bloku.

Transakcje składają się z dwóch głównych komponentów: wejść oraz wyjść. Zasadniczo, dane wejściowe zawierają klucze publiczne nadawców, podczas gdy dane wyjściowe zawierają klucze publiczne odbiorców. Nadawca musi jednak wpierw udowodnić, że posiada przesyłane środki, do czego służą podpisy cyfrowe.

Bez SegWita podpisy cyfrowe mogą zająć aż do 65% bloku. Z SegWit, sygnatury zostają przeniesione z danych wejściowych. Powoduje to wzrost efektywnej wielkości bloku z 1 MB do około 4 MB.

Zauważ, że SegWit sam w sobie nie zwiększa rozmiaru bloku. Zamiast tego, zwiększana jest efektywna wielkość bloku , bez konieczności zwiększania limitu rozmiaru bloku (co wymagałoby hard-fork'a). Będąc bardziej szczegółowym, rzeczywista wielkość bloku nadal wynosi 1 MB, ale efektywna granica została przesunięta do 4 MB.

Ponadto SegWit wprowadził pomysł wagi bloku. Możemy uznać wagę bloku za koncepcję zastępującą rozmiar bloku. Zasadniczo, waga bloku jest miarą, która obejmuje wszystkie dane blokowe, w tym dane transakcji (1 MB) oraz dane sygnatur (do 3 MB), które nie stanowią już części informacji wejściowych.


Przyrost prędkości transakcji

Z blokiem mogącym przechowywać więcej transakcji, SegWit ma również możliwość zwiększenia prędkości transakcji, ponieważ zwiększona zostaje liczba transakcji przechodzących przez blockchain. Nawet jeśli wykopanie bloku zajmuje dokładnie tyle samo czasu, więcej transakcji jest procesowanych w tym samym okresie, zatem rośnie wartość TPS.

Zwiększona prędkość transakcji pomogła również obniżyć koszty transakcji w sieci Bitcoin. Przed pojawieniem się technologii SegWit, wydawanie ponad $30 USD na przesłanie bitcoinów nie było czymś nadzwyczajnym. Jednakże SegWit drastycznie obniżył ten koszt do poziomu poniżej $1 USD za transakcję.


Poprawa błędu z ciągliwością transakcji

Głównym problemem Bitcoina była możliwość potencjalnej ingerencji w sygnatury. Jeżeli podpis zostałby zmieniony, mogło to spowodować uszkodzenie całej transakcji między dwoma stronami. Z racji, że dane przechowywanie na blockchainie są praktycznie niezmienne, w takiej sytuacji, nieprawidłowe transakcje byłyby trwale przechowywane w rejestrze.

Z pomocą SegWit, podpisy nie są już częścią danych transakcji, co usuwa możliwość ingerencji w te dane. Usprawnienie te pozwoliło na rozwijanie dalszych innowacje w całej społeczności kryptowalut, w tym protokołów drugie warstwy (second layer) i inteligentnych umów.


SegWit i Lightning Network

Opracowanie protokołów drugiej warstwy zostało częściowo umożliwione poprzez naprawę błędu dotyczącego ciągliwości transakcji. Protokoły drugiej warstwy są nowymi platformami i systemami działającymi "na górze" łańcuchów bloków, takich jak blockchain Bitcoina. Jednym z popularniejszych protokołów drugiej warstwy jest sieć Lightning Network, umożliwiająca mikropłatności dokonywane off-chain, czyli poza rejestrem głównym.

Lightning Network to sieć drugiej warstwy działająca w ramach Bitcoina. Głównym celem Lightning Network je zaoferowanie możliwości przesyłania większej liczby transakcji w krótszym czasie. Transakcje są zbierane poza głównym łańcuchem bloków i buforowane, tak aby finalnie mogła je przetworzyć sieć Bitcoin.

Sieć Lightning Network została pierwotnie opracowana dla Bitcoina. Jednak kilka innych projektów kryptowalut pracuje nad wdrożeniem technologii dla swoich własnych blockchainów. Spowoduje to nie tylko skrócenie czasu potwierdzania transakcji, ale także pobudzi prace badawcze nad nowymi rozwiązaniami problemu skalowalności.


SegWit kontra SegWit2x

Aktualizacja SegWit należy do kategorii soft fork'ów, dlatego jest wstecznie kompatybilna. Oznacz to, że węzły sieci Bitcoin, które nie są aktualizowane w celu uwzględnienia SegWi, nadal mogą przetwarzać transakcje zawierające SegWit. Niemniej zaproponowano później inną implementację SegWit o nazwie SegWit2x (S2X), wymagającą hard-fork'a.

Główna różnica między SegWit, a SegWit2x polega na tym, że ten ostatni nie tylko wprowadziłby zmianę w serii transakcji, lecz także zwiększył rozmiar bloku (z 1 MB do 2 MB). Jednak większy rozmiar bloku zwiększyłby obciążenie operatorów węzłów i górników, ponieważ musieliby oni przetworzyć znacznie więcej danych. 

Inna istotna różnica polega na tym, że propozycja SegWit została poparta i wyegzekwowana przez społeczność Bitcoina. Narodziło to koncepcję UASF, która oznacza miękki fork aktywowany przez użytkowników (user-activated soft fork).

Z drugiej strony SegWit2x proponował znaczącą zmianę jednej z podstawowych zasad regulujących Bitcoina. Ponieważ jednak deweloperzy nie byli w stanie dojść do konsensusu w sprawie przyjęcia i wdrożenia, ruch SegWit2x ostatecznie podupadł i rozpadł się.


Przemyślenia końcowe

Wdrożenie SegWit było największą aktualizację protokołu Bitcoin, a fakt, że była ona wspierana i wdrażana przez zdecentralizowaną społeczność, czyni całą sprawę jeszcze ciekawszą.

Wprowadzenie SegWit było ważnym krokiem naprzód w rozwiązywaniu wielu problemów związanych z Bitcoinem i sieciami blockchain - zwłaszcza w odniesieniu do skalowalności. Dzięki połączeniu SegWit i protokołów drugiej warstwy, sieci blockchain mogą obsługiwać większą liczbę transakcji przy znaczniejszej wydajności i niższych kosztach.

Mimo że jest to potężne i innowacyjne rozwiązanie, SegWit nie został jeszcze w pełni przyjęty. Obecnie odsetek adresów Bitcoin korzystających z SegWit wynosi około 53%.