Segregated Witness – Část třetí

první a druhé části našeho miniseriálu o SegWitu jsme si řekli, jak tento upgrade funguje a co dělá. V posledním díle se dozvíte, co znamená implementace Segregated Witness z hlediska diskuse o velikosti bloku v blockchainu.

O čemže je ta diskuse nad velikostí bloku?

Abychom rozuměli, co SegWit pro tuto diskusi znamená, zrekapitulujme si nejdříve, o co v ní vlastně jde. Nepůjde o analýzu různých argumentů, jen jejich vysvětlení. Znáte-li tyto argumenty, klidně si přeskočte na další sekci.

V podstatě lze říci, že v této diskusi jde o kompromis mezi propustností sítě a decentralizací – plus nějaké ty ekonomické aspekty. Současná velikost bloku (1MB) dovoluje síti zpracovat až teoretických 7 transakcí za sekundu – mluvíme o single-sig transakcích – vícepodpisové transakce zabírají v bloku více místa a tudíž při konstantní rychlosti 1 vytěžený blok za cca 10 minut snižují propustnost. Zastánci zvětšení bloků to považují za nedostatečné (nyní je běžná rychlost kolem 3 transakcí za sekundu). Často pak citují argument, že síť VISA je teoreticky schopná zpracovat až 56000 transakcí za sekundu.

Ti samí zastánci dále argumentují, že současný limit velikosti bloku může velmi brzy (v řádu týdnů/měsíců!) znamenat zadření sítě, zvýšení poplatků za transakce, nebo odklon uživatelů k jiným kryptoměnám, nebo dokonce k jiným peněžním službám. Když se totiž nashromáždí nadměrné množství transakcí v mempoolu, těžaři si budou vybírat jen ty s nejvyšším poplatkem.

Na druhé straně diskuse stojí „decentralisté“, kteří se bojí, že příliš velké zvýšení velikosti bloku by mohlo vést k přílišné centralizaci Bitcoinu na úrovni jeho protokolu. Za prvé déle trvá si mezi uzly přeposlat větší bloky a také déle trvá tyto bloky ověřit v uzlu, což celkově zvyšuje dobu potřebnou ke schválení transakce. Toto vyhovuje těžařům (hlavně poolům), které nachází více bloků (Antpool, Slushpool, BitFury…) a mají tak náskok. Decentralisté se bojí, že by to mohlo znamenat centralizaci těžby mezi několik velkých poolů.

Větší bloky by též znamenaly větší náklady na běh plnohodnotných uzlů sítě (tj. těch s kompletním blockchainem), protože by to znamenalo potřebu rychlejšího připojení, větší výpočetní výkon a také více úložného prostoru. To komplikuje používání BTC důvěryhodným způsobem, kdy uživatelé validují transakce ve shodě s pravidly, ke kterým se sami zavázali. Namísto toho jsou uživatelé motivováni, aby věřili jiným, že blok ověřili podle pravidel (jak bylo popsáno v předchozím článku na příkladu neplnohodnotné peněženky). To je další centralizační síla, se kterou je nutné počítat.

Většina decentralistů také věří v limit velikosti proto, že z ekonomického hlediska se tak bloky stávají vzácným zbožím. To je nutné, aby se zamezilo ekonomickému problému „Tragédie obecní pastviny“, kdy těžaři skončí ve spirále klesajících poplatků, kterými se snaží překonat konkurenci. Jsou-li transakce téměř zdarma, nebudou těžaři schopni vydělat dostatek peněz, aby mohli dále zajišťovat chod sítě – poplatek za nalezení bloku je v tomto ohledu nedostačující.

Někteří zastánci větších bloků si zase myslí, že poplatky se budou přirozeně vyvíjet samy bez jakéhokoli zásahu zvenčí. Více transakcí v bloku totiž bude znamenat více poplatků, které tak mohou být nižší, aby těžař dostal za blok na poplatcích stejnou sumu. Zároveň to ale povede k většímu množství sirotčích bloků (když dva těžaři vyřeší blok ve stejný čas, ale uznán je jen jeden, tudíž z druhého je slepé rameno blockchainu). Decentralisté zase argumentují, že toto nastavení opět povede k centralizaci těžby do velkých poolů, což na druhou stranu zamezí vzniku sirotčích bloků – riziko jejich vzniku je tím větší, čím více těžařů na síti je.

Podle decentralistů mohou všechny tyto centralizační tendence vést k tomu, že dojde k regulaci Bitcoinu na úrovni jeho protokolu. Tato regulace pak udělá medvědí službu odolnosti BTC vůči cenzuře a důsledky něčeho takového si asi každý dokáže představit.

I když decentralisté uznávají, že menší velikost bloku vede k nižší propustnosti sítě, obvykle dodávaji, že budoucnost BTC vidí v nadstavbových vrstvách typu Lightning Network, platebních kanálů a dalších.

Zastáncům zvětšení se většinou podobné návrhy zamlouvají též, ale nikoli jako řešení škálovatelnosti. Obvykle zastávají názor, že Bitcoin by měl být v první řadě škálovatelný na úrovni blockchainu, nikoli na úrovni jeho nadstaveb.

