Czym jest SegWit?
W 2017 roku Bitcoin napotkał problem, który miał doprowadzić do rozpadu społeczności. Sieć była w stanie obsłużyć może 3 transakcje na sekundę. Opłaty gwałtownie rosły. Bloki były pełne. I każdy miał inny pomysł, jak to naprawić.
Rozwiązaniem, które zwyciężyło, był SegWit, skrót od Segregated Witness. Został on zaproponowany przez Pietera Wuille'a, jednego z głównych programistów Bitcoin Core, i zmienił sposób, w jaki strukturyzowana jest każda transakcja bitcoinowa. Nie była to drobna zmiana. To fundamentalna przebudowa sposobu, w jaki dane mieszczą się w bloku. Osiem lat później około 96% wszystkich transakcji bitcoinowych korzysta z adresów SegWit. Jeśli kupiłeś lub wysłałeś bitcoina w ciągu ostatnich kilku lat, prawie na pewno korzystałeś z niego nieświadomie.
Jaki był rzeczywisty problem?
Pozwólcie, że nakreślę wam obraz roku 2016.
Bitcoin miał limit 1 MB na każdy blok. Satoshi wprowadził ten limit już w 2010 roku, aby powstrzymać ataki spamu, i nikt go nie zniósł. Bloki są wydobywane co około 10 minut. Przy 1 MB każdy, daje to około 1650 transakcji na blok. Obliczenia wyniosą około 2-3 transakcji na sekundę dla całej sieci Bitcoin. Cała planeta dzieli tak cienką rurę.
Visa, nawiasem mówiąc, robi 65 000 na sekundę. No więc. Problem.
Pod koniec 2016 roku każdy blok osiągał granicę 1 MB. Gdy zabrakło miejsca, użytkownicy bitcoinów zaczęli przelicytować się nawzajem w opłatach transakcyjnych, próbując przekupić górników, aby wybrali ich transakcję jako pierwsi. Opłaty szalały. Wysłanie bitcoinów o wartości 10 dolarów mogło kosztować 15 dolarów opłat. To nie miało sensu.
A potem pojawił się bardziej nerdowski problem. Podatność transakcji. Postaram się to uprościć. Kiedy wysyłasz bitcoiny, sieć tworzy identyfikator dla tej transakcji. Przed SegWitem identyfikator ten był budowany na podstawie całej transakcji, w tym podpisów. Haczyk? Ktoś mógł przechwycić twoją niepotwierdzoną transakcję, pobawić się kodowaniem podpisu (zachowując jego poprawność techniczną) i uzyskać inny identyfikator dla dokładnie tej samej płatności. Ten sam nadawca. Ten sam odbiorca. Ta sama kwota. Inny numer identyfikacyjny.
Dlaczego miałoby Cię to obchodzić? Ponieważ Mt. Gox, giełda, która straciła 840 000 BTC w 2014 roku, padła ofiarą ataku właśnie za pomocą tego błędu. Co ważniejsze, każdy system drugiej warstwy zbudowany na Bitcoinie (jak kanały płatności) musi odwoływać się do transakcji za pomocą ich identyfikatorów. Jeśli te identyfikatory mogą się zmieniać, cały system się zawali.
Bitcoin borykał się z dwoma problemami naraz: zbyt małymi blokami i identyfikatorami transakcji, którym nie można było ufać. SegWit rozwiązał oba problemy za jednym zamachem.
Jak działa SegWit (bez dyplomu z informatyki)
Wyobraź sobie transakcję bitcoinową jak czek. Jest część, która określa, kto komu płaci i ile. Na dole znajduje się Twój podpis, potwierdzający autentyczność transakcji. Przed wprowadzeniem SegWit obie części były upchnięte w jednym bloku, a wszystko to wliczało się do limitu rozmiaru bloku 1 MB.
Oto, co drażniło Pietera Wuille'a: dane sygnaturowe pochłaniały około 65% każdej transakcji. Większość każdego bloku nie rejestrowała tego, co się wydarzyło. Rejestrowała dowód, że ktoś powiedział, że wszystko jest w porządku. To wydawało się marnotrawstwem.
Jego pomysł: wyciągnąć podpisy. Umieścić je w osobnej sekcji zwanej „świadkiem”. Dane transakcji pozostają w bloku głównym. Dane świadka są przechowywane osobno. Nadal są sprawdzane przez każdy węzeł w sieci. Po prostu nie mają takiej samej wagi przy obliczaniu stopnia zapełnienia bloku.
Co się stało w praktyce? Liczba bloków wzrosła z około 1650 do około 2700. Bitcoin skoczył z 2-3 transakcji na sekundę do około 7-10. Nadal śmiesznie w porównaniu z Visą. Ale dla sieci, która dusiła się własnym sukcesem, to była szansa na oddech.

