🇨🇿 Srovnání Input Endorsers a Sharding

Input Endorsers zvýší škálovatelnost sítě Cardano. Sharding je oblíbené řešení se stejným cílem. Cílem článku je poukázat na rozdílné koncepce obou řešení, zejména s ohledem na zachování jednotného globálního stavu systémů.

Bezpečnost na prvním místě

Každý blockchain musí udržovat jeden platný globální stav. Z hlediska bezpečnosti si všechny uzly v síti musí být vědomy globálního stavu a mít jasně definovaná pravidla pro jeho pozorování a udržování.

Globální stav je sdílený a konzistentní pohled na data a transakce uložené na blockchainu všemi uzly v síti. Zajišťuje, že každý uzel souhlasí se stejnou historií a aktuálním stavem blockchainu.

Lokální stav, který udržuje každý jednotlivý uzel, musí být stejný jako globální stav, protože je předpokladem pro ověření platnosti nových transakcí a bloků. Globální stav je nejen uložen, ale také aktualizován uzly, které se účastní konsensu.

Globální stát se vyvíjí v pravidelných intervalech. Pokud se má blockchain škálovat, musí konsensus sítě umožňovat, aby změny globálního stavu byly prováděny tak často, jak je to jen možné, na velkých objemech dat. To je problém, protože musí být zajištěna konzistence a bezpečnost dat. To je možné pouze v případě, že všichni účastníci pracují se stejným globálním stavem.

V monolitickém blockchainu s konsensem první generace jsou změny globálního stavu prováděny jediným náhodně nakresleným uzlem na jediném místě v síti. Tato změna se provádí prostřednictvím nového bloku, který je rozptýlen do sítě. Ostatní uzly tedy změnu přijímají (nebo odmítají) s mírným zpožděním. Latence sítě je překážkou pro časté změny globálního stavu s velkým množstvím dat. Jinými slovy, je nutné zajistit konzistenci dat na všech uzlech mezi prováděnými změnami stavu. Tedy udělat změnu a poté počkat dostatečně dlouhý čas po který se stav sjednotí napříč všemi nody.

Na obrázku níže můžete vidět, že horní uzel vytvořil nový blok v čase T. Blok dosáhne uzlů uprostřed v čase T+1. Ve spodním uzlu v čase T+2. Směr pohybu bloku je označen červenými šipkami. Globální stav je konzistentní v čase T+2. V čase T a T+1 měl každý uzel jiný globální stav.

Monolitický blockchain zpracovává všechny základní komponenty systému, jako je konsensus, dostupnost dat a provádění, ve stejné vrstvě (v jediné vrstvě). Všechny uzly účastnící se síťového konsensu sdílejí jeden prostor, ve kterém společně ověřují transakce a bloky. Globální stav je uložen na všech uzlech, což usnadňuje udržování konzistence a úplnosti dat v každém daném okamžiku.

To však klade nároky na uzly z hlediska zdrojů (úložiště, šířka pásma, výpočet). Monolitický systém může inklinovat k centralizaci a má vyšší požadavky na výkon uzlů. Pro monolitický blockchain je tedy velmi obtížné dosáhnout vysoké škálovatelnosti a zároveň zajistit vysoký stupeň decentralizace. Monolitický blockchain může obvykle poskytnout vysokou úroveň zabezpečení a spolehlivosti, ale neškáluje se.

Protože blockchain potřebuje více škálovat, týmy přicházejí s inovacemi, jako jsou Input Endorsers a sharding.

Pamatujte, že každý systém, ať už monolitický, používající Input Endorsers nebo využívající sharding, musí udržovat jeden platný globální stav. V tomto článku porovnáme různé přístupy ke zvýšení škálovatelnosti především s ohledem na globální stav.

Všechny metody, které mají za cíl zvýšit škálovatelnost blockchainu, se snaží využívat prvky paralelizace a souběžnosti do konsenzu sítě. Vylepšení lze implementovat pouze s ohledem na konzistenci globálního stavu. Nekonzistence může mít za následek snížení bezpečnosti a spolehlivosti.

Jednoduše řečeno, síťový konsensus může umožnit uzlům provádět více operací současně na více místech v síti, ale stav účetní knihy (globální stav) musí být konzistentní. Uzly musí být synchronizovány včas a správně.

Udržování globálního stavu je výzvou s rostoucí složitostí konsenzu a vyšším množstvím dat přenášených v síti.

Sharding

Shardovaný blockchain rozděluje síť na menší skupiny uzlů, které se nazývají shardy. Shardy mohou zpracovávat transakce paralelně. Každý shard má svou vlastní podmnožinu blockchainových dat a svůj vlastní konsensus protokol.

Pro zjednodušení si můžete sharding představit jako zkopírování jednoho blockchainu (včetně uzlů a jeho globálního stavu) několikrát vedle sebe.

