Vysvětlení hard forků a soft forků
Domů
Články
Vysvětlení hard forků a soft forků

Vysvětlení hard forků a soft forků

Pokročilí
Zveřejněno Nov 29, 2018Aktualizováno Feb 9, 2023
8m

Úvod

Když vám na chytrém telefonu přijde oznámení, že máte aktualizovat mobilní bankovnictví, nejspíš se nebudete vůbec rozmýšlet. Možná vám ho dokonce aktualizuje telefon automaticky, aniž byste si toho všimli. Je to nezbytný proces. Navíc pokud si nenainstalujete nejnovější verzi softwaru, riskujete odepření přístupu k bankovním službám.

Ve světe opensourcových kryptoměn se mají věci jinak. K tomu, abyste mohli používat Bitcoin, nemusíte číst každý řádek jeho kódu, ale mít tuto možnost je důležité. Neexistuje tu totiž žádná hierarchie ani banka, která by vám posílala aktualizace a měnila věci, jak se jí zlíbí. Implementace nových funkcí na blockchainových sítích proto může být náročná.
V tomto článku prozkoumáme, jak je možné kryptoměnové sítě upgradovat, i když nemají žádný ústřední orgán. Používají se k tomu dva různé mechanismy: hard forky a soft forky


Kdo má na blockchainových sítích rozhodující slovo?

Abyste pochopili, jak fungují forky, je důležité nejdřív porozumět tomu, kdo je na síti součástí rozhodovacího procesu (neboli kdo ji spravuje).
Na provozu bitcoinové sítě se podílí tři podskupiny – vývojáři, těžaři a provozovatelé plných uzlů. Jsou to strany, které se na provozu sítě skutečně podílí. Lehké uzly (tj. peněženky na telefonech, počítačích atd.) se sice používají ve velkém, ale pokud jde o síť, nejsou jejími skutečnými "účastníky“.


Vývojáři

Vývojáři zodpovídají za vytváření a aktualizaci kódu. U typické kryptoměny může s vývojem pomáhat kdokoli. Kód je veřejný, takže můžete odevzdat změny a ostatní vývojáři je po vás zkontrolují. 


Těžaři

Těžaři jsou ti, kteří síť zabezpečují. Provozují kód kryptoměny a z vlastních prostředků přidávají na blockchain nové bloky. U bitcoinové sítě k tomu například používají algoritmus Proof of Work. Za své úsilí jsou odměňováni odměnou za blok.


Provozovatelé plných uzlů

Plné uzly jsou páteří kryptoměnové sítě. Ověřují, odesílají a přijímají bloky a transakce a uchovávají kopii blockchainu.


Tyto kategorie se často překrývají. Můžete být například vývojářem a provozovatelem plného uzlu nebo těžařem a provozovatelem plného uzlu. Můžete dělat i všechny tři věci naráz nebo taky žádnou. Mnoho uživatelů kryptoměn se vlastně nevěnuje ani jedné z těchto rolí. Místo toho používají lehké uzly nebo centralizované služby.

Při pohledu na shora uvedené popisy byste mohli nabýt dojmu, že o síti rozhodují vývojáři a těžaři. Vývojáři vytváří kód – bez nich by neexistoval software, který byste mohli provozovat, a neměl by kdo opravovat chyby nebo přidávat nové funkce. Těžaři zabezpečují síť – bez zdravé těžařské konkurence by mohl být blockchain napaden nebo by se mohl zcela zastavit.
Pokud by se ale tyto dvě skupiny pokusily donutit zbytek sítě, aby se jim podřídil, nedopadlo by to moc dobře. Podle mnohých lidí skutečná síla spočívá v rukou plných uzlů. Je to způsobené tím, že uživatelé si mohou rozhodnout, jaký software budou provozovat (systém opt-in, tj. možnost volby). 

Vývojáři se vám nebudou vloupávat do domu a nutit vás se zbraní u hlavy, abyste si stáhli binární soubory bitcoinového jádra. Pokud si těžaři budou razit cestu stylem „buď bude po našem, nebo uvidíte“, aby si vynutili nechtěnou změnu, uživatelé si prostě počkají a uvidí. 

Tyto strany nejsou všemocnými vládci – jsou poskytovateli služeb. Když se lidé rozhodnou síť nepoužívat, kryptoměna ztratí na hodnotě. Ztráta hodnoty přímo ovlivňuje těžaře (jejich odměny pak mají nižší dolarovou hodnotu). A pokud jde o vývojáře, ty mohou uživatelé prostě ignorovat.
Není to tak, že by software sítě někdo vlastnil. Můžete udělat jakékoli změny chcete, a pokud budou ostatní váš upravený software provozovat, můžete spolu všichni komunikovat. V takovém případě uděláte fork (rozvětvení) softwaru a vytvoříte tím novou síť.


Co je fork?

K softwarovým forkům dochází, když software zkopírujete a upravíte. Původní projekt funguje dál, ale je teď oddělený od toho nového, který se vydal jiným směrem. Představte si, že tým spravující web s vaším oblíbeným kryptoměnovým obsahem se pohádal o to, jak dál pokračovat. Jedna část týmu se může rozhodnout, že web replikují na jiné doméně, ale do budoucna budou přidávat jiný typ obsahu než původní web.

Projekty začaly na společném základu a sdílí stejnou historii. Ale jako cesta, která se později rozděluje na dvě, se teď budou natrvalo rozbíhat.