Waga bloku: nowa matematyka
I tu zaczyna się spryt. Oczywistym posunięciem byłoby po prostu zmiana limitu z 1 MB na 2 MB. Ale to oznaczałoby twardy fork. Każdy węzeł w sieci Bitcoin musiałby się zaktualizować, inaczej wypadłby z łańcucha. Twarde forki są chaotyczne. Ludzie zostają w tyle.
Pieter Wuille wymyślił coś sprytniejszego. Zamiast mierzyć bloki w surowych bajtach, SegWit używa „wagi bloku”. Standardowe dane transakcji liczą się jako 4 jednostki wagi na bajt. Dane świadka liczą się jako zaledwie 1 jednostka wagi na bajt. Limit wynosi łącznie 4 miliony jednostek wagi.
Co to oznacza w praktyce? Blok bez danych świadków nadal osiąga maksymalny rozmiar 1 MB, tak jak zawsze. Stare węzły nie widzą niczego dziwnego. Blok wypełniony transakcjami SegWit może teoretycznie osiągnąć rozmiar bliski 4 MB. W rzeczywistości większość bloków osiąga rozmiar około 1,5–2 MB.
Piękno tego: SegWit pojawił się jako soft fork. Węzły, które nigdy nie zostały zaktualizowane, nadal działały. Po prostu nie mogły zobaczyć danych świadków w nowej sekcji. Blockchain Bitcoina nie rozdzielił się. Nie było „starego Bitcoina” i „nowego Bitcoina”. Jeden łańcuch, jedna sieć, wsteczna kompatybilność. Samo to było osiągnięciem inżynierii, które nie jest wystarczająco doceniane.
| Przed SegWitem | Po SegWit |
|---|---|
| Rozmiar bloku: maks. 1 MB | Waga bloku: maks. 4 miliony jednostek wagi |
| ~1650 transakcji na blok | ~2700 transakcji na blok |
| 2-3 TPS | 7-10 TPS |
| Dane podpisu wewnątrz bloku | Dane podpisu w oddzielnym polu świadka |
| Identyfikatory transakcji zawierały podpisy | Identyfikatory transakcji oparte wyłącznie na danych podstawowych |
Naprawa podatności transakcji
Ludzie ciągle mówią o rozmiarze bloku. Zgoda, to był najgłośniejszy problem. Ale myślę, że poprawka podatności na zginanie transakcji była ważniejsza, a większość osób spoza kręgów programistycznych ledwo o tym wie.
Oto, o co chodzi. Przed wprowadzeniem SegWit, gdy Twój portfel bitcoin tworzył transakcję, identyfikator transakcji (nazywany TXID) był obliczany na podstawie wszystkich danych w transakcji. W tym podpisu. I tu pojawia się dziwna część: podpisy cyfrowe można wyrazić w więcej niż jednym prawidłowym formacie. Ten sam podpis, ten sam dowód własności, ale nieco inna sekwencja bajtów.
Oznaczało to, że ktoś mógł przechwycić Twoją niepotwierdzoną transakcję, przekodować podpis w inny, ale równie ważny sposób i go rozesłać. Sieć potwierdzała zmodyfikowaną wersję. Ten sam nadawca, ten sam odbiorca, ta sama kwota. Ale zupełnie inny TXID.
Wiem. Brzmi niejasno. Ale miało to ogromne znaczenie. Wyobraź sobie, że budujesz system, w którym krok B odwołuje się do identyfikatora kroku A. Jeśli ktoś może zmienić identyfikator kroku A po jego przesłaniu, ale przed zatwierdzeniem, krok B się zepsuje. Cały ciąg logiczny legnie w gruzach.
SegWit rozwiązał ten problem, obliczając TXID tylko na podstawie części niebędących świadkami. Podpis znajduje się teraz w polu świadka, oddzielony od ID. Nikt nie może go modyfikować. ID transakcji jest zablokowane raz na zawsze.
SegWit i sieć Lightning
Dlatego właśnie poprawka podatności na zginanie miała znaczenie. Sieć Lightning Network to sposób, w jaki Bitcoin planuje obsługiwać miliony płatności na sekundę. Ty i ja otwieramy kanał płatności. Przesyłamy sobie bitcoiny, poza głównym blockchainem. Po zakończeniu transakcji, na blockchainie rozliczane jest tylko saldo końcowe. Jedna transakcja na blockchainie Bitcoina zamiast setek.
Lightning działa poprzez budowanie łańcuchów transakcji, które odwołują się do siebie nawzajem za pomocą identyfikatorów. Jeśli ktoś zmieni identyfikator w trakcie transakcji, transakcja zwrotu, która Cię chroni, staje się nieważna. Możesz stracić pieniądze. Cała koncepcja kanału płatności opiera się na stabilności identyfikatorów.
SegWit zapewnił im stabilność. Kropka. Bez tej poprawki wdrożenie Lightninga byłoby zbyt ryzykowne. A bez Lightninga Bitcoin na zawsze utknie na poziomie 7-10 transakcji na sekundę. To nie jest sieć płatnicza. To warstwa rozliczeniowa dla wielorybów.
Myślę o tym w ten sposób: SegWit nie był tylko ulepszeniem. To była płyta fundamentowa. Taproot w 2021 roku, Lightning Network, a nawet inskrypcje Ordinals w 2023 roku. Nic z tego nie będzie możliwe bez zmian strukturalnych wprowadzonych w sierpniu 2017 roku.
Formaty adresów: starsze, opakowane i natywne SegWit
Czy zauważyłeś kiedyś, że niektóre adresy bitcoin zaczynają się od „1”, inne od „3”, a jeszcze inne od „bc1”? To aktualizacja SegWit, która pojawia się w Twoim portfelu.
Adresy zaczynające się od „1” są przestarzałe. Stary format. Brak SegWit. Płacisz najwięcej za opłaty. Jeśli Twój portfel nadal Ci je nalicza, zaktualizuj oprogramowanie.
Adresy zaczynające się od „3” są opakowane SegWit. Transakcja bitcoinowa wykorzystuje wewnętrznie SegWit, ale jest on opakowany, dzięki czemu stare portfele, które nie słyszały o SegWit, nadal mogą przesyłać bitcoiny. Tańsza niż tradycyjna, ale nie najtańsza opcja.
Adresy zaczynające się od „bc1q” to natywny SegWit, zwany również Bech32. To jest to. Najniższe opłaty. Najlepsza kontrola błędów (format adresu lepiej wychwytuje literówki). I to właśnie z niego korzysta obecnie 96% transakcji.
Możesz również zobaczyć adresy „bc1p”. To Taproot, nowsza aktualizacja z 2021 roku, oparta na SegWit. To osobny temat, ale warto wiedzieć, że istnieją.
| Typ adresu | Zaczyna się od | Poziom opłat | SegWit? |
|---|---|---|---|
| Dziedzictwo (P2PKH) | 1 | Najwyższy | NIE |
| Zapakowany SegWit (P2SH) | 3 | Średni | Tak (zapakowane) |
| Natywny SegWit (Bech32) | bc1q | Najniższy | Tak (ojczysty) |
| Korzeń palowy (Bech32m) | bc1p | Najniższy | Tak + Korzeń palowy |
Ile faktycznie oszczędzasz na opłatach?
To właśnie chcą wiedzieć moi nietechniczni znajomi. O ile taniej?
Unchained przeprowadził obliczenia. Standardowa transakcja SegWit z pojedynczym podpisem pozwala zaoszczędzić około 53% opłat w porównaniu z tradycyjnym systemem. Jeśli korzystasz z konfiguracji multisig 2-z-3 (często stosowanej w systemach depozytowych), oszczędzasz około 64%. Nie jest to błąd zaokrąglenia. W ruchliwy dzień, w którym użytkownicy tradycyjnych systemów płacą 30 USD za transakcję, z natywnym SegWitem płacisz mniej niż 15 USD.
Dlaczego? Znowu ta matematyka wagi bloku. Dane świadka liczą się jako 0,25 bajtu wirtualnego zamiast 1. Twoja transakcja zajmuje mniej miejsca w bloku. Górnicy pobierają za nią mniejsze opłaty. Proste.
Jeśli Twój portfel bitcoinowy nadal podaje Ci adresy zaczynające się od „1”, marnujesz pieniądze przy każdym wysyłaniu. Przejdź na natywny SegWit. Pięć minut pracy. Coinbase, Ledger, Trezor, BlueWallet, Sparrow – wszystkie obsługują tę technologię. Nie ma żadnych wad.

