Co je Segregated Witness (SegWit)?

Průvodce pro začátečníky k Bitcoin SegWit 💭
Segregated Witness (SegWit) byl upgrade provedený ve zdrojovém kódu Bitcoinu 1. srpna 2017.
I přes to, co mnozí vnímali jako vylepšení blockchainu Bitcoinu, se SegWit setkal se silnou opozicí, která rozdělila komunitu.
Jádrem problému byl střet zájmů mezi ziskovostí těžařů a vývojáři sítě, kteří se snažili, aby byl Bitcoin levnější a rychleji použitelný.
Toto napětí způsobilo rozkol v komunitě, který vyvrcholil prvním soft forkem aktivovaným uživateli a nepřátelským rozdělením. Toto rozdělení dalo vzniknout řadě nových projektů odvozených od Bitcoinu, včetně Bitcoin Cash.
Dodnes zůstává SegWit jednou z nejkontroverznějších událostí v historii Bitcoinu. Zároveň se však ukázal být jednou z nejdůležitějších aktualizací pro dlouhodobou životaschopnost protokolu.
Každý rok mnozí z komunity Bitcoinu slaví 1. srpen jako “Den nezávislosti Bitcoinu.” Tato událost připomíná okamžik, kdy vůle lidu zvítězila nad centralizovanými zájmy zavedených společností těžících bitcoin.
Pojďme prozkoumat každou z těchto událostí, jak se staly, a odhalit historii, která stojí za SegWitem.
Bitcoin před SegWit ⏮️
Před aktivací SegWitu zůstala kapacita bloku Bitcoinu mnoho let nezměněna. Kapacita bloku odkazuje na maximální počet transakcí, které mohou být zaznamenány v daném bloku.
Když byl Bitcoin spuštěn v roce 2009, jeho tvůrce (tvůrci) Satoshi Nakamoto nenastavil žádné parametry pro to, jak velké by bitcoinové bloky mohly být.
Nicméně v roce 2010 Nakamoto tajně přidal limit velikosti bloku 1 megabyte (MB) bez souhlasu ostatních přispěvatelů Bitcoinu.
Mnozí se domnívali, že Nakamoto tento limit zahrnul, aby zabránil budoucím útokům typu distribuované odmítnutí služby (DDoS), které by mohly ovlivnit síť.
Tento pevně stanovený limit kapacity bloku měl nežádoucí účinek v tom, že omezoval potenciál Bitcoinu pro škálování několika způsoby.
Nízká propustnost a pomalé transakční časy
Do relativně malého 1MB bloku, který Bitcoin nyní přijal, se vejde jen omezený počet transakcí. Tato malá kapacita znamenala, že síť Bitcoinu mohla zpracovat pouze kolem 2–3 bitcoinových (BTC) transakcí za sekundu — což je daleko od tradičních digitálních platebních sítí, které dokážou zpracovat desítky tisíc transakcí za sekundu.
Navíc, aby byl blok transakcí považován za platný jako součást procesu těžby bitcoinů, musí obdržet šest potvrzení. Jinými slovy, po daném bloku musí být do blockchainu přidáno šest nových bloků, než bude dokončen. Při průměrné době bloku deset minut to znamená, že potvrzení bitcoinových bloků trvá přibližně jednu hodinu.
V té době, kdy si bitcoin uvědomovala jen hrstka “Cypherpunk” kryptografů, to nebyl nutně velký problém. Ale pokud se měla síť Bitcoinu stát globálním “peer-to-peer elektronickým hotovostním systémem,” jak si Satoshi představoval v bílé knize Bitcoinu, bylo třeba změnit.
Vysoké poplatky
Nízká propustnost Bitcoinu, omezená jeho malou kapacitou bloku, znamenala, že poplatky byly také srovnatelně mnohem vyšší, než jsou dnes.
Zde je snadný způsob, jak tento problém pochopit. Představte si, že stojíte venku v davu lidí po shlédnutí divadelního představení. Všichni z divadla chtějí jet domů taxíkem ve stejnou dobu. Pokud je v okolí dostatek taxíků, mělo by být snadné, aby se všichni dostali domů. Pokud je však k dispozici jen hrstka taxíků, lidé se mohou pokusit zaplatit řidičům vyšší cenu, aby je motivovali k tomu, aby je odvezli domů jako první. V závislosti na poptávce mohou ceny taxíků výrazně vzrůst nad běžnou sazbu.
Bitcoinové poplatky fungují na stejných principech nabídky a poptávky. Pokud mnoho lidí chce, aby byly jejich transakce zpracovány ve stejnou dobu, někteří se mohou rozhodnout zaplatit vyšší poplatky, aby jejich transakce byly horníky zpracovány dříve. Během období vysokého využití sítě Bitcoin může přetížení vést ke konkurenci mezi uživateli, což může způsobit prudký nárůst transakčních poplatků.
Měnitelnost transakcí
Další inherentní nuance ve fungování Bitcoin bloků byla známa jako měnitelnost transakcí. Před SegWit mohli lidé změnit ID transakce dříve, než obdržela dostatečný počet potvrzení v blockchainu.
Získáním informací souvisejících s konkrétní transakcí a jejich zpracováním pomocí hashovací funkce se vytvoří ID transakce. Více o hashovacích funkcích se můžete dozvědět v našem článku Jak kryptoměny používají kryptografii?
Pro zjednodušení si však můžete tyto ID transakcí představit jako digitální otisky prstů, které se používají k identifikaci a odkazování na transakce v blockchainu.
Změna ID transakce vytváří zcela nový hash, který by mohl někdy zmást klientský software blockchainu. Všechny uzly provozují klientský software pro interakci s blockchainem a plní důležité role, jako je ověřování dat.
Tato chyba měnitelnosti v kódu Bitcoinu otevřela dveře zákeřným útokům. Jedním z nejznámějších příkladů útoku měnitelnosti transakcí byl hack burzy Mt. Gox v roce 2014 — proslulý jako největší bitcoinový hack v historii.
Experti oznámili, že hacker nebo skupina hackerů vyprázdnila bitcoinovou peněženku burzy Mt. Gox. Částečně toho dosáhli změnou ID transakcí svých výběrů.
Útok měnitelnosti transakcí způsobil, že se zdálo, jako by výběry nebyly potvrzeny v blockchainu, ačkoli ve skutečnosti byly.
Tato zranitelnost, spolu s dalšími vektory útoku, umožnila hackerovi(ům) odčerpat z burzy přes 840 000 BTC.
Jaká vylepšení SegWit přinesl? ⚙️
Vývojář Bitcoinu Pieter Wuille poprvé představil upgrade SegWit na události Bitcoin Hong Kong v roce 2015.
Jeho řešení bylo inovativní ve třech ohledech. SegWit zlepšil škálovatelnost Bitcoinu, odstranil měnitelnost a umožnil uzlům přijmout novou transakční strukturu. Nejlepší ze všeho bylo, že toto mohlo být implementováno bez hard-forku sítě.
Oddělení digitálního podpisu a transakčních informací
Wuilleův návrh zvýšil kapacitu bloku Bitcoin tím, že „oddělil“ data „witness“ z bloku a přesunul je do coinbase transakce. Coinbase transakce jsou vůbec prvními transakcemi v každém novém bloku Bitcoin. Coinbase transakce je zodpovědná za vydávání nově ražené kryptoměny do oběhu jako odměnu za proces těžby Bitcoinu.
Těžaři, kteří uspějí ve vyhrání kryptografické soutěže proof-of-work Bitcoinu, získávají tyto nově ražené tokeny jako „odměny za blok.“
Data Witness, známá také jako ScriptSig nebo Unlocking Script, zahrnují informace o digitálním podpisu a veřejném klíči potřebné k odemknutí převedeného bitcoinu. Upgrade SegWit zavedl samostatné „pole witness“ pro část transakce ScriptSig.
Zpracováním informací o digitálním podpisu odděleně od vstupního pole transakce, vznikl větší prostor pro transakce, které se vešly do každého bloku.
Více transakcí na blok se rovná vyšší propustnosti transakcí. Místo 2-3 transakcí za sekundu tak Bitcoin dokáže zpracovat 7-10 SegWit transakcí za sekundu. Zvýšená kapacita také znamená nižší poplatky, protože blockchain Bitcoin dokáže zpracovat větší objem transakcí.
Navzdory oddělení je důležité poznamenat, že uzly stále zpracovávají transakční data i data witness on-chain. Nepoužívají se žádné sidechainy ani protokoly Layer 2.
Váha bloku
Před SegWitem těžaři měřili bitcoinové bloky podle velikosti (v bajtech). Tento systém fungoval dobře, když bloky obsahovaly data witness i transakční data, ale narazil na problémy, když byla oddělena.
K překonání tohoto problému zavedl upgrade metriku nazvanou váha bloku (block weight), která řídí velikost bloků.
S tímto konceptem se každý 1megabajtový blok skládá ze 4 000 000 jednotek váhy (WU). Každé transakci je přiřazena váha na základě následujícího vzorce:
Base transaction size in bytes (with no witness data) * 3 + Total transaction size in bytes.
Odstraněním dat pole witness z výpočtu mají transakce SegWit mnohem nižší váhu. Na druhé straně, transakce bez SegWitu stále obsahuje data witness. To znamená, že transakce bez SegWitu váží vždy 4krát více než transakce SegWit.
Tento koncept teoreticky zvyšuje velikost bitcoinového bloku z 1 MB na 4 MB, pokud se blok skládá téměř výhradně z dat witness. V praxi to však není možné.
Hlavní výhodou váhového systému je, že motivuje těžaře ke zpracování bloků obsahujících převážně transakce SegWit. Za předpokladu, že transakce SegWit nesou stejné poplatky jako starší bloky, může těžař zpracovat mnohem více transakcí SegWit na blok. Čím více transakcí zpracují na blok, tím více poplatků si vydělají.
Výhoda pro obě strany. Nebo si to alespoň myslíte.
Už žádné problémy s malleabilitou transakcí
Ve struktuře SegWit obsahuje hashované ID transakce pouze transakční informace, nikoli informace o poli witness.
Tato změna odstraňuje modifikovatelnou komponentu bitcoinové transakce, která dříve umožňovala útoky malleability.
V důsledku toho se stala možnou sekundární škálovací řešení, jako je Bitcoin Lightning Network.
Proč byl SegWit kontroverzní? 🤔
Mnozí z vývojářské komunity cítili, že SegWit nezašel dostatečně daleko, aby vyřešil problémy se škálováním Bitcoinu.
Mezi hlavní argumenty proti aktivaci SegWitu patří:
- Zvýšená propustnost Bitcoinu 7–10 transakcí za sekundu je stále nedostatečná pro decentralizovaný, globální platební systém.
- Poplatky by zůstaly relativně vysoké, což by znemožnilo finančně realizovat mikrotransakce.
- Těžaři mohou stále zpracovávat staré transakční bloky, což znamená, že modifikovatelnost je stále hrozbou.
- Později se zjistilo, že SegWit by zrušil mechanismus ASICBOOST společnosti Bitmain; exploit používaný k výraznému zvýšení účinnosti těžebních souprav.
Zhruba rok po Wuilleho návrhu připravil on a další vývojáři Bitcoin Core, včetně Erica Lombroza, kód k uvedení do provozu v nadcházející aktualizaci Bitcoin Core 0.13.1. Jediným zbývajícím krokem k aktivaci SegWitu bylo, aby těžaři začali zpracovávat nové SegWit bloky.
Pro zpečetění implementace by více než 95 % všech těžařů Bitcoinu muselo projevit podporu pro SegWit během prvních dvou týdnů od jeho zahájení — což byla vzhledem k tehdejším okolnostem velká překážka.
Uživatelsky aktivovaný měkký fork
Netřeba dodávat, že velké těžební společnosti jako Bitmain byly stále nespokojené s navrhovanými změnami a odmítaly podporu aktivace SegWitu.
Na začátku roku 2017 pseudonymní vývojář jménem „Shaolinfry“ naznačil možnost, že by Bitcoinové uzly prosadily měkký fork v online příspěvku na bitcoin-dev.
Uživatelsky aktivovaný měkký fork ještě nikdy nebyl na síti Bitcoin proveden, ale umožnil by vývojářům prosadit SegWit s přibližně 51% podporou od těžařů. Ti, kteří odmítli podporovat nové bloky, riskovali, že jejich bloky budou uzly odmítnuty. Řešení nebylo bez rizik. Pokud by SegWit nezískal dostatečnou podporu od těžařů, výsledek by nevyhnutelně vedl k rozštěpení řetězce.
Ti, kteří byli proti SegWitu, navrhli místo toho jinou upgrade v podobě tvrdého forku SegWit 2X. Ten by implementoval SegWit a zvýšil velikost bloku Bitcoinu na 2 MB.
Na rozdíl od předchozího upgradu by SegWit 2X nebyl zpětně kompatibilní s předchozími verzemi klienta Bitcoinu. Tyto změny znamenaly, že uzly by musely aktualizovat svůj software, aby mohly nadále fungovat v síti.
SegWit a New York Agreement 🗽
Přední společnosti v oboru se setkaly na Consensus 2017 a společně podepsaly memorandum nazvané "New York Agreement." Tento dokument stanovil plány pro spuštění SegWitu v létě a pro zvýšení velikosti bloku Bitcoinu na 2 MB do listopadu.
Před listopadem vypracoval Shaolinfry dva návrhy na zlepšení Bitcoinu (BIPs); BIP148 a BIP149. První z nich představoval rychlé a rázné řešení; signalizujte podporu pro SegWit bloky, jinak uzly vaše bloky odmítnou. Druhý poskytoval těžařům delší časový horizont pro připojení, s termínem aktivace v červenci následujícího roku.
Jak se blížil termín, inženýr záručního servisu společnosti Bitmain, James Hillard, navrhl nový BIP; BIP91. Jeho řešení se snažilo učinit SegWit 2X a BIP148 vzájemně kompatibilními. Proč riskovat rozštěpení řetězce kvůli dvěma konkurenčním aktualizacím SegWitu, když je můžete učinit obě kompatibilními?
1. srpna dostatečná podpora těžařů upevnila aktivaci SegWitu. Druhá fáze New York Agreementu však nezískala stejnou podporu.
Neschopnost zvýšit velikost bloku Bitcoinu na 2 MB vedla k vytvoření Bitcoin Cash (BCH) — nového forkovaného projektu z blockchainu Bitcoinu.
Význam dne nezávislosti Bitcoinu
Zavedení SegWit a rozhodnutí komunity odmítnout zvýšení velikosti bloku představovalo pro širší komunitu Bitcoinů přelomový okamžik.
SegWit ukázal důležitost konsenzu, pokud jde o změny v blockchainu Bitcoin, stejně jako rozsah decentralizace moci, kterou bitcoin nabízel.
Žádný jednotlivec nebyl schopen převzít síť a prosadit svůj návrh.
Místo toho komunita diskutovala, opakovala a pokračovala v dlouhém procesu dosahování konsenzu jako kolektivní skupina — nikoli pod vedením jediného jednotlivce.
Začněte nakupovat Bitcoin
Nyní, když jste se dozvěděli vše o SegWitu, jste připraveni pokračovat ve své cestě kryptoměnami a koupit bitcoin?
Pro více informací se podívejte na naši příručku Kraken Learn Center Jak koupit Bitcoin (BTC) a zaregistrujte se k účtu u Krakenu ještě dnes.