Na obrázku níže vidíte sharded blockchain. 15 uzlů je rozděleno do 3 shardů. V každém shardu se v čase T+1 vyrobí jeden nový blok. Vidíte více bloků, protože blok je v P2P síti distribuován do všech komunikačních kanálů současně.

Největší výhodou sharded blockchainu je vysoká škálovatelnost dosažená díky paralelizaci pro ověřování transakcí. Validace transakcí je rozdělena mezi několik částečně nezávislých skupin uzlů. To má další výhody, protože snižuje nároky na úložiště, šířku pásma a výpočetní výkon jednotlivých uzlů.

Ve sharded blockchainu je však obtížnější udržet konzistenci globálního stavu, protože je udržován v jednotlivých shardech. Každý fragment má pouze částečnou znalost globálního stavu, protože nemá všechna data. Mezi fragmenty musí existovat nějaký synchronizační mechanismus, který zajistí, že globální stav bude konzistentní napříč všemi. To přináší složitost a výzvy z hlediska bezpečnosti.

Uzly ve sdíleném blockchainu si nejsou vědomy všech uživatelů a aktiv. Rozdělení uživatelů a aktiv závisí na konkrétním návrhu a implementaci mechanismu shardingu. Obecným principem je, že uživatelé a aktiva jsou přiřazováni k shardům na základě určitých kritérií, jako jsou jejich adresy, historie transakcí nebo vyrovnávání zátěže.

Dapps jsou také distribuovány přes shardy. Na rozdíl od uživatelů a prostředků mohou dApps zahrnovat více shardů, pokud potřebují interagovat s jinými dApps nebo prostředky na různých shardech.

Distribuce uživatelů, aktiv a dApps vyžaduje komunikaci napříč shardy, která zahrnuje odesílání zpráv mezi shardy a zajištění jejich konzistence a atomicity. Různé shardované blockchainy mají různé přístupy ke zpracování mezishard komunikace, jako je použití přenosových řetězců, notářských schémat nebo potvrzení o příjmu.

Pokud je Alice ve shard 1, Boba ve shard 2 a Carol ve shardu 3, každá transakce by byla v jiném bloku, který by ověřovaly pouze uzly v tomto shardu. Ale jak se střípky 2 a 3 dozvědí o transakci Alice? Existují dva možné způsoby, jak informovat shardy 2 a 3 o transakci Alice.

Jedním ze způsobů je použití globálního koordinátora, který lze nazvat řetězem přenosu (relay chain) nebo řetězcem majáků (beacoin chain). Koordinátor spojí všechny shardy. Může pravidelně přijímat hlavičky bloků z každého shardu a vysílat je do jiných shardů. Shardy 2 a 3 se mohou dozvědět o transakci Alice přijetím hlavičky bloku ze shardu 1 přes globálního koordinátora.

Dalším způsobem je použití notářského schématu nebo potvrzení o přijetí, které zahrnuje přímou komunikaci mezi shardy. Není tedy potřeba žádného globálního koordinátora. Shard může poslat zprávu jinému shardu (nebo shardům) indikující, že určitá transakce byla provedena nebo potvrzena. Shardy 2 a 3 se mohou dozvědět o transakci Alice tím, že přijmou zprávu nebo důkaz přímo od shard 1.

Pokaždé, když shard vytvoří nový blok (s mnoha transakcemi), je globálnímu koordinátorovi odeslána hlavička bloku. Globální koordinátor odešle hlavičku bloku všem ostatním shardů. Všechny shardy si tak mohou zachovat konzistentní pohled na globální stav. To však také přináší určitou režii a latenci, protože koordinátor musí zpracovat a vysílat všechny hlavičky bloků ze všech shardů. Některé sharded blockchainy proto používají různé techniky k optimalizaci výkonu globálního koordinátora, jako je dávkování, ukládání do mezipaměti nebo vzorkování.

Představte si scénář, kdy Alice je ve shardu 1 a Bob ve shardu 2. Alice chce poslat Bobovi 10 mincí. V tomto jednoduchém scénáři by mohlo být použito až 8 cross-shard zpráv, aby bylo zajištěno, že transakce cross-shard bude provedena atomicky a bezpečně napříč shardy.

Na obrázku níže můžete vidět normální tok zpráv během komunikace mezi shardy, pokud jsou Alice a Bob ve dvou různých shardech.

Použití 8 cross-shard zpráv je aktuálně nejlepším řešením s ohledem na bezpečnost a atomicitu.