K takovým situacím dochází u opensourcových projektů často a docházelo k nim dlouho předtím, než na scénu přišel Bitcoin nebo Ethereum. Hard forky a soft forky ale od sebe rozlišuje téměř výhradně blockchainové prostředí. Pojďme se na ně tedy podívat.



Hard forky vs. soft forky

Navzdory podobným názvům a stejnému účelu je mezi hard forkem a soft forkem významný rozdíl, který si teď vysvětlíme.


Co je hard fork?

Hard forky jsou softwarové aktualizace, které nejsou zpětně kompatibilní. Obvykle k nim dochází, když uzly přidávají nová pravidla, která jsou v rozporu se starými pravidly. Nové uzly mohou komunikovat pouze s uzly, které provozují novou verzi. Výsledkem je, že se blockchain rozdělí a vzniknou dvě samostatné sítě: jedna se starými pravidly a druhá s novými pravidly.

Aktualizované uzly mění svou barvu na modrou. Starší žluté uzly je odmítají a modré uzly komunikují mezi sebou.


V tu chvíli vedle sebe běží dvě sítě. Obě budou dál zpracovávat transakce a vytvářet bloky, ale už nefungují na stejném blockchainu. Všechny uzly měly až do chvíle, kdy proběhl fork, identický blockchain (a tato historie zůstává), ale po forku budou mít jiné bloky a transakce.


Vzhledem k této sdílené historii budete mít coiny na obou sítích (pokud jste je drželi už před forkem). Předpokládejme, že když na bloku číslo 600 000 došlo k forku, drželi jste 5 BTC. Těchto 5 BTC byste mohli na starém blockchainu v bloku číslo 600 001 utratit, ale na novém blockchainu v bloku číslo 600 001 by utraceny nebyly. Za předpokladu, že se nezměnila kryptografie, vaše soukromé klíče na nové síti pořád drží 5 BTC. 
K hard forku došlo například v roce 2017, když se Bitcoin rozdělil na dva samostatné blockchainy – původní Bitcoin (BTC) a nový Bitcoin Cash (BCH). K forku došlo po mnoha hádkách ohledně nejlepšího přístupu ke škálování. Zastánci sítě Bitcoin Cash chtěli zvětšit velikost bloku, zatímco zastánci Bitcoinu byli proti této změně.

Zvětšení velikosti bloku vyžadovalo úpravu pravidel. Došlo k tomu před segwitovým soft forkem (o něm více za chvíli), takže uzly přijímaly jen bloky do velikosti 1 MB. Pokud byste vytvořili 2MB blok, který by byl jinak platný, ostatní uzly by ho už odmítly.

Jen uzly, které změnily svůj software, umožňovaly přijetí bloků přesahujících velikost 1 MB. Z toho důvodu mezi sebou mohly komunikovat jen uzly se stejnými úpravami protokolu, takže pochopitelně přestaly být kompatibilní.


Co je soft fork?

Soft fork je zpětně kompatibilní upgrade, což znamená, že aktualizované uzly mohou s těmi neaktualizovanými pořád komunikovat. Soft fork obvykle přidává nové pravidlo, které není v rozporu s těmi staršími.
Například snížení velikosti bloku je možné dosáhnout soft forkem. Pojďme si to ještě jednou ukázat na příkladu Bitcoinu: přestože velikost bloku má nějaký limit, to, jak malý může být, nijak omezeno není. Pokud chcete přijímat jen bloky do určité velikosti, stačí odmítnou ty, které ji přesahují.

To vás ale automaticky neodpojí od sítě. Pořád můžete komunikovat s uzly, které se těmito pravidly neřídí, a jen odfiltrujete nějaké informace, které vám předávají.

Dobrým příkladem ze skutečného světa je už dříve zmíněný soft fork protokolu Segregated Witness (SegWit), ke kterému došlo krátce po rozdělení na Bitcoin a Bitcoin Cash. SegWit byla aktualizace, která velmi chytře změnila formát bloků a transakcí. Staré uzly mohou dál bloky a transakce ověřovat (nové formátování pravidla neporušuje), jen jim prostě nerozumí. Některá pole je možné číst, až když uzly přejdou na novější software, který jim umožňuje analyzovat dodatečná data.


Ani dva roky po aktivaci SegWitu nedošlo k upgradu všech uzlů. Upgrade má svoje výhody, ale vzhledem k tomu, že nejde o změnu, která by štěpila síť, není důvod spěchat.


Hard forky vs. soft forky – co je lepší?

Oba uvedené typy forků slouží v zásadě k jiným účelům. Sporné hard forky mohou komunitu rozdělit, ale plánové hard forky umožňují po dohodě se všemi software svobodně upravovat.

Soft forky jsou mírnější alternativou. Obecně řečeno máte omezenější možnosti, protože nové změny nemohou být v rozporu se starými pravidly. Pokud je ale možné vaši aktualizaci provést tak, aby zůstala zpětně kompatibilní, nemusíte se bát o rozštěpení sítě.


Závěrem

Hard forky a soft forky jsou pro dlouhodobý úspěch blockchainových sítí naprosto zásadní. Navzdory chybějícímu ústřednímu orgánu nám umožňují měnit a vylepšovat decentralizované systémy.

Forky blockchainům a kryptoměnám umožňují integrovat nově vyvíjené funkce. Bez těchto mechanismů bychom potřebovali ústřední systém s řízením „shora dolů“, jinak bychom se museli po dobu existence protokolu držet stejných pravidel.