SegWit (Segregated Witness): Řešení škálování bitcoinu

SegWit (Segregated Witness): Řešení škálování bitcoinu

Marek Matoušek 23 září, 2023
9 min čtení

Segregovaný svědek (SegWit ) byl zaveden v roce 2017, kdy v bitcoinové komunitě vrcholila válka o velikost bloku.

Byli lidé, kteří prosazovali zvýšení limitu velikosti bloku nad 1 MB, který původně stanovil jeho tvůrce Satoshi Nakamoto. Argumentem bylo, že s dalším rozšiřováním bitcoinu jej bude používat stále více lidí a velikost bloku 1 MB bude považována za omezení, protože dokáže zpracovat pouze omezený počet transakcí za sekundu.

Toto omezení vedlo ke slavné “debatě o velikosti bloku”, kdy různé části komunity prosazovaly různá řešení. Někteří chtěli zvětšit velikost bloku, zatímco jiní dávali přednost řešením mimo řetězec nebo na sekundární vrstvě.

Neshody ohledně přístupu ke škálování Bitcoinu vedly k několika forkům v kryptografické sféře. V důsledku neshody v této otázce vznikla další kryptoměna Bitcoin Cash (BCH), která začala s limitem velikosti bloku 8 MB, který byl později zvýšen.

V tomto článku nebudeme zabíhat do přílišných podrobností o válce o velikost bloku, ale pokud vás to zajímá, můžete si přečíst knihu “The Block Size War” od Jonathana Biera.

Implementace SegWit do sítě Bitcoin

SegWit byl nejprve představen jako řešení problému malleability transakcí a později jako metoda, jak zvýšit efektivní velikost bloku, aniž by bylo nutné provést hard fork. Vývojář Bitcoinu Pieter Wuille ji poprvé představil na konferenci Scaling Bitcoin v prosinci 2015.

Implementace v jádře bitcoinu

Vývojáři integrovali kód SegWit do kódové základny jádra Bitcoinu. Vzhledem k důležitosti této změny prošel kód rozsáhlou revizí a testováním.

Byl implementován do Bitcoinu jako soft fork. Soft fork je zpětně kompatibilní způsob upgradu blockchainu. Znamená to, že neaktualizované uzly se stále mohou účastnit sítě. Často se na ně odkazuje jako na “Legacy nodes”.

Aktivace těžařů prostřednictvím BIP 9

SegWit používal pro nasazení bitů verze BIP 9. Znamenalo to, že SegWit se aktivuje, jakmile 95 % těžařů signalizuje podporu v rámci jednoho období úpravy obtížnosti (přibližně dva týdny). Získání dostatečné podpory těžařů však vyžadovalo čas.

Upgrade sítě

Po aktivaci začaly uzly Bitcoinu v celé síti rozpoznávat a ověřovat transakce SegWit. Peněženky a další poskytovatelé služeb pak integrovali podporu transakcí SegWit, což byl proces, který pokračoval v následujících měsících a letech.

Průběžné přijímání

Po aktivaci začal širší ekosystém (peněženky, burzy, poskytovatelé platebních služeb) přijímat a podporovat SegWit, což byl postupný proces.

Postupem času využívalo SegWit stále větší procento bitcoinových transakcí, které těžily z jeho snížené struktury poplatků.

Co je Segregated Witness (SegWit)?

Před zavedením SegWitexistoval v blockchainové síti bitcoinu (a dalších kryptoměn) problém s možností zfalšování transakcí.

Ve své podstatě se malleabilita transakcí týká možnosti, že někdo změní jedinečný identifikátor transakce (tzv. ID transakce nebo TXID) transakce před jejím potvrzením, aniž by se změnily skutečné náležitosti transakce (tj. odesílatel, příjemce a částka).

Po aktivaci SegWit byla zavedena změna formátu transakcí bitcoinu, která nejenže vyřešila problém s falšovatelností transakcí, ale také umožnila efektivně zvětšit velikost bloku, aniž by se zvýšil limit bloků.

Jak Segregated Witness (SegWit) problémy vyřešil

bitcoin transactions solution

Před zavedením SegWit se v původním protokolu Bitcoinu TXID vypočítával hashováním celé transakce včetně údajů o svědcích (podpisů). Protože podpisy mohly být mírně pozměněny, aniž by se změnil skutečný význam transakce, mohla TXID před potvrzením transakce změnit třetí strana.