Může být možné dosáhnout stejného výsledku s menším počtem zpráv, ale vyžadovalo by to určité kompromisy mezi bezpečností, efektivitou a jednoduchostí. Někdo by mohl například zkusit spojit některé zprávy do jedné. To by však zvýšilo velikost a složitost každé zprávy a potenciálně přineslo více rizik zpoždění nebo selhání sítě. Případně se můžete pokusit některé zprávy odstranit. To by snížilo úroveň synchronizace a ověřování mezi shardy a potenciálně by ohrozilo atomičnost a konečnost transakce mezi shardy.

Jak můžete vidět, udržování globálního stavu shardovaného blockchainu je složitý úkol. Vyžaduje koordinaci a synchronizaci mezi různými shardy, stejně jako konzistentní a bezpečnostní záruky pro cross-shard transakce. Velikost režie závisí na protokolu shardingu, počtu shardů, četnosti transakcí mezi shardy a podmínkách sítě.

Režie komunikace mezi shardy je faktor, který ovlivňuje škálovatelnost shardovaného blockchainu. Čím více transakcí mezi shardy existuje, tím více zpráv a dat je třeba vyměňovat mezi shardy, což spotřebovává šířku pásma, úložiště a výpočetní zdroje. Proto může režie komunikace mezi shardy omezit škálovatelnost systému, zejména pokud je počet shardů velký nebo jsou-li podmínky sítě špatné.

Všechny shardy si udržují místní konsensus a musí se také starat o komunikaci mezi shardy. To je náročné na zdroje a synchronizaci. Místní konsensus zajišťuje, že každý shard udržuje konzistentní a zabezpečený ledger svých vlastních transakcí. Když transakce zahrnuje více shardů, shardy potřebují vzájemně komunikovat, aby transakci provedly a ověřily. Kombinace místního konsensu a cross-shard komunikace umožňuje sharding blockchainů dosáhnout vysoké škálovatelnosti a výkonu ve srovnání s monolitickými blockchainy.

Hlavním účelem shardingu je zvýšení škálovatelnosti, ale možná poněkud paradoxně může být toto řešení zahlceno velkým množstvím zpráv napříč shardy. Aby mohl blockchain těžit z používání shardingu, musí výhody paralelizace převažovat nad režií související se synchronizací shardů a komunikací mezi shardy.

Velmi záleží na konkrétní implementaci a způsobu, jakým uživatelé síť využívají. S rostoucím počtem uživatelů, ale zejména s vyšší potřebou cross-shard komunikace může narůstat režie, a tím pádem klesat efektivita paralelizace při zpracování transakcí v jednotlivých shardech.

Čím více shardů má systém, tím jsou uživatelé, prostředky a aplikace rozptýlenější. Vysoká disperze není žádoucí, protože zvyšuje potřebu cross-shard komunikace, ale sharded blockchain se jí v zásadě nevyhne.

Počet shardů nemůže růst do nekonečna. Ideální počet shardů závisí na využití aktuálního počtu shardů a také na dalších faktorech, jako je bezpečnost, efektivita, složitost shardovacího protokolu a způsob, jakým uživatelé chtějí systém používat. To však nelze předem předvídat.

Input Endorsers

Input Endorsers udržují uživatele, aktiva a dApps v jedné vrstvě. Consensus používá prvky paralelizace a souběžnosti, ale udržuje jeden globální stav (jedna verze ledgeru). Není tedy nutné rozdělovat uživatele, aktiva a dApps do několika samostatných skupin.

Hlavním účelem funkce Input Endorser je oddělit výběr transakcí od produkce bloků. K tomu slouží trojice bloků. Vstupní bloky (Input Blocks - IB), potvrzovací bloky (Endorsement Blocks - EB) a hodnotící bloky (Ranking Blocks - RB).

Ranking bloky slouží k udržení jednotného globálního stavu, zatímco vstupní bloky a potvrzovací bloky slouží k výběru a ověřování transakcí, které probíhají souběžně za účelem udržení jednotného stavu.

Všechny typy bloků jsou raženy paralelně v síti Cardano, ale s jinou frekvencí. Ranking bloky lze považovat za bloky konsensu, protože zajišťují linearitu blockchainu. Ranking bloky tvoří shodu nad daty v ranking blocích, které odkazují na vstupní bloky (které obsahují payload). Mezi ražbou dvou ranking bloků je vyraženo mnoho potvrzovacích a vstupních bloků. Konsenzus vzniká na větším množství dat než v případě monolitického blockchainu.

Na obrázku můžete vidět ražbu bloků v síti Cardano, která využívá Input Endorsers. Každou sekundu je vyražen nový blok (v jedné sekundě lze paralelně razit několik bloků).

Vstupní bloky jsou odkazovány bloky potvrzení. Na bloky potvrzení se odkazují bloky hodnocení. Mezi všemi typy bloků je jasně definovaná vazba, která slouží jako synchronizační mechanismus. To je důležité, protože informace se v síti šíří pomocí šíření bloků. Není nutné zavádět další mechanismus zasílání zpráv jako v případě shardingu, protože všechny uzly jsou v jednom prostoru.

