Czym jest Segregated Witness (SegWit)?

Autor: Kraken Learn team
11 min
26 lis 2024

Przewodnik dla początkujących dotyczący SegWit Bitcoina

Segregated Witness (SegWit) to aktualizacja kodu źródłowego Bitcoina z 1 sierpnia 2017 r.

Pomimo tego, co wielu postrzegało jako ulepszenia blockchaina Bitcoin, SegWit spotkał się z silnym sprzeciwem, który podzielił społeczność. 

W centrum problemu były konkurujące zainteresowania rentownością górników i deweloperami sieci, którzy dążą do uczynienia Bitcoina tańszym i szybszym w użyciu.

Napięcie spowodowało rozdrobnienie w społeczności, co zakończyło się pierwszym aktywowanym przez użytkowników soft forkiem sieci i nieprzyjemnym podziałem. Dział stworzył serię nowych projektów opartych na forkach Bitcoina, w tym Bitcoin Cash.

Do dziś SegWit pozostaje jednym z najbardziej kontrowersyjnych wydarzeń w historii Bitcoina. Uznano to jednak za jedną z najważniejszych aktualizacji dla długoterminowej opłacalności protokołu. 

Każdego roku wielu członków społeczności Bitcoin obchodzi 1 sierpnia jako „Dzień Niepodległości Bitcoina”. Wydarzenie to jest okazją, w której wola ludu zwyciężyła przeciw scentralizowanym interesom ugruntowanych firm zajmujących się kopaniem bitcoinów.

Zapoznajmy się z każdym z tych wydarzeń i odkryjmy historię SegWit.

BTC icon
$69 709.00
+0,26%
24 godz.
btc

Zacznij przygodę z Bitcoinem przed SegWit?

Przed aktywacją SegWit pojemność bloku Bitcoina nie zmieniła się przez wiele lat. Pojemność bloku odnosi się do maksymalnej liczby transakcji, które można zarejestrować w danym bloku.

Kiedy Bitcoin został uruchomiony w 2009 r., jego twórca (twórcy) Satoshi Nakamoto nie ustawił żadnych parametrów dla tego, jak duże mogą być bloki Bitcoina.

Jednak w 2010 roku Nakamoto potajemnie dodał limit rozmiaru bloku 1 megabajt (MB) bez zatwierdzenia innych uczestników Bitcoina.

Wielu wierzy, że Nakamoto zawierał limit w celu zapobiegania przyszłym atakom dystrybuowanym odrzuceniem usług (DDoS), które mogą mieć wpływ na sieć.

Ten stały limit mocy bloku miał niepożądany efekt ograniczania potencjału skalowania Bitcoina na kilka sposobów.

Niska przepustowość i wolne czasy transakcji

Tylko ograniczona liczba transakcji może mieścić się w stosunkowo niewielkim bloku 1 MB, który został obecnie przyjęty przez Bitcoina. Ta mała pojemność oznaczała, że sieć Bitcoin może przetwarzać tylko około 2–3 transakcji bitcoinowych (BTC) na sekundę — daleko od tradycyjnych sieci płatniczych cyfrowych, które mogą przetwarzać dziesiątki tysięcy transakcji na sekundę.

Ponadto, aby blok transakcji mógł zostać uznany za ważny w ramach procesu kopania Bitcoin, musi otrzymać sześć potwierdzeń. Innymi słowy, po danym bloku do blockchaina musi zostać dodanych sześć nowych bloków, zanim zostanie on sfinalizowany. Przy średnim czasie bloku dziesięć minut oznacza to, że potwierdzenia bloków Bitcoina trwają około godziny.

W tamtym czasie, gdy tylko garstka kryptografów „Cypherpunk” była świadoma Bitcoina, niekoniecznie był to duży problem. Jeśli sieć Bitcoin ma stać się globalnym „elektronicznym systemem gotówkowym peer-to-peer”, jak przewidział Satoshi w białej księdze Bitcoina, rzeczy muszą się zmienić.

Wysokie opłaty

Niska przepustowość Bitcoina, ograniczona przez małą pojemność bloku, oznaczała, że opłaty również były stosunkowo znacznie wyższe niż obecnie.