SegWit znamená Segregated Witness a “Witness” znamená podpis. Z názvu tedy můžeme získat docela slušnou představu o tom, co tento upgrade dělá.

“Odstraňuje” podpis z transakce. Toto oddělení znamená, že údaje o svědkovi (podpis) nejsou zahrnuty při výpočtu ID transakce, čímž se formát transakce stává flexibilnějším a řeší se otázka zkomolitelnosti transakce.

Více místa v blocích

Díky oddělení svědeckých dat je v každém bloku efektivně více místa pro transakce. Nejedná se sice o přímé zvětšení velikosti bloku, ale o úpravu způsobu výpočtu velikosti bloku. Tato změna, označovaná jako “váha bloku”, umožnila, aby se do bloku vešlo více transakcí, což zase pomáhá mírně zmírnit obavy ze škálovatelnosti.

Zavedení konceptu váhy bloku

Se systémem SegWit byl poněkud nově definován pojem velikosti bloku. Místo jednoduché velikosti bloku 1 MB zavedl Bitcoin systém “váhy bloku”. Tento systém dává různým částem transakce různou “váhu”.

  • Hlavní část transakce (bez údajů svědků) má váhu 1 bajt na bajt.
  • Svědecké údaje (např. podpisy) mají váhu 1/4 bajtu na bajt.

Při tomto systému vážení může mít tedy blok maximální váhu 4 miliony jednotek. To ve skutečnosti znamená, že v závislosti na složení transakcí mohou být bloky větší než 1 MB až do teoretické hranice 4 MB, pokud by byly složeny výhradně ze svědeckých dat (což je nepravděpodobný extrémní scénář). Ve skutečnosti se bloky s transakcemi SegWit Tx často pohybují o něco málo nad 1 MB, přičemž 2 MB jsou praktičtější horní hranicí pro průměrnou skladbu transakcí.

Zvýšená bezpečnost

Kromě svého primárního účelu SegWit také zvýšil bezpečnost sítě Bitcoin. Upgrade změnil způsob podepisování dat, čímž snížil některá rizika spojená s podepisováním transakcí.

Přestože nabízel různé výhody, jeho přijetí bylo postupné.

Ne všichni poskytovatelé služeb, peněženky a burzy okamžitě podporovali transakce SegWit. Postupem času, jak jej přijímalo stále více subjektů, začala síť plně využívat jeho výhod. Při sledování údajů o transakcích lze s postupem času pozorovat rostoucí procento transakcí v síti využívajících Segregovaný svit.

Vliv na transakce v Bitcoinu po zavedení SegWit

Oddělením podpisu (The Witness) umožnil, aby se do bloku vešlo více transakcí. Tím se snížila konkurence o místo v bloku, což vedlo ke snížení transakčních poplatků.

Díky většímu prostoru v blocích mohly být transakce potvrzovány rychleji, zejména v obdobích s vysokým provozem.

Po zavedení SegWit začaly získávat popularitu nové formáty adres, jako je bech32.

Zatímco adresy začínající na “1” jsou starší adresy Ty, které začínají na “bc1”, jsou nativní pro SegWit a umožňují plně využívat výhod upgradu.

Příklady: “BitCit” je kód, který se používá v systémech s kódem “B”.

Bech32: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq

Legacy: 157fRrqAKrDyGHr1Bx3yDxeMv8Rh45aUet

Jak SegWit připravil půdu pro síť Lightning

Lightning Network (LN) je řešení druhé vrstvy pro Bitcoin, které usnadnit rychlejší a škálovatelnější transakce.

Lightning Network se spoléhá na řetězové závazkové transakce.

Pokud by záškodník dokázal změnit TXID dřívější transakce v řetězci, způsobil by neplatnost následných závazkových transakcí, protože odkazují na TXID předchozí transakce.

To by destabilizovalo a potenciálně ohrozilo bezpečnost kanálů LN.

Úloha systému SegWit:

SegWit vyřešil problém se zfalšovatelností transakcí tím, že z části dat transakce, která je hashována za účelem vytvoření TXID, odstranil podpisová data (data svědka).

Díky tomu zůstane TXID stejné i v případě, že dojde ke změně svědeckých dat. Po vyřešení tohoto problému s falšovatelností byl vytvořen základ pro spolehlivé a bezpečné kanály LN.

Efektivita blokového prostoru

