SegWit je změna bitcoinových pravidel, která oddělila data pro ověření utrácení, například podpisy, od části transakce používané k výpočtu jejího základního identifikátoru. Zároveň změnila měření kapacity bloků. Pro uživatele to může znamenat úspornější platby; pro vývojáře spolehlivější způsob, jak na jednu transakci navázat další.
Při odeslání peněženka určí, které dříve přijaté prostředky utrácí a jaké nové částky mají vzniknout příjemci a případně vám jako vrácený zbytek. Zároveň musí doložit právo prostředky utratit. Právě k tomu slouží podpisy a další ověřovací data. SegWit je umístil do části zvané witness. Anglický název zde označuje důkaz splnění podmínek utracení, nikoli člověka svědčícího u platby. Data se nezahodila ani nepřesunula mimo Bitcoin: uzly, které ověřují pravidla SegWitu, je dál kontrolují. [1]
Peněženka sleduje platbu pomocí identifikátoru txid. Další transakce jím také odkazuje na prostředky, které chce utratit. Dříve mohla změna některých podpisových dat změnit txid, aniž by se změnili příjemci či částky. To komplikovalo navazování dosud nepotvrzených plateb. SegWit počítá txid bez witness; změna samotného witness jej tedy nezmění. Pro ochranu celé transakce před tímto problémem musí všechny její vstupy používat SegWit. Změna příjemce nebo vstupů může txid změnit dál. Stabilnější odkazy usnadnily také Lightning Network, síť pro platby přes platební kanály. Druhý identifikátor, wtxid, naopak zahrnuje i witness. [1] [4]
SegWit zavedl váhu místo prostého počítání všech bajtů stejně. Bajt základních dat stojí 4 jednotky váhy, dodatečný bajt witness 1 jednotku. Celý blok má limit 4 000 000 jednotek. Například transakce se 100 základními bajty a dalšími 100 witness bajty váží 500 jednotek a má virtuální velikost 125 vB. Ta slouží k výpočtu poplatku při zvolené sazbě sat/vB. Úspora tedy závisí na stavbě transakce; sazbu dál ovlivňuje zájem o místo v bloku. Z limitu váhy nelze odvodit, že každý blok má stejně megabajtů nebo že každá SegWit platba bude levnější. [1]
Na hlavní bitcoinové síti začínají nativní adresy SegWit verze 0 na bc1q. Označení P2WPKH a P2WSH rozlišují dva druhy podmínek utracení: běžnou platbu ovládanou klíčem a platbu se skriptem, tedy souborem pravidel. SegWit lze také zabalit do staršího formátu P2SH s adresou začínající 3; samotná trojka ale SegWit nedokazuje. Taproot používá witness verze 1 a adresy bc1p. Prefix bc1 tedy není jeden jediný typ platby. Pro běžné použití ověřte podporu formátu u odesílající peněženky a celou adresu příjemce; žádný z těchto prefixů sám neslibuje anonymitu. [1] [2] [3]
Změna byla navržena jako Soft Fork, tedy zpřísnění pravidel slučitelné se staršími pravidly. Starší uzel ale nové podmínky SegWitu sám plně neověřuje. Witness je k bloku kryptograficky připoután záznamem zvaným witness commitment v coinbase, první transakci bloku. Podpisy proto nejsou volitelným dodatkem, který lze při úplném ověřování ignorovat. BIP 141 zapisuje váhu také jako trojnásobek základní velikosti plus celkovou velikost; virtuální velikost je váha dělená čtyřmi a zaokrouhlená nahoru. To jsou dvě vyjádření stejného účtování, nikoli dva různé limity. [1]
Pro nejúplnější obraz čtěte toto heslo společně s Transakce, Transaction Fees, Lightning Network, Taproot. Opačným směrem na něj odkazují také Transakce, Transaction Fees, Taproot, Lightning Network.