Bitcoin Unlimited – část druhá

Ústřední myšlenkou návrhu BUIP001 – Bitcoin Unlimited Improvement Proposal 001 – je předání kontroly nad velikostí bloku uživatelům a těžařům. Respektive umožnit kontrolu velikosti bloku snadným a efektivním způsobem. Tato kontrola by však neměla být na úkor principů konsenzu v bitcoinovém protokolu.

S BU existuje množství scénářů, kdy uživatelé mohou skončit na rozdílných řetězcích – ať už dočasně, nebo trvale. Zde je (nikoli kompletní) přehled takových situací. Doporučujeme ovšem nejdříve si přečíst předchozí článek o tom, jak Bitcoin Unlimited vlastně funguje.

Co když všichni nepřejdou na Bitcoin Unlimited?

První případ je samozřejmě ten nejvíce do očí bijící. Je nepravděpodobné, že všichni uživatelé současných BTC klientů, jako Bitcoin Core, Libbitcoin, BTCD nebo Bcoin, přejdou na BUIP001. Jeden z důvodů je ten, že tým BU nedal tento návrh k posouzení do oficiálního procesu BIP (Bitcoin Improvement Proposal – návrh na vylepšení BTC protokolu).

Pokud nepřijme BUIP001 velká většina sítě, nemůže se blockchain přeměnit tím způsobem, který si tvůrci BU představují. Pokud by namísto toho většina těžařů (rozuměj většina výkonu sítě) zvýšila své MG a EB nad jeden megabajt, Bitcoin by se rozdělil na dvě různé měny, které by spolu nebyly kompatibilní, a existovaly by dva různé blockchainy. Fakticky by tedy došlo k hard forku, podobnému jako v případě oddělení Ethereum Classic od Etherea.

Jelikož by ovšem nebylo toto rozdělení řízené a předem avizované, následky by mohly být mnohem horší, než v případě Etherea.

Uživatelé vyznávající velikost bloku menší, než 1MB, by zaznamenali velké nepříjemnosti, co se týká výkonu, tedy hlavně ti malí. Mluvíme zde o mnohem pomalejších konfirmacích bloků, možná dokonce až tak, že by se blockchain stal nepoužitelným (přinejmenším dočasně). Pokud takové uzly budou chtít používat zároveň také blockchain Bitcoin Unlimited, mohou být vystaveni tzv. „replay attacks“, což je druh útoku, kdy se platná transakce z jednoho řetězce převede na druhý. Jelikož pak nebude možné rozlišit, ze kterého řetězce transakce vzešla, půjde replikovat i na druhém řetězci, a v podstatě tak dojde k dvojímu utrácení jedné mince, na dvou různých blockchainech.

Uživatelé BU ale také nebudou mít na růžích ustláno. Jejich konfirmace nebudou tak pomalé, jako v předchozím případě, protože budou mít oporu ve většinovém výkonu sítě. Zároveň ale nebudou mít jistotu, jestli jejich řetězec bude existovat i do budoucna. Pokud totiž 1MB blockchain předstihne co do délky BU blockchain (ultimativní „proof-of-work – hlasování na základě výpočetního výkonu), pak by se BU uzly automaticky vrátily na původní řetězec. V tom případě by se tedy zřekly celého předchozího BU řetězce (i kdyby byl dlouhý tisíc bloků) a z něj by se pak staly osiřelé bloky (orphan blocks). Všechny transakce na osiřelém řetězci by tak byly zapomenuty jako slepá ulička (i v současnosti se na blockchainu objevují osiřelé bloky) – mnoho lidí by tak ztratilo mnoho peněz.

Kdyby se skupině fanatických vyznavačů megabajtového limitu a spekulantům povedlo přesvědčit ostatní, že je tento scénař jen trochu uvěřitelný, dynamika sebenaplňujcího proroctví by představovala obrovskou hrozbu pro blockchain BU – nikdo by totiž nechtěl své peníze držet v měně, která může kdykoli bez náhrady přestat existovat!

Když všichni přejdou na Bitcoin Unlimited

Předpokládejme, že šlo vše jako po másle a všichni hladce přešli na BUIP001. Všechen software jak uživatelů, tak těžařů je hladce upgradován, nastaveny všechny možnosti, žádný problém nenastal. Ani v tomto scénáři však neexistuje technický důvod, proč by měli být všichni na stejné vlně – různí uživatelé mohou nastavit svoje uzly tak, že zůstanou mimo konsenzuální nastavení do konce svého života – ať už schválně, nebo z neznalosti.