Na obrázku níže můžete vidět vztahy mezi všemi typy bloků. Černé šipky označují odkazy mezi vstupními bloky a bloky potvrzení a také mezi bloky hodnocení a bloky potvrzení. Červené šipky označují odkazy vstupních bloků na aktuální stav ledgeru, tj. na ranking bloky. Vstupní bloky jsou raženy s ohledem na aktuální globální stav, který představuje nedávný ranking blok. Modré šipky označují linearitu blockchainu, tj. vztah mezi bloky pořadí, když nové bloky pořadí musí následovat po předchozím bloku pořadí. Postupem času budou všechny transakce vstupovat do ledgeru prostřednictvím vstupních bloků. Na obrázku můžete také vidět modré obdélníky za potvrzovacími bloky, které představují potvrzovací certifikáty.

Informace o transakci Alice se postupně dostane ze vstupního bloku do ranking bloku. Ve vstupním bloku a bloku potvrzení se transakce pouze připravují. Síťový konsenzus probíhá prostřednictvím připojení nového ranking bloku k blockchainu a následného přijetí (nebo odmítnutí) tohoto bloku zbytkem uzlů v síti. Uzel, který razí nový ranking blok, může vyřešit konflikty mezi transakcemi výběrem nejvýhodnější sady bloků potvrzení.

Na obrázku níže můžete vidět, jak se Aličina transakce dostane z input bloku do bloku potvrzení a přes něj do ranking bloku. Pohyb transakce je označena červenými šipkami.

Na rozdíl od shardingu se Input Endorsers chovají jako monolitický blockchain, pokud jde o odesílání transakcí mezi Alicí a Bobem. Složitější je distribuce informací o transakci Alice. Alicina transakce s velkým množstvím dalších transakcí je ověřována velkým počtem uzlů, než je zahrnuta do blockchainu prostřednictvím hodnotícího bloku.

Vstupní bloky lze razit (streamovat) v podstatě neustále každé 0,2-2 sekundy (frekvence bude nastavena parametrem protokolu). To znamená, že namísto vytváření jednoho bloku každých 20 sekund lze za stejnou dobu vyrazit 10 až 100 vstupních bloků. Vstupní bloky, ale také schvalovací bloky, lze současně ověřit, než se stanou součástí historie blockchainu prostřednictvím bloku hodnocení.

Input Endorsers zvyšují škálovatelnost v rámci jednoho prostoru. Síť udržuje jeden globální stav, takže není potřeba synchronizovat subglobální stavy podobně jako u shardingu.

Závěr

Pokud je současná škálovatelnost monolitické blockchainové sítě řekněme 30 TPS, pak sharding nezvyšuje škálovatelnost této sítě, ale spíše vytváří několik kopií této sítě a tím vytváří shardy (více vrstev). Každý shard má svůj vlastní konsensus a místní stav pro část uživatelů, aktiv a aplikací sítě. Je nutné udržovat globální stav sítě, k čemuž dochází synchronizací lokálních stavů. Pokud spolu komunikují dva účastníci a každý je v jiném shardu, tak pro jednoduchou transakci je potřeba použít až 8 cross-shard zpráv. To je poměrně velká režie.

Input Endorsers je řešení, které zvyšuje škálovatelnost blockchainu. Je udržován jeden globální stav, který je společný pro všechny uživatele, prostředky a aplikace. V systému jsou prvky paralelismu a souběžnosti, ale k synchronizaci dochází přirozeně prostřednictvím difúze tří typů bloků v síti. Pro interakci mezi dvěma účastníky vždy stačí jedna transakce, protože všichni jsou v jedné vrstvě.

Cardano může mít teoreticky jak sharding, tak i Input Endorsers. V každém shardu může existovat konsenzus podpořený vylepšením Input Endorsers. Bylo by tedy více vrstev a globálního koordinátora (nebo by se použilo řešení bez koordinátora). K synchronizaci lokálních stavů by docházelo na úrovni ranking bloků. Může to vypadat jako na obrázku níže.

Zatím je to však pouze vzdálená teorie, jelikož Cardano nemá ani Input Endorsers a implementace tohoto systému bude nějakou dobu trvat. Input Endorsers mohou být ve střednědobém horizontu dostatečným řešením. Bude však třeba zvážit další vylepšení, protože blockchainové sítě se musí škálovat stejně jako současné finanční systémy, pokud je mají narušit. Mnoho týmů se dívá na druhé vrstvy, ale aby fungovaly spolehlivě, musí první vrstvy dobře škálovat. Uvidíme, co nám budoucnost přinese.

This article was prepared by Cardanians with support from Cexplorer.

Read the article: https://cexplorer.io/article/comparing-input-endorsers-with-sharding