Co znamená Segregated Witness pro škálovatelnost Bitcoinu?

Jak jsme si v předchozím článku ukázali, ovlivňuje SegWit škálovatelnost Bitcoinu několika způsoby. Řeší „transaction malleability“ a umožňuje další škálovací úrovně, díky kterým síť může běžet rychleji a lépe. Přidává též „fraud proofs“, ověřování transakcí, které zvyšuje bezpečnost neplnohodnotných uzlů. Díky SegWitu je také možné se zbavit starších podpisů, což sníží nároky na diskovou kapacitu a náklady na běh uzlu. Další novinkou jsou verzovací bajty, které v budoucnu umožní zlepšit škálovatelnost dosud neznámým (ještě nevynalezeným) způsobem.

A samozřejmě, co se přímo týká velikosti bloku, SegWit umožní efektivní zvýšení velikosti bez toho, aby došlo k narušení existujících pravidel a limitu velikosti bloku 1MB. To zajistí i zpětnou kompatibilitu a zamezí nutnosti hard forku. Abychom byli přesní – Wuilleho návrh by dovolil velikost bloku s reálnými transakcemi do výše cca 2MB, nebo 4 MB v případě přidání falešných transakcí těžařem, které by měly za úkol maximalizovat velikost bloku.

To ale bohužel znamená, že většina zlepšení v SegWitu v podstatě příliš neřeší diskusi o velikosti bloku. Zamezení „transaction malleability“ je skvělá zpráva, ale zastánci větších bloků neberou Lightning Network jako řešení škálovatelnosti. „Fraud proofs“ jsou užitečné, ale nedělají z neplnohodnotných uzlů plnohodnotné. Zbavit se starých podpisů rozhodně pomůže, ale jádroví vývojáři pracovali na podobném řešení již před představením Segregated Witness. A verzovací bajty mohou v budoucnu přinést velké plusy, ale v současnosti ještě pramálo představitelné.

Segregated Witness a limit velikosti bloku

Otázkou tedy je, jestli Wuilleho navrhované řešení uspokojí jak decentralisty, tak progresivce. Nebo jinak, jestli jsou 2MB dostatečným řešením pro progresivce, protože to je maximální limit skutečných transakcí, který SegWit dovoluje. A zda 4MB maximální limit je dostatečně konzervativní pro decentralisty, protože velcí těžaři se díky nim mohou snažit přehrát svoje malé konkurenty.

Jedna zajímavá věc na SegWitu je, že se jedná o opt-in řešení – tzn., že je na rozhodnutí každého jednotlivého uzlu, jestli svůj software upgraduje na SegWit, nebo ne. Jak jsme si v minulém článku ukázali, SegWit je zpětně kompatibilní, takže rozhodnutí neupgradovat SW je možné. Uživatelé, kteří se rozhodnou přejít na SegWit pak budou mít drobnou „slevu“ na nákladech, protože efektivně využívají méně drahocenného místa pro bloky. A ti, kteří na novou verzi nepřejdou kvůli zvýšeným nákladům na větší prostor, přejít vůbec nemusí. Tímto způsobem se vyřeší alespoň jedna námitka decentralistů – zvýšené náklady na fungování uzlu.

Další námitka decentralistů – zvýšená doba průchodnosti sítí – je trochu komplikovanější. Ale Wuille – sám decentralista – si nemyslí, že větší velikost bloku bude způsobovat nějaké problémy. Vzhledem k tomu, jak uzly v SegWitu validují data je dodatečný čas k tomu potřebný celkem zanedbatelný. Naproti tomu čas průchodu sítí se může trošku zvýšit, ale Wuilleho simulace s 4MB bloky ukazuje, že síť si s nimi při současném nastavení poradí (i když jen tak tak).

I když mají výhrady, dost decentralistů Segregated Witness podporuje jako důležitou součást plánu na zvýšení škálovatelnosti. Mezi podporovateli je například jádrový vývojář Gregory Maxwell. Stejně jako konkurenční návrh jádrového vývojáře Jeffa Garzika BIP102 (BIP = Bitcoin Improvement Proposal – návrh na vylepšení zdrojového kódu Bitcoinu), může i Wuilleho návrh koupit trochu času, než bude nalezeno dlouhodobé konsenzuální řešení přijatelné pro většinu účastníků. Nedojde tím k žádnému porušení nastavených pravidel.

Decentralisté chtějí tento vymodlený čas využít k práci na dlouhodobém řešení, včetně nastavení politiky lépe regulující velikost bloku (například flexcaps), přidání dalších škálovacích vrstev a práci na dalších optimalizacích.

Většina zastánců progresivního řešení nemá zvýšení velikosti bloku na 2MB za dostatečné. Pro srovnání, návrh (bývalého) jádrového vývojáře Gavina Andresena BIP101 začíná zvětšením maximální velikosti bloku na 8MB a má se zvětšovat každý druhý rok na dvojnásobek, až po deseti letech dosáhne svého maxima 8GB. Jeho předchozí návrh měl zvýšit velikost bloku jednorázově na 20MB.