Například malá část uzlů může nastavit své MG a EB na jeden megabajt a nastavit AD například na 10 000 000. Jinými slovy budou tyto uzly udržovat limit na velikost bloku 1 MB po dobu téměř dvou století, nezávisle na tom, na čem se kompromisně dohodl zbytek sítě. Zbytek sítě se dohodne dejme tomu na MG a EB v maximální výši 2MB. Jakmile jeden těžař vytěží dvoumegabajtový blok, (téměř celý) zbytek sítě na tom bude stavět a připojovat další bloky. Menšina těžařů ale bude tento řetězec prakticky navždy ignorovat, protože politika AD, která by „přehlasovala“ 1MB limit EB vejde v platnost až 10 milionů bloků po vytěžení tohoto většího bloku (tj. po cca 190 letech).

A navíc by platila stejná podmínka, jako v předchozím případě – bude-li mít zase jednou 1MB řetězec navrch, pak může i po uvedených dvou stoletích být BU blockchain označen za osiřelý. To jsme ale už poměrně v říši sci-fi…

Když všichni omezí AD na 4 konfirmace

Uživatelé BU se mohou velmi slušně shodovat na hlavním řetězci, pokud budou svoje nastavení AD udržovat relativně nízko. Defaultní nastavení je čtyři, jak jsme si již řekli. Uzel uzná za platný blok, který sice přesahuje jeho pravidla EB, ale jsou po něm připojeny další čtyři platné bloky. Ale i to je problém.

Předně i s nízkou defaultní hodnotou nastavení AD je každá transakce s méně než 5 konfirmacemi poměrně nebezpečná. Dejme tomu, že uživatelova peněženka ukazuje tři konfirmace. Tento uživatel ale nemůže vědět, jestli někde nebují alternativní blockchain s konkurenční transakcí (tj. problém dvojího utrácení), která již získala čtyři konfirmace. To se může kdykoli stát. Pokud tato konkurenční transakce dosáhne jako první pěti konfirmací (je uložena v pěti po sobě jdoucích blocích blockchainu), pak uživatelův blockchain osiří a jeho příchozí transakce se nekoná – a to navzdory tomu, že má již tři konfirmace. Osiřelé bloky existují již teď, takže je lepší čekat na více konfirmací – ale je jich 0-4 denně.

Kromě exotických (a hlavně drahých) typů zhoubných útoků na síť, můžou se dnes tři osiřelé bloky objevit opravdu jen velkou shodou náhod (naposledy 24.2.).

Bitcoin Unlimited však do problému přilévá trochu oleje tím, že osiřelé bloky už nemusí být tak ojedinělým jevem. Těžaři nejen soutěží o nejdelší platný řetězec, ale také hlasují skrz všechny řetězce o tom, jaká budou konsenzuální pravidla. Tento proces uvidí také potenciální útočníci a bude pro ně předvídatelný a snadno zneužitelný.

Další bezpečnostní problém s AD na nízkých úrovních je ten, že se tím v podstatě podrývá samotný účel BUIP001. BU měl předat kontrolu nad velikostí bloku do rukou těžařů a uživatelů, ale nízké nastavení AD povede k tomu, že když skupina těžařů sežene těsnou většinu výpočetní síly, mohou ovlivnit velikost bloku prostě tím, že vytěží několik velkých bloků za sebou, čímž dojde k aktivaci AD ostatních uživatelů a tyto velké bloky budou zbytkem sítě následně uznány za platné díky aktivaci „sticky gate“. Tím pádem je nastavení MG a EB pro všechny ostatní prostě jen placebo.

Je tu samozřejmě možnost nastavit si AD na vyšší hodnoty, ale to může potenciálně vést k tomu, že dojde k rozdělení blockchainu a ošklivým následkům. Nebo si uzly zvolí nízké AD, aby měly jistotu, že zůstanou na hlavním řetězci, a tím prakticky předají moc do rukou velkých těžařů a dojde k centralizaci sítě.

Za nepřátelských podmínek

