SegWit zmienił reguły Bitcoina, oddzielając dane potwierdzające prawo do wydania środków, na przykład podpisy, od części służącej do obliczenia podstawowego identyfikatora transakcji. Zmienił też pomiar pojemności bloków. Użytkownik może dzięki temu płacić oszczędniej pod względem miejsca, a programista pewniej budować jedną transakcję na drugiej.
Podczas wysyłania portfel wskazuje, które wcześniej otrzymane środki wydaje i jakie nowe kwoty powstaną dla odbiorcy oraz ewentualnie dla Ciebie jako reszta. Musi też dowieść prawa do wydania tych środków. Służą temu podpisy i inne dane weryfikacyjne. SegWit umieścił je w części zwanej witness. Nazwa oznacza tu dowód spełnienia warunków wydania, nie osobę obserwującą płatność. Danych nie wyrzucono ani nie przeniesiono poza Bitcoin: węzły egzekwujące reguły SegWit nadal je sprawdzają. [1]
Portfel śledzi płatność za pomocą txid. Późniejsza transakcja także używa tego identyfikatora, wskazując środki, które chce wydać. Dawniej zmiana niektórych danych podpisu mogła zmienić txid, choć nie zmieniono odbiorców ani kwot. Utrudniało to łączenie jeszcze niepotwierdzonych płatności. SegWit oblicza txid bez witness, więc zmiana samego witness go nie zmienia. Aby chronić całą transakcję przed tym problemem, wszystkie jej wejścia muszą używać SegWit. Zmiana odbiorców lub wejść nadal może zmienić txid. Stabilniejsze odwołania pomogły też Lightning Network, sieci płatności przez kanały. Drugi identyfikator, wtxid, uwzględnia witness. [1] [4]
SegWit wprowadził wagę zamiast jednakowego liczenia wszystkich bajtów. Bajt danych podstawowych kosztuje 4 jednostki wagi, dodatkowy bajt witness — 1. Cały blok ma limit 4 000 000 jednostek. Przykładowo transakcja ze 100 bajtami podstawowymi i dodatkowymi 100 bajtami witness waży 500 jednostek i ma rozmiar wirtualny 125 vB. Ten rozmiar służy do obliczenia opłaty przy wybranej stawce sat/vB. Oszczędność zależy więc od budowy transakcji; popyt na miejsce nadal wpływa na stawkę. Limit wagi nie oznacza jednakowej liczby megabajtów w każdym bloku ani tego, że każda płatność SegWit będzie tańsza. [1]
W głównej sieci Bitcoina natywne adresy SegWit w wersji 0 zaczynają się od bc1q. P2WPKH i P2WSH rozróżniają dwa rodzaje warunków wydania: zwykłą płatność kontrolowaną kluczem i płatność ze skryptem, czyli zestawem reguł. SegWit można też opakować w starszy format P2SH z adresem zaczynającym się od 3; sama trójka nie dowodzi jednak użycia SegWit. Taproot używa witness w wersji 1 i adresów bc1p. Przedrostek bc1 nie oznacza zatem tylko jednego typu płatności. Na co dzień sprawdzaj obsługę formatu przez portfel nadawcy i cały adres odbiorcy; żaden z tych początków sam nie zapewnia anonimowości. [1] [2] [3]
Zmianę zaprojektowano jako Soft Fork, czyli zaostrzenie reguł zgodne ze starszymi zasadami. Starszy węzeł nie sprawdza jednak samodzielnie wszystkich nowych warunków SegWit. Witness jest kryptograficznie związany z blokiem przez witness commitment w coinbase, pierwszej transakcji bloku. Podpisy nie są więc opcjonalnym dodatkiem, który pełna weryfikacja może pominąć. BIP 141 zapisuje wagę także jako trzykrotność rozmiaru podstawowego plus rozmiar całkowity; rozmiar wirtualny to waga podzielona przez cztery i zaokrąglona w górę. To opisy tego samego rozliczenia, a nie dwa różne limity. [1]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Transakcja, Transaction Fees, Lightning Network, Taproot. Do tego hasła prowadzą również odsyłacze z Transakcja, Transaction Fees, Taproot, Lightning Network.