Ačkoli to není pro LN nezbytně nutné, SegWit také zefektivnil využití blokového prostoru tím, že oddělil svědecká data.

To nepřímo pomáhá LN, protože otevírání a zavírání kanálů LN zahrnuje transakce v řetězci. Efektivnější využití blokového prostoru znamená, že tyto transakce jsou ekonomičtější, což dále motivuje k používání LN.

Větší flexibilita inteligentních smluv

Změny v systému skriptování Bitcoinu provedené systémem SegWit umožňují větší flexibilitu. Z toho těží i složitější chytré kontrakty a řešení mimo řetězec, jako je LN.

Souhrnně lze říci, že teoretické základy Lightning Network by sice mohly být koncipovány i bez SegWitu, ale díky jeho řešení konkrétních technických problémů bylo praktické a bezpečné nasazení LN proveditelné.

Závěr:

Segregovaný svědek, klíčový upgrade protokolu Bitcoinu, řešil problematiku záludností transakcí a zároveň optimalizoval prostor pro bloky. Jeho implementace připravila půdu pro lepší škálovatelnost. Snížením poplatků připravila půdu pro pokročilá řešení, jako je Lightning Network. SegWit je důkazem přizpůsobivosti Bitcoinu a ukazuje závazek sítě k neustálému vývoji v reakci na její výzvy.

Pokud se chcete ponořit hlouběji a dozvědět se o Bitcoinu více, můžete se podívat do našeho Bitcoin Hubu, kde najdete další užitečné články!

NEJČASTĚJŠÍ DOTAZY:

1. Co je to Segregated Witness (SegWit)? SegWit je aktualizace protokolu, která mění způsob ukládání dat v rámci transakcí Bitcoinu, zvyšuje kapacitu blockchainu a řeší problém s poddajností transakcí.

2. Proč byl SegWit zaveden? SegWit byl zaveden s cílem zlepšit škálovatelnost sítě Bitcoin a umožnit jí zpracovávat více transakcí, aniž by se výrazně zvětšila velikost bloku. Vyřešil také problém s poddajností transakcí.

3. Jak SegWit funguje? SegWit odděluje data svědků (podpisy) od dat transakcí. Tím se zmenšuje velikost transakcí, což umožňuje, aby se do bloku vešlo více transakcí.

4. Co je to poddajnost transakcí? Malovatelnost transakcí označuje možnost změnit jedinečné ID transakce, aniž by se změnil její obsah. SegWit to řeší tak, že zajišťuje, aby podpisová data neovlivňovala ID transakce.

5. Jak SegWit ovlivňuje poplatky za transakce? Optimalizací prostoru v blocích může SegWit vést ke snížení transakčních poplatků, protože se do bloku vejde více transakcí.

6. Byl SegWit tvrdý nebo měkký fork? SegWit byl představen jako soft fork, což znamená, že byl zpětně kompatibilní s uzly, které neprovedly upgrade.

7. Má SegWit vliv na bezpečnost Bitcoinu? Ne, SegWit zachovává bezpečnost sítě Bitcoin a zároveň optimalizuje její transakční kapacitu.

8. Jak SegWit připravil půdu pro Lightning Network? Díky vyřešení problému s poddajností transakcí umožnil SegWit vývoj řešení druhé vrstvy, jako je Lightning Network.

9. Podporují SegWit všechny bitcoinové peněženky? I když mnoho moderních peněženek podporuje transakce SegWit, je vždy dobré se informovat u konkrétního poskytovatele peněženky.

10. Jak zjistím, zda bitcoinová adresa podporuje SegWit? Adresy s podporou SegWit obvykle začínají znakem “3” (formát P2SH) nebo “bc1” (formát bech32). Ne všechny adresy začínající na “3” jsou však adresy SegWit.

Marek Matoušek

Marek Matoušek je šéfredaktorem portálu ecoinomy, který je jedním z předních českých zdrojů informací o bitcoinu a blockchain technologii. Zasloužil se o vytvoření některých z nejvýznamnějších článků na této stránce. První informace o bitcoinu a blockchain technologii získal Marek už v roce 2016. Revoluční potenciál těchto technologií v něm probudil vášeň, která přispěla k jeho profesnímu zájmu o digitální měny a technologie stojící za nimi. Marek má rád knihy zaměřené na technologie budoucnosti, přičemž zvlášť ho fascinují ty, které se zabývají dopady nových technologií na celou společnost.