Jsou-li podmínky nepřátelské, status BU se ještě zhorší. Pokud nechtějí všichni pro Bitcoin jen to nejlepší a chtějí, aby selhal, pak je bezpečnost BUIP001 ještě horší. A čím větší prostředky takový záškodník má, tím více si může zahrávat s mechanismem Bitcoin Unlimited.

Za prvé: signály vysílané jednotlivými uzly se dají poměrně snadno napodobit a změnit. Když má někdo přístup ke zdrojům, může vytvořit „falešné“ (ekonomicky zbytečné) uzly a bude-li jich dostatek, může v síti vytvořit dojem, že existuje konsenzus na větší velikosti bloku, než je tomu ve skutečnosti. Pokud těžaři na tyto signály zareagují, mohou rozdělit hlavní řetězec s daleko menší podporou uživatelů, než si myslí, že mají.

Navíc zlovolný těžař může síť rozdělit též. Může například sledovat nastavení EB dalších těžařů (což nelze zfalšovat tak jednoduše, jako uživatelský uzel) a pak těžit bloky, které svou velikostí zapadají přesně doprostřed toho, co ostatní těžaři akceptují. Pokud 50% těžařů akceptuje bloky do velikosti 2MB a zbytek bloky větší, pak by 2,01MB blok byl přijat polovinou sítě a druhou polovinou ne. Pokud budeme předpokládat defaultní nastavení AD (4), může se blockchain rozdělit až na jednu celou hodinu (jeden blok je vytěžen za cca 10 minut). Jak jsme si vysvětlili v předchozích odstavcích, byla by síť v takové situaci velmi nespolehlivá, protože by nakonec mohla „zvítězit“ kterákoli větev a všechny transakce uskutečněné na větvi druhé by byly navždy ztraceny. Zloduch vlastnící pouhých 0,7% výpočetního výkonu BTC sítě by mohl takovýto problém nastolit zhruba jednou za den! A pokud se drtivá většina těžařů neshodne na jednom konkrétním nastavení EB, tak zde bude toto nebezpečí vždy přítomné.

Navíc, pokud by se toto stalo, u poloviny těžařů by se díky tomu aktivovala jejich AD, čímž by se otevřela jejich „sticky gate“. A to by mohlo umožnit druhou vlnu útoků. Případný útočník by totiž měl dalších 24 hodin na to, aby těžil dokonce ještě větší bloky, které by polovina těžařů (původně akceptující bloky do 2MB) následujících 24 hodin automaticky přijala, zatímco druhá polovina ne, protože jejich AD nebyla aktivována. Tím by došlo k dalšímu rozdělení řetězce.

A v neposlední řadě – jakmile tato nová větev řetězce, vytvořená pomocí „sticky gate“, dosáhne AD limitu zbytku sítě, otevřou se „sticky gate“ všech ostatních a na 24 hodin tak zcela přestane existovat limit na velikost bloku. Útočník by pak mohl těžit bloky tak obrovské, že by mohly rozdrobit celý řetězec na hromadu souběžných, protože ne všechny uzly sítě by si s nimi poradily z důvodů rychlosti připojení, reakčního času, nebo dalších omezení těžebních strojů.

Vznikající shoda (Emergent consensus)

Ačkoli Bitcoin Unlimited nabízí větší autonomii uživatelům, nezaručuje zároveň, že tito uživatelé dosáhnou konvergence, tj. sbíhání řetězců do jednoho. To ale není žádná novinka. Okrajově se tomuto problému věnují i časté otázky na stránkách Bitcoin Unlimited. Tvůrci BU prostě očekávají, že se uživatelé shodnou na nastavení, které povede k jedinému konsenzuálnímu řetězci bloků. To vysvětluje základní filozofie BU: Emergent consensus, neboli vznikající shoda.

Ta není čistě technickým mechanismem, který by byl naprogramován v protokolu, ale přesvědčením, že uživatelé budou mít dostatečné ekonomické důvody k tomu, aby našli shodu na jednom jediném blockchainu, navzdory tomu, že jejich software toto nezabezpečí automaticky. Jak ale bylo popsáno výše, tento přístup nemůže zamezit nepřátelským útokům na síť.

V dalším článku se zaměříme na filosofii Emergent consensus

Související

A máme zde další z nekonečné řady článků o škálovacích řešeních v oblasti Bitcoinu....

PŘIDEJTE SE DO DISKUZE