Co je Segregated Witness (SegWit)?

Průvodce Bitcoin SegWit pro začátečníky 💭
Segregated Witness (SegWit) byla aktualizace zdrojového kódu Bitcoinu provedená 1. srpna 2017.
Navzdory tomu, že SegWit přinesl vylepšení bitcoinového blockchainu, která mnozí považovali za pozitivní, setkal se se silným odporem, který rozdělil 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 rychlejší k použití.
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 jako jedna z nejdůležitějších aktualizací pro dlouhodobou životaschopnost protokolu.
Každý rok mnozí v bitcoinové komunitě 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í tak, jak se staly, a odhalit historii, která stojí za SegWitem.
Bitcoin před SegWitem ⏮️
Před aktivací SegWitu zůstala kapacita bloků Bitcoinu mnoho let nezměněna. Kapacita bloku se vztahuje k maximálnímu počtu transakcí, které lze zaznamenat v daném bloku.
Když byl Bitcoin spuštěn v roce 2009, jeho tvůrce(tvůrci) Satoshi Nakamoto nestanovil(i) žádné parametry pro to, jak velké mohou být bitcoinové bloky.
V roce 2010 však Nakamoto tajně přidal limit velikosti bloku 1 megabyte (MB) bez souhlasu ostatních přispěvatelů Bitcoinu.
Mnozí věřili, že Nakamoto zahrnul limit, aby zabránil budoucím útokům typu distributed denial of service (DDoS), které by mohly ovlivnit síť.
Tento pevný limit kapacity bloku měl nežádoucí účinek, který omezoval potenciál Bitcoinu škálovat několika způsoby.
Nízká propustnost a pomalé transakční časy
Do poměrně malého 1MB bloku, který Bitcoin nyní přijal, se vejde pouze omezený počet transakcí. Tato malá kapacita znamenala, že síť Bitcoin 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.
Kromě toho, aby byl blok transakcí považován za platný jako součást procesu těžby Bitcoinu, musí obdržet šest potvrzení. Jinými slovy, šest nových bloků musí být přidáno do blockchainu po daném bloku, než je transakce dokončena. S průměrnou dobou bloku deset minut to znamená, že potvrzení bitcoinového bloku trvá přibližně jednu hodinu.
V té době, kdy o Bitcoinu vědělo jen několik kryptografů „Cypherpunk“, to nebyl nutně velký problém. Ale pokud se měla síť Bitcoin stát globálním „peer-to-peer elektronickým hotovostním systémem“, jak si Satoshi představoval v bílé knize Bitcoinu, věci se musely změnit.
Vysoké poplatky
Nízká propustnost Bitcoinu, omezená malou kapacitou bloku, znamenala, že poplatky byly také poměrně mnohem vyšší než dnes.
Zde je jednoduchý způsob, jak tento problém pochopit. Představte si, že stojíte venku v davu lidí po zhlédnutí divadelního představení. Všichni z divadla chtějí jet domů taxíkem ve stejnou dobu. Pokud je kolem dostatek taxíků, mělo by být pro každého snadné dostat se domů. Ale pokud je k dispozici jen hrstka taxíků, lidé se mohou pokusit zaplatit taxikářům vyšší cenu, aby je motivovali k tomu, aby je odvezli domů jako první. V závislosti na poptávce by ceny taxíků mohly výrazně vzrůst nad běžnou sazbu.
Poplatky za Bitcoin fungují na stejných principech nabídky a poptávky. Pokud mnoho lidí chce, aby jejich transakce byly zpracovány ve stejnou dobu, někteří se mohou rozhodnout zaplatit vyšší poplatky, aby jejich transakce byly těžaři 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ů.
Transakční malleabilita
Další inherentní nuance ve způsobu, jakým fungovaly bitcoinové bloky, byla známá jako transakční malleabilita. Před SegWitem mohli lidé změnit ID transakce, než obdržela dostatek potvrzení na blockchainu.
Vytvoření ID transakce probíhá tak, že se informace související s konkrétní transakcí proženou hashovací funkcí. Více o hashovacích funkcích se dozvíte v našem článku Jak kryptoměny používají kryptografii?
Pro zjednodušení si však tato ID transakcí můžete představit jako digitální otisky prstů, které se používají k identifikaci a odkazování na transakce na blockchainu.
Změna ID transakce vytvoří zcela nový hash, což by někdy mohlo zmást klientský software blockchainu. Všechny uzly spouštějí klientský software pro interakci s blockchainem a plní důležité role, jako je ověřování dat.
Tato chyba malleability v kódu Bitcoinu otevřela dveře škodlivým útokům. Jedním z nejznámějších příkladů útoku transakční malleability byl hack burzy Mt. Gox v roce 2014 – proslulý jako největší bitcoinový hack v historii.
Odborníci uvedli, že hacker nebo skupina hackerů vyprázdnila bitcoinovou peněženku burzy Mt. Gox. Udělali to částečně změnou ID transakcí svých výběrů.
Útok transakční malleability způsobil, že se zdálo, jako by výběry nebyly potvrzovány na blockchainu, ačkoli ve skutečnosti byly.
Tato zranitelnost, spolu s dalšími vektory útoku, umožnila hackerům odčerpat z burzy přes 840 000 BTC.
Jaká vylepšení přinesl SegWit? ⚙️
Přispěvatel do Bitcoinu Pieter Wuille poprvé představil upgrade SegWit na akci Bitcoin Hong Kong v roce 2015.
Jeho řešení bylo inovativní ve třech směrech. SegWit zlepšil škálovatelnost Bitcoinu, odstranil malleabilitu a umožnil uzlům přijmout novou transakční strukturu. Nejlepší na tom bylo, že to mohlo být implementováno bez hard forku sítě.
Oddělený digitální podpis a transakční informace
Wuilleho návrh zvýšil kapacitu bitcoinového bloku tím, že „oddělil“ data „svědka“ od bloku a přesunul je do coinbase transakce. Coinbase transakce jsou úplně první transakce v každém novém bitcoinovém bloku. Coinbase transakce je zodpovědná za vydávání nově vytěžené kryptoměny do oběhu jako odměnu za proces těžby Bitcoinu.
Těžaři, kteří uspějí ve výhře kryptografické proof-of-work soutěže Bitcoinu, získávají tyto nově vytěžené tokeny jako „odměny za blok“.
Data svědka, známá také jako ScriptSig nebo Unlocking Script, zahrnují digitální podpis a informace o veřejném klíči potřebné k odemknutí převedeného Bitcoinu. Upgrade SegWit zavedl samostatné „pole svědka“ pro část ScriptSig transakce.
Zpracováním informací o digitálním podpisu odděleně od pole pro vstup transakce se uvolnilo více místa pro transakce v každém bloku.
Více transakcí na blok se rovná vyšší propustnosti transakcí. Takže místo 2–3 transakcí za sekundu může Bitcoin zpracovat 7–10 SegWit transakcí za sekundu. Zvýšená kapacita také znamená nižší poplatky, protože bitcoinový blockchain dokáže zpracovat vyšší objem transakcí.
Navzdory oddělení je důležité poznamenat, že uzly stále zpracovávají jak transakční data, tak data svědka on-chain. Nepoužívá se žádný sidechain ani protokol 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 jak data svědka, tak transakční data, ale narazil na problémy, když byly odděleny.
K překonání tohoto problému zavedl upgrade metriku nazvanou váha bloku pro správu velikosti bloků.
S tímto konceptem se každý 1-megabyte blok skládá ze 4 000 000 váhových jednotek (WU). Každá transakce má váhu založenou na následujícím vzorci:
Základní velikost transakce v bajtech (bez dat svědka) * 3 + Celková velikost transakce v bajtech.
Odstraněním dat pole svědka z výpočtu mají SegWit transakce mnohem nižší váhu. Na druhou stranu, non-SegWit transakce stále obsahují data svědka. To znamená, že non-SegWit transakce vždy váží 4krát více než SegWit transakce.
Tento koncept teoreticky zvyšuje velikost bitcoinového bloku z 1MB na 4MB, pokud se blok skládá téměř výhradně z dat svědka. V praxi to však není možné.
Hlavní výhodou váženého systému je, že motivuje těžaře ke zpracování bloků obsahujících převážně SegWit transakce. Za předpokladu, že SegWit transakce nesou stejné poplatky jako starší bloky, může těžař zpracovat mnohem více SegWit transakcí na blok. Čím více transakcí zpracují na blok, tím více poplatků vydělají.
Výhra pro obě strany. Nebo byste si to alespoň mysleli.
Už žádné problémy s transakční malleabilitou
V rámci struktury SegWit obsahuje hashované ID transakce pouze transakční informace, nikoli informace z pole svědka.
Tato změna odstraňuje modifikovatelnou složku 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í v komunitě vývojářů se domnívali, že SegWit nešel dostatečně daleko k řešení problémů se škálováním Bitcoinu.
Hlavní argumenty proti aktivaci SegWitu zahrnují:
- Zvýšená propustnost Bitcoinu 7–10 transakcí za sekundu je stále zdaleka nedostatečná pro decentralizovaný, globální platební systém.
- Poplatky by zůstaly relativně vysoké, což by znemožnilo finančně proveditelné mikrotransakce.
- Těžaři mohou stále zpracovávat starší transakční bloky, což znamená, že malleabilita je stále hrozbou.
- Později se zjistilo, že SegWit by negoval mechanismus ASICBOOST společnosti Bitmain; exploit používaný k výraznému zvýšení efektivity těžebních zařízení.
Přibližně 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 upevnění jeho implementace by muselo více než 95 % všech těžařů Bitcoinu projevit podporu pro SegWit během prvních dvou týdnů jeho zahájení – což byla vzhledem k tehdejším okolnostem velká překážka.
Soft fork aktivovaný uživateli
Netřeba dodávat, že velké těžební firmy jako Bitmain byly stále nespokojené s navrhovanými změnami a odmítly podpořit aktivaci SegWitu.
Na začátku roku 2017 anonymní vývojář jménem „Shaolinfry“ vznesl možnost, že by uzly Bitcoinu vynutily soft fork v online příspěvku na bitcoin-dev.
Soft fork aktivovaný uživateli nebyl nikdy předtím v síti Bitcoin vyzkoušen, ale umožnil by vývojářům prosadit SegWit s přibližně 51% podporou 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 rozdělení řetězce.
Ti, kteří byli proti SegWitu, navrhli místo toho jiný upgrade SegWit 2X hard fork. Ten by implementoval SegWit a zvýšil velikost bloku Bitcoinu na 2MB.
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 & 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 na spuštění SegWitu v létě a na zvýšení velikosti bloku Bitcoinu na 2MB do listopadu.
Před listopadem Shaolinfry vypracoval dva Bitcoin Improvement Proposals (BIPs); BIP148 a BIP149. První z nich představoval rychlé a pevné řešení; signalizujte podporu pro SegWit bloky, jinak uzly vaše bloky odmítnou. Druhý poskytl těžařům delší časový horizont pro zapojení, stanovující termín aktivace na červenec následujícího roku.
Jak se datum blížilo, inženýr Bitmain Warranty, James Hillard, navrhl nový BIP; BIP91. Jeho řešení se snažilo učinit SegWit 2X i BIP148 vzájemně kompatibilními. Proč riskovat rozdělení ř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á těžební podpora upevnila aktivaci SegWitu. Druhá fáze New York Agreement však nezískala stejnou podporu.
Neschopnost zvýšit velikost bloku Bitcoinu na 2MB vyústila ve vznik Bitcoin Cash (BCH) – nového forkovaného projektu z bitcoinového blockchainu.
Význam Dne nezávislosti Bitcoinu
Zavedení SegWitu a rozhodnutí komunity odmítnout zvýšení velikosti bloku představovalo mezník pro širší bitcoinovou komunitu.
SegWit ukázal důležitost konsensu, pokud jde o změny bitcoinového blockchainu, a také 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, iterovala a pokračovala v dlouhém procesu dosahování konsensu 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é krypto cestě a koupit Bitcoin?
Podívejte se na našeho průvodce v Kraken Learn Center pro více informací o Jak koupit Bitcoin (BTC) a zaregistrujte se u Kraken ještě dnes.