Pesimisté mezi progresivci odhadují, že navíc může trvat až jeden rok, než SegWit začne fungovat jako přetlakový ventil v případě naplnění bloků. Kvůli tomu někteří developeři, kteří se řadí spíše k progresivcům, preferují celosíťové řešení, které zvýší maximální velikost bloku ještě před zavedením Segregated Witness.

A to nás přivádí k hlavnímu problému…

O vidličkách, těch tvrdých i těch měkkých

Jedním z největších pozitiv Wuilleho návrhu Segregated Witness je, že jej lze implementovat bez toho, aby byla porušena již platná konsenzuální pravidla. Tím pádem stačí, aby ho implementovali pouze těžaři. Toto řešení se nazývá soft fork.

Opačná situace se nazývá hard fork. Hard fork změní existující pravidla a všechny uzly sítě, včetně (ne)plnohodnotných peněženek, musí tuto změnu implementovat. Pokud tak neučiní, budou se nacházet na vedlejší větvi blockchainu, která je plánovitě určená k zániku. Hard fork totiž vede ke vzniku dvou paralelních Bitcoinů, jeden jede podle starých pravidel a dost pravděpodobně zanikne, a druhý jede podle nových pravidel, kde jsou vyřešeny staré problémy. Je jen otázkou času, jak dlouho bude tato situace trvat.

Prosté zvýšení velikosti bloku (tj. řešení natvrdo) může být zavedeno jen pomocí hard forku. V tomto případě je tedy životně nutné, aby se dohodl kompromis, který bude vyhovovat všem zúčastněným, nebo alespoň velké většině.

Nedojde-li ke konsenzu, může se část uživatelů dohodnout, že zkusí některé řešení implementovat násilně (51% útok) a budou doufat, že nakonec se připojí další uzly, čímž se jejich řešení stane všeobecně akceptovaným. Pokud se ovšem ostatní uživatelé nepřipojí, dojde k nepřátelskému rozdvojení měny. Před časem se o takovéto řešení pokusil vývojář R3CEV Mike Hearn spolu s Gavinem Andresenem s řešením zvaným Bitcoin XT, ale nedosáhli dostatečné podpory v síti.

Někteří vývojáři – často, nikoli však výhradně ti, co podporují zvýšení kapacity bloku – zastávají názor, že by se i Segregated Witness měl implementovat přes hard fork. Oproti soft forku to má několik výhod. Za prvé nutí všechny uzly na síti pracovat se stejnými pravidly, nebo opustit hlavní řetězec. Tím pádem budou všechny plnohodnotné uzly postupovat podle stejných pravidel a tudíž validovat i transakce, které nezahrnují jejich Bitcoiny.

Hard fork by také byl čistším řešením. Wuilleho SegWit například užívá chytrý trik (Segregated Witness Merkle Tree popsaný v druhém dílu), aby neporušoval existující konsenzuální pravidla. Používá k tomu části BTC protokolu – coinbase input – způsobem, který nebyl zamýšlen. Někteří si myslí, že zvýšená komplexita protokolu by tak mohla v budoucnu přinést potíže.

A za třetí, díky této chytré, ale netypické obezličce bude těžší psát software kompatibilní s bitcoinovým protokolem – například software BTC peněženek.

Ostatní vývojáři, často ti, kteří vyznávají konzervativnější přístup k velikosti bloku, věří, že k hard forku by mělo docházet jen naprosto výjimečně, jako k poslední možnosti. Největší riziko hard forku – rozdělení blockchainu – je něco, čemu se chtějí vyhnout, je-li to alespoň trochu možné. A pokud se už hard fork musí zavést, ať už z jakéhokoli důvodu, měl by být oznámen a zorganizován ve velkém předstihu, aby měl každý uživatel čas na přípravu implementace tohoto řešení.

Soft fork může na druhou stranu být zaveden okamžitě, jakmile je zdrojový kód hotový, odzkoušený a těžaři s ním souhlasí. Zbytek bitcoinové sítě se může přidat až později, pokud o to bude vůbec stát.

Takže co dál?

Tento problém se nakonec neredukuje na rozhodnutí, zda je hard fork dobrý, či špatný – ať už jde o Segregated Witness, nebo zvětšení velikosti bloku natvrdo administrativně. Ani Bitcoin, ani jeho vývojáři nemůžou nutit uživatele, aby se začali řídit novou sadou pravidel, která nahradí ta stará.

Skutečná otázka je, zda potenciální hard fork může získat dostatečnou podporu mezi uživateli. A proto, že konsenzus je poněkud abstraktní slovo, někteří budou argumentovat, že ho již bylo dosaženo. Nejpravděpodobnější cesta vpřed se tedy zdá být komplexní Maxwellův plán rozvoje. To je totiž jediný plán, který nevyžaduje okamžitý hard fork a navíc se líbí velké části vývojářské komunity. Tím pádem stačí, aby sehnal podporu nadpolovičního výkonu celé bitcoinové sítě. Není ovšem vyloučeno, že se najde další návrh, který bude taktéž široce přijímán a posuzován.

Příště se ještě podíváme na konkurenční návrh Bitcoin Unlimited…

Související

PŘIDEJTE SE DO DISKUZE