Co tak naprawdę daje nam SegWit?

Segregated Witness jest bardzo rozbudowanym protokołem ulepszeń dla Bitcoina. Całą listę zmian można znaleźć na oficjalniej stronie Bitcoin Core. Nie jest to jednak lektura dla każdego i nawet osoby będące w środowisku kryptowalut może to „przyprawić o ból głowy”. Postaram się więc za pomocą prostej analogii wytłumaczyć jak SegWit rozwiązuje kwestię skalowalności sieci.

Bitcoin w pigułce

Pomyślmy o Bitcoinie jako o wielkiej księdze rozrachunkowej. W takim wypadku transakcja w sieci Bitcoin bardzo przypomina czek. Dzięki niemu możemy dowolnej osobie wysłać część swoich środków. Żeby wysłać transakcję Bitcoin musimy ją podpisać, tak jak w przypadku czeku. Podpis ten jest tworzony na podstawie klucza prywatnego.

Podpis na tradycyjnym czeku zawiera małą ilość miejsca i znajduje się na samym końcu. W przypadku transakcji Bitcoin podpis w bardzo znaczącym stopniu determinuje wielkość transakcji. Stanowi on od około 50% do 60% transakcji ( w przypadku transakcji multisig może to być nawet powyżej 75% ). Ponadto podpis ten jest zawarty w danych wejściowych transakcji. Wyobraźcie sobie jak trudno byłoby bankowi wyegzekwować transfer środków, gdyby tak było w przypadku prawdziwych czeków.

Dobrym odpowiednikiem bloku w łańcuchu Bitcoina byłby segregator, do którego wkładamy podpisane wcześniej czeki. Taki segregator potrafi zmieścić konkretną ilość takich czeków. Blok Bitcoina również ma taki limit, który wynosił 1MB. Przez długi czas segregatory były przepełnione, co powodowało opóźnienia w sieci i zwiększenie opłat za transakcje.

Sieć Bitcoin musi być jednogłośna przy określaniu poprawności transakcji zawartych w tych segregatorach. Każdy kto chce sprawdzić poprawność transakcji zawartych w nim, otrzymuje kopię. Taki audyt ma miejsce w sieci Bitcoina co około 10 minut. Zapewnia to bezpieczeństwo i zabezpiecza przed oszustwami. Jeśli okaże się, że ktoś chciał wydać na czeku więcej niż posiadał, taki segregator jest odrzucany.

Dwa sposoby na naprawienie sytuacji

Z powodu maksymalnego rozmiaru segregatora może się do niego zmieścić tylko konkretna ilość czeków transakcyjnych. Powoduje to ograniczenie przepustowości sieci. Długotrwająca debata o skalowalności przyniosła nam dwa rozwiązania.

Jednym z nich jest po prostu zwyczajnie zwiększenie segregatorów ( bloków ) zawierających czeki. Powoduje to, że można zmieścić w nich więcej czeków. Główną zaletą tego rozwiązania jest prostota. Następuje tylko zmiana uprzednio założonych reguł i nic poza tym. To właśnie wykorzystało Bitcoin Cash, gdy odłączyło się od sieci głównego łańcucha Bitcoin.

Jak działa SegWit?

Innym rozwiązaniem jest wprowadzenie nowego rodzaju czeków transakcyjnych, ale cały czas istnieje możliwość zwiększenia segregatora. Wcześniej wspomniałem o tym, że podpis stanowi dużą część czeku i jest zawarty w danych wejściowych transakcji.

SegWit reorganizuje czek. Wyciąga podpis z części czeku, w którym są dane transakcyjne i oddziela go od samego czeku jednocześnie usprawniając przeprowadzenie transakcji. Wiedząc, że podpis jest dowodem transakcyjnym możemy bardzo łatwo zrozumieć skąd wzięła się nazwa Segregated Witness ( oddzielony dowód ). Węzły mogą pozbyć się dowodów po zweryfikowaniu poprawności transakcji, albo pominąć kompletnie jak ma to miejsce w przypadku portfeli lekkich, czyli korzystających z SPV ( Simplified Payment Verification ). Dowód transakcji nie musi być wysyłany do wszystkich jak również nie wszyscy muszą go przechowywać na dysku. Poprzez ten zabieg możemy również zwiększyć ilość czeków w segregatorze, nie zwiększając bezpośrednio jego rozmiaru.

Oczywistą wadą tego rozwiązania jest jego złożoność. Ponadto, żeby zobaczyć konkretne zmiany w funkcjonowaniu sieci, wszyscy musieliby korzystać z nowego rodzaju czeków. W praktyce oznacza to między innymi, że muszą zacząć funkcjonować portfele wspierające SegWit.

Czy to wszystko?

W opisany powyżej sposób wprowadzenie Segregated Witness wpływa na przepustowość sieci Bitcoin. Można by rzec, że jest to tylko przystanek na drodze rozwoju najstarszej kryptowaluty. Opisany powyżej mechanizm bowiem sam w sobie nie rozwiąże problemu skalowalności. SegWit przygotowuje sieć Bitcoina pod wprowadzenie protokołu Lightning Network, który umożliwi przesyłanie milionów czy też miliardów transakcji na sekundę. Dla porównania, wcześniej Bitcoin mógł przeprowadzić tylko 7 transakcji na sekundę.

Każda transakcja ma swój unikatowy identyfikator. Jest on zmienny zależnie od danych transakcyjnych. W praktyce, jeśli zmienia się ilość przesyłanych przez nas BTC, zmienia się również ten identyfikator ( transaction ID ). Ma to również miejsce w przypadku zmiany podpisu, gdyż jest on zawarty w danych transakcyjnych. Oznacza to, że każdy komu uda się zmienić podpis, ma kontrolę nad zmianą identyfikatora transakcji. Jest to szczególnie niebezpieczne, ponieważ Bitcoin jest zorganizowany wokół nich. Każda nowa transakcja odnosi się do poprzednich, by zweryfikować autentyczność podpisu.

Problem ten jest zwany jest jako deformowalność transakcji ( transaction malleability ). Wcześniej napisałem, że Segregated Witness umożliwia oddzielenie dowodu transakcyjnego. Nie tylko usprawnia to przeprowadzenie samej transakcji, ale rozwiązuje również wspomniany wyżej problem. Otwiera to drogę na wprowadzenie Lightning Network. Developerzy Core mówią, że istnieją możliwości zaimplementowania Lightning Network bez naprawy problemu deformowalności transakcji, jednak SegWit  zdecydowanie uproszcza to zadanie.

 

 

Podziel się z innymi

Bitcoin, Blockchain, Kryptowaluty