Bitcoin Unlimited – část první

Bitcoin Unlimited (BU), jeden z návrhů na zlepšení softwarového klienta Bitcoin Core, byl poprvé představen na sklonku roku 2015, ale značnou pozornost si získal v posledních měsících. Tento projekt získal velkou podporu mezi pooly těžařů, včetně ViaBTC, GBMiners a BTC.TOP. Upgrade plnohodnotných uzlů na tento nový klient zřejmě probíhá stále častěji.

Základní myšlenkou Bitcoin Unlimited, která byla předložena prostřednictvím návrhu “Bitcoin Unlimited Improvement Proposal 001” (BUIP001), je předat kontrolu nad velikostí bloku uživatelům a těžařům. Neboli přesněji řečeno umožnit průhlednou a snadnou kontrolu velikosti bloku prostřednictvím konsenzu na síti. A takto by to mělo vypadat:

Návrh

Bitcoinový protokol, vynucovaný ekonomicky aktivními uzly, v současnosti zahrnuje maximální velikost bloku ve výši 1MB. Pokud by těžař vytvořil blok větší, byl by považován za neplatný a nebyl by zahrnut do blockchainu. Těžař by tak zbytečně plýtval svými zdroji na něco, za co stejně nedostane žádnou odměnu v podobě Bitcoinů.

BUIP001 – navržený hlavním vývojářem Bitcoin Unlimited Andrewem Stonem – zcela abstrahuje od maximální velikosti bloku ve výši 1MB a nahrazuje ho třemi různými volitelnými nastaveními. První je určeno jen pro těžaře. Druhé a třetí si mohou přizpůsobovat všechny uzly sítě, a to jak uživatelé, tak těžaři.

Tato nastavení jsou pak vysílána do bitcoinové sítě. Běžní uživatelé vysílají své nastavení ostatním uzlům a těžaři zahrnují své nastavení do vytěžených bloků.

Nastavení 1: Maximum Generation Size, neboli „MG“

Maximální generovaná velikost je první ze tří možností. Je určena jen pro těžaře a je poměrně jednoduchá – těžaři si mohou sami nastavit maximální velikost bloků, které těží. „Tovární“ nastavení této možnosti je 1MB, takže se neodchyluje od současného nastavení BTC protokolu. Chce-li ovšem těžař začít těžit například 2MB bloky, je to stejně jednoduché, jako přepnutí spínače v uživatelském prostředí BU. Chce-li těžař těžit maximálně 8MB bloky, použije stejný postup. (Jediným omezením je velikost bloku 160MB a také jsou zde některá omezení plynoucí ze struktury dat a výpočetní síly těžebního stroje).

MG dává těžaři plnou kontrolu nad velikostí vytěžených bloků (připomeňme, že více transakcí v bloku znamená více na poplatcích, ale když se to přepískne, tak poplatky za jednotlivé transakce klesnou – je třeba najít rozumnou hranici). Jak ale bylo vysvětleno výše, v současnosti by síť odmítla bloky větší, než 1MB – pokud tedy těžař již dnes používá klienta BU, pak musí mít maximální limit nastavený na defaultní hodnotě 1MB. A tím se dostáváme ke druhému volitelnému nastavení:

Nastavení 2: Excessive block size, neboli „EB“

Nadměrná velikost bloku, obvykle zkracovaná „EB“, určuje velikost bloku, kterou uzly a těžaři akceptují (tj. kterou považují ještě za platnou). Vytěží-li těžař 2MB blok, pak bude akceptován jen uživateli a těžaři, kteří si nastavili EB na minimálně 2MB.

EB je defaultně nastavena na 16MB a její velikost si v nastavení mohou změnit jak těžaři, tak uživatelé. Pro těžaře je to ale velmi důležité nastavení, protože mohou přidávat své bloky jen k takovým blokům, které akceptují. To znamená, že těžař, který má nastaven limit v současné výši 1MB odmítne 2MB bloky a bude dál připojovat své vytěžené bloky k předchozím 1 MB blokům. Těžař, který si nastaví EB limit na 2MB, může rovnou připojovat další bloky k tomuto dvoumegabajtovému, nezávisle na tom, co udělá zbytek sítě.

To má ale samozřejmě háček: Nastaví-li menšina těžařů EB na jeden megabajt a většina si EB nastaví na řekněme dva megabajty, bude tyto větší bloky menšina těžařů ignorovat a místo toho bude prodlužovat existující 1MB řetězec. Většina těžařů ale bude akceptovat dvoumegabajtové bloky a tak budou prodlužovat 2MB řetězec.

Různé skupiny těžařů mohou pak považovat za platné různé řetězce bloků a přidávat bloky jen ke „svému“ řetězci. Toto rozdvojení (fork) může technicky vzato fungovat donekonečna, aniž by se tyto dva řetězce kdy sloučily, čímž by se Bitcoin rozdělil na dva různé blockchainy a tím pádem na dvě různé měny.

Aby byl tento problém vyřešen, zahrnuje BU ještě třetí nastavitelnou možnost:

Nastavení 3: Excessive Acceptance Depth, neboli „AD“

Nadlimitní hloubka pro přijetí, neboli „AD“ v podstatě anuluje EB. Konkrétně AD určí počet konfirmací, které blok potřebuje, aby jej uzly a těžaři akceptovali, nehledě na jeho velikost. Předem nastavená hodnota je 4.

Řekněme tedy, že uzel nastaví svou EB na hodnotu dvou megabajtů a AD na 4 konfirmace. Pokud takový uzel obdrží třímegabajtový blok, pak ho bude ze začátku ignorovat, protože přesahuje jeho maximální EB ve výši 2MB. Pokud však většina těžařů blok zařadí a nebude ho ignorovat, tzn., že se na něj postupně nabalí další čtyři bloky v blockchainu, pak se dvoumegabajtový EB limit daného uzlu nebere v úvahu a uzel daný blok uzná zpětně, i když má velikost přesahující jeho nastavení EB.

Tímto způsobem by se různě nastavení těžaři a uzly sítě měli jednoho krásného dne sejít na jednom konkrétním platném řetězci, i když mají různě nastavené politiky EB a MG.

Je asi nutné též zmínit takzvanou „sticky gate“, neboli doslova lepkavou bránu. Ta znamená, že když je aktivována AD daného uzlu, bude tento uzel akceptovat následné bloky jakékoli velikosti po dobu cca 24 hodin (144 bloků). Toto nastavení zajistí, že těžaři, kteří mají aktivovanou AD, budou dál pokračovat v ukládání bloků do daného řetězce, i když jsou větší, než jejich nastavení MG připouští. Jinak by totiž začali zaostávat za zbytkem sítě, protože by museli vždy počkat na dostatečnou hloubku přijetí u každého jednotlivého bloku.

V dalším článku se podíváme podrobně na problémy s návrhem BUIP001.

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