Kontrowersje: dlaczego SegWit prawie nie powstał?
Ta część jest szczerze mówiąc ciekawsza niż sama technologia. SegWit prawie umarł, zanim jeszcze został wprowadzony na rynek.
Na pierwszy rzut oka walka wydawała się prosta. Jeden obóz, „wielcy blokerzy”, chciał zwiększyć limit rozmiaru bloku z 1 MB do 8 MB lub więcej. Więcej miejsca, więcej transakcji. Proste rozwiązanie. Bitmain, największy górnik bitcoinów na świecie, mocno poparł ten obóz. Niektórzy oskarżali Bitmain o sprzeciwianie się SegWit, ponieważ miałoby to zablokować ASICBOOST, tajną sztuczkę wbudowaną w ich chipy do kopania kryptowalut, która dawała im przewagę szybkości nad konkurencją. Bitmain temu zaprzeczył. Świat kryptowalut im nie uwierzył.
Drugi obóz składał się głównie z programistów Bitcoin Core i osób zarządzających pełnymi węzłami w domu. Ich argumentem było: tworzenie ośmiokrotnie większych bloków wymaga ośmiokrotnie większej przepustowości, pamięci masowej i mocy obliczeniowej do uruchomienia węzła. Za kilka lat tylko centra danych i farmy wydobywcze będą mogły pozwolić sobie na walidację blockchaina bitcoina. Decentralizacja umiera po cichu.
Śledziłem to na bieżąco i szczerze czułem, że Bitcoin może nie przetrwać tej dyskusji. Ludzie krzyczeli na siebie na Twitterze, Reddicie i na konferencjach. Odbyło się nawet zamknięte spotkanie w Nowym Jorku („Porozumienie Nowojorskie”), na którym grupa firm próbowała wynegocjować umowę łączącą SegWit z późniejszym zwiększeniem rozmiaru bloku. Ta umowa również upadła.
Co się właściwie wydarzyło: SegWit został aktywowany 1 sierpnia 2017 roku jako soft fork aktywowany przez użytkowników. Górnicy bitcoinów, którzy się temu sprzeciwiali, oddzielili się i stworzyli Bitcoin Cash (BCH) tego samego dnia. BCH miał bloki o rozmiarze 8 MB (obecnie 32 MB) i nie posiadał SegWit. Nadal istnieje. Jego cena wynosi ułamek ceny Bitcoina.
1 sierpnia jest przez niektórych nazywany „Dniem Niepodległości Bitcoina”. Wnioski były takie, że to operatorzy węzłów, a nie firmy wydobywcze, mieli ostatnie słowo w sprawie zasad Bitcoina. Ten precedens jest ważniejszy niż jakakolwiek linijka kodu w samej aktualizacji SegWit.
Wdrażanie SegWit dzisiaj
Debata zakończona. 96% transakcji bitcoinowych korzysta z SegWit od 2025 roku. Obsługuje go każdy duży portfel. Obsługuje go każda giełda. Jeśli nadal korzystasz ze starszych adresów, jedynym wytłumaczeniem jest oprogramowanie, którego nie aktualizowałeś od lat.
Aktualizacja SegWit otworzyła również drzwi do wszystkiego, co nastąpiło później. Taproot pojawił się w listopadzie 2021 roku i dodał sygnatury Schnorra do struktury SegWit. Liczby porządkowe pojawiły się w 2023 roku i zaczęły wpychać pliki JPEG do przestrzeni danych świadków, którą stworzył SegWit. Ludzie mają mieszane uczucia co do tego ostatniego, ale fakt pozostaje niezmienny: SegWit stworzył tę przestrzeń, a programiści ją wypełnili.
Czy SegWit ma dla Ciebie znaczenie? Jeśli w ogóle korzystasz z Bitcoina, tak. Otwórz ustawienia portfela i sprawdź format adresu. Jeśli zaczyna się od „bc1q”, wszystko jest w porządku. Jeśli zaczyna się od „1”, powinieneś zmienić adres już dziś. Niższe opłaty, szybsze potwierdzenia w czasie przeciążenia i pełny dostęp do płatności Lightning.
Nigdy nie pomyślisz o SegWit na co dzień. To instalacja hydrauliczna pod podłogą. Ale gdyby ktoś nie zainstalował jej w 2017 roku, cały dom byłby już zalany.