Poniżej przedstawiono łatwy sposób na zrozumienie tego problemu. Wyobraź sobie, że stoisz na zewnątrz w tłumie ludzi po obejrzeniu pokazu teatralnego. Wszyscy z teatru chcą zabrać taksówkę do domu w tym samym czasie. Jeśli w pobliżu jest mnóstwo taksówek, powstanie domu powinno być łatwe dla każdego. Jeśli istnieje jednak tylko kilka taksówek, ludzie mogą spróbować zapłacić kierowcom taksówek wyższą cenę, aby zachęcić je do powrotu do domu. W zależności od popytu, ceny taksówek mogą wzrosnąć znacznie powyżej normalnej stawki.

Opłaty za Bitcoina działają na podstawie tych samych zasad podaży i popytu. Jeśli wiele osób chce, aby ich transakcje były przetwarzane jednocześnie, niektórzy mogą zapłacić więcej opłat, aby ich transakcje były wcześniej przetwarzane przez górników. W okresach intensywnego korzystania z sieci Bitcoin przeciążenie może skutkować konkurencją między użytkownikami, co może spowodować gwałtowny wzrost opłat transakcyjnych.

Nieprawidłowości w zakresie transakcji

Inny nieodłączny niuanse w sposobie działania bloków Bitcoin był znany jako malleability transakcji. Przed SegWitem ludzie mogli zmienić identyfikator transakcji, zanim otrzymała wystarczająco dużo potwierdzeń w blockchainie.

Pobranie informacji związanych z konkretną transakcją i uruchomienie jej poprzez funkcję haszującą tworzy identyfikator transakcji. Więcej informacji na temat funkcji haszowych znajdziesz w naszym artykule Jak kryptowaluty wykorzystują kryptografię?

Jednak ze względów prostoty można postrzegać te identyfikatory transakcji jako cyfrowe odciski palców, które służą do identyfikacji i odniesienia do transakcji w blockchainie.

Zmiana identyfikatora transakcji tworzy całkowicie nowy hash, który może czasami zaburzyć oprogramowanie klienckie blockchaina. Wszystkie węzły uruchamiają oprogramowanie klienckie, aby wchodzić w interakcję z blockchainem i pełnić ważne role, takie jak weryfikacja danych.

Ten błąd w kodzie Bitcoina otworzył drzwi do złośliwych ataków. Jednym z najbardziej słynnych przykładów ataku związanego z nieuczciwością transakcji był hak na giełdę Mt. Gox w 2014 roku — znanym jako największy haker Bitcoina w historii.

Eksperci zgłosili, że haker lub grupa hakerów opróżniła portfel bitcoinowy giełdy Mt. Gox. Udało im się to częściowo poprzez zmianę identyfikatora transakcji swoich wypłat. 

Atak malleability transakcji sprawił, że wypłaty nie były potwierdzane w blockchainie, gdy w rzeczywistości tak było.

Ta lukę, w połączeniu z innymi wektorami ataków, umożliwił hakerom przejęcie ponad 840 000 BTC z giełdy.

Jakie udoskonalenia wprowadziła aplikacja SegWit? ⭐️

Występca Bitcoina Pieter Wuille po raz pierwszy zaprezentował aktualizację SegWit na wydarzeniu Bitcoin Hong Kong w 2015 roku.

Jego rozwiązanie było innowacyjne z trzech stron. SegWit poprawił skalowalność Bitcoina, usunął malleability i umożliwił węzłom przyjęcie nowej struktury transakcji. Najlepsze jest to, że można to zrealizować bez forkowania sieci.

Oddzielny podpis cyfrowy i informacje o transakcji

Propozycja Wuille'a zwiększyła pojemność bloku Bitcoina poprzez „oddzielenie” danych „znajomych” od bloku i przenoszenie ich do transakcji coinbase. Transakcje Coinbase to pierwsze transakcje w ramach każdego nowego bloku Bitcoina. Transakcja coinbase jest odpowiedzialna za wprowadzenie nowo wybitych kryptowalut do obiegu jako nagrody za proces kopania Bitcoina.

Górnicy, którzy wygrali konkurs proof-of-work oparty na kryptografii Bitcoina, zdobywają te nowo wykopane tokeny jako „nagrody za bloki”.

Dane świadków, znane również jako ScriptSig lub Odblokowywanie skryptu, obejmują podpis cyfrowy i informacje klucza publicznego potrzebne do odblokowania przeniesionego Bitcoina. Aktualizacja SegWit wprowadziła oddzielne „pole świadków” dla części ScriptSig transakcji.

Przetwarzając informacje z podpisem cyfrowym oddzielnie od pola wprowadzania transakcji, uzyskano więcej miejsca dla transakcji w każdym bloku.

Więcej transakcji na blok oznacza wyższe możliwości przepustowości transakcji. Zatem zamiast 2-3 transakcji na sekundę, Bitcoin może przetwarzać od 7 do 10 transakcji SegWit na sekundę. Zwiększona pojemność oznacza również niższe opłaty, ponieważ blockchain Bitcoin może obsługiwać większy wolumen transakcji.

Pomimo oddzielenia, należy pamiętać, że węzły nadal przetwarzają zarówno dane transakcji, jak i dane świadków on-chain. Nie używany jest żaden sidechain ani protokół warstwy 2.

Waga bloku

Przed SegWitem górnicy mierzali bloki bitcoinów według rozmiaru (w bajtach). System ten działał dobrze, gdy bloki zawierały zarówno dane świadków, jak i transakcji, ale pojawiły się problemy po ich oddzieleniu.

Aby to rozwiązać, w ramach aktualizacji wprowadzono wskaźnik zwany wagą bloku w celu zarządzania wielkością bloków.

Dzięki tej koncepcji każdy blok 1 megabyta składa się z 4 000 000 jednostek wagowych (WU). Każda transakcja jest ważona w oparciu o poniższy wzór:

Rozmiar transakcji bazowej w bajtach (bez danych świadka) * 3 + Całkowity rozmiar transakcji w bajtach.

Usuwając dane pola świadków z obliczeń, transakcje SegWit mają znacznie mniejszą wagę. Z drugiej strony transakcja niezwiązana z SegWit nadal zawiera dane świadków. Oznacza to, że transakcje inne niż SegWit zawsze ważą 4-krotnie więcej niż transakcje SegWit.

Koncepcja ta teoretycznie zwiększa rozmiar bloku Bitcoina z 1 MB do 4 MB, jeśli blok składa się niemal w całości z danych świadków. W praktyce jest to jednak niemożliwe.

Główną zaletą systemu ważonego jest to, że zachęca górników do przetwarzania bloków zawierających głównie transakcje SegWit. Zakładając, że transakcje SegWit wiążą się z tymi samymi opłatami, co stare bloki, górnik może przetworzyć znacznie więcej transakcji SegWit na blok. Im więcej transakcji przetwarzają na blok, tym więcej zarabiają.

Win-win dla obu stron. Tak myślisz.

Brak problemów z malleability transakcji

W strukturze SegWit zaszyfrowany identyfikator transakcji zawiera tylko informacje o transakcji, a nie informacje o polu świadka.

Ta zmiana powoduje usunięcie modyfikowalnego elementu transakcji z udziałem Bitcoina, który wcześniej włączał ataki malleability.

W rezultacie wtórne rozwiązania skalowania, takie jak sieć Bitcoin Lightning, stały się możliwe.

 

Dlaczego SegWit było kontrowersyjne? 🤔

Wiele osób w społeczności programistycznej uważało, że SegWit nie poszedł za daleko, aby rozwiązać problemy z skalowaniem Bitcoina.

Główne argumenty przeciwne aktywacji SegWit:

  • Zwiększona przepustowość Bitcoina w wysokości 7–10 transakcji na sekundę nadal nie jest wystarczająco wysoka dla zdecentralizowanego, globalnego systemu płatności.
  • Opłaty pozostaną stosunkowo wysokie, dzięki czemu sprawy takie, jak mikrotransakcje, będą finansowo niemożliwe do realizacji.
  • Górnicy nadal mogą przetwarzać stare bloki transakcji, co oznacza, że malleowalność nadal jest zagrożeniem.
  • Później odkryto, że SegWit neguje mechanizm ASICBOOST Bitmaina; atut używany do znacznego zwiększenia wydajności kopalni.

Około roku po wniosku Wuille'a, on i inni deweloperzy Bitcoin Core, w tym Eric Lombrozo, przygotowali kod do uruchomienia w nadchodzącym aktualizacji Bitcoin Core 0.13.1. Jedynym pozostałym krokiem do aktywacji SegWit było rozpoczęcie przetwarzania nowych bloków SegWit przez górników. 

Aby umocnić jego wdrożenie, ponad 95% wszystkich górników bitcoinów musiało okazać wsparcie dla SegWit w ciągu pierwszych dwóch tygodni od jego uruchomienia — jest to poważna przeszkoda, biorąc pod uwagę okoliczności w tamtym czasie.

Aktywowany przez użytkownika soft fork

Oczywiście duże firmy górnicze, takie jak Bitmain, były nadal niezadowolone z proponowanych zmian i odmówiły wsparcia aktywacji SegWit.

Na początku 2017 r. pseudonimowy deweloper o imieniu Shaolinfry podniósł możliwość wprowadzenia przez węzły Bitcoina soft forka w postie Bitcoina online

Aktywowany przez użytkowników soft fork nigdy wcześniej nie był próbowany w sieci Bitcoin, ale pozwoliłby programistom przejść przez SegWit z około 51% poparciem górników. Ci, którzy odmówili wsparcia nowych bloków, ryzykowali, że ich bloki zostaną odrzucone przez węzły. Rozwiązanie nie było bez ryzyka. Jeśli SegWit nie uzyska wystarczającego wsparcia ze strony górników, wynik będzie zawsze prowadzić do podziału łańcucha.

Osoby przeciwko SegWit zaproponowały inną aktualizację hard forka SegWit 2X. Jedna, która wprowadzi SegWit i zwiększy rozmiar bloku Bitcoina do 2 MB.

W przeciwieństwie do poprzedniej aktualizacji, SegWit 2X nie byłby wstecz kompatybilny z poprzednimi wersjami klienta Bitcoin. Zmiany te oznaczały, że węzły musiały zaktualizować oprogramowanie, aby kontynuować działanie w sieci.

SegWit i dołączenie do umowy w Nowym Jorku †

Wiodące firmy branży spotkały się na konsensusie 2017 i wspólnie podpisali memorandum o nazwie „Umowa z Nowego Jorku”. Dokument ten określił plany uruchomienia SegWit w lecie i zwiększenia rozmiaru bloku Bitcoina do 2 MB do listopada.

Przed listopadem Shaolinfry sporządził dwie propozycje ulepszeń Bitcoina (BIP): BIP148 i BIP149. Pierwsze stanowiło trudne i szybkie rozwiązanie; obsługa sygnału dla bloków lub węzłów SegWit odrzuci Twoje bloki. Ten ostatni zapewnił górnikom dłuższy horyzont czasowy do dołączenia, ustanawiając termin aktywacji na lipiec kolejnego roku.

W miarę jak data zbliża się, inżynier Bitmain Warranty, James Hillard, zaproponował nowy BIP; BIP91. Jego rozwiązanie miało na celu zapewnienie kompatybilności zarówno SegWit 2X, jak i BIP148. Po co ryzykować podział łańcucha w związku z dwiema konkurującymi aktualizacjami SegWit, gdy można sprawić, że będą one kompatybilne?

W dniu 1 sierpnia wystarczające wsparcie w zakresie kopania umocniło aktywację SegWit. Drugi etap umowy z Nowego Jorku nie uzyskał jednak tego samego wsparcia.

Niepowodzenie zwiększenia rozmiaru bloku Bitcoina do 2 MB spowodowało utworzenie Bitcoin Cash (BCH) — nowego projektu forkowanego z blockchaina Bitcoin.

$467.48
+3,17%
24 godz.
bch

Znaczenie dnia niezależności Bitcoina

Wprowadzenie SegWit i decyzja społeczności o odrzuceniu zwiększenia rozmiaru bloku stanowiła przełomowy moment dla szerszej społeczności Bitcoina.

SegWit pokazał znaczenie konsensusu w zakresie zmian w blockchainie Bitcoina, a także zakres decentralizacji władzy, jaką zapewnia Bitcoin.

Żadna pojedyncza osoba nie mogła przejąć sieci i zobaczyć, czy ich propozycja została zrealizowana.

Zamiast tego społeczność dyskutowała, powtarzała i kontynuowała długi proces osiągania konsensusu jako zbiorcza grupa — a nie pod kierunkiem pojedynczej osoby.

Zacznij kupować Bitcoina

Gdy teraz wiesz już wszystko o SegWit, czy chcesz kontynuować swoją przygodę z kryptowalutami i kupić Bitcoina?

Zapoznaj się z naszym przewodnikiem w Centrum wiedzy Kraken, aby dowiedzieć się więcej na temat jak kupić Bitcoina (BTC) i załóż konto w Krakenie już dziś.