🇨🇿 Jaká je budoucnost škálování Cardano?

Tento článek se podívá na současnou škálovatelnost Cardana a zváží, jak moc ji může zlepšit Input Endorsers. Nebudeme se zabývat Hydrou ani jinými možnostmi škálování Cardana. Nejbližším vylepšením škálovatelnosti první vrstvy budou Input Endorsers (i když předtím může dojít k určitému dílčímu zlepšení).

Aktuální škálovatelnost Cardana

Transactions Per Second (TPS) nám může říci, kolik lidí může síť používat v daném časovém úseku. TPS je maximální propustnost sítě.

Pro Cardano není TPS vhodnou metrikou. Účetní model založený na UTxO umožňuje odeslání více aktiv více příjemcům v jedné transakci. Takové transakce mohou odeslat aktiva 100 příjemcům a jsou výrazně menší, než kdyby síť musela zpracovat 100 jednotlivých transakcí.

Podívejte se na typ transakcí, které Cardano aktuálně zpracovává. Zjistíte, že zhruba 60 % jsou SC transakce, 35 % jsou jednoduché transakce (Alice posílá aktiva Bobovi) a 5 % jsou transakce s metadaty.

Pro zjednodušení budeme v článku používat metriku TPS a ve většině případů uvažujeme pouze o jednoduchých transakcích.

Výpočet TPS je poměrně snadný. Pro hrubý odhad potřebujeme znát pouze velikost bloku, průměrnou velikost transakce a frekvenci bloků.

Cardano razí nový blok každých 20 sekund. Maximální velikost bloku a transakce jsou definovány následujícími parametry protokolu:

  • Maximální velikost bloku: 90,112 bajtů

  • Maximální velikost transakce: 16,384 bajtů

Jednoduchá transakce Cardano může mít velikost 250 až 500 bajtů. Většinou uvidíte transakci o velikosti 300 bajtů. SC transakce nebo transakce s více vstupy či výstupy jsou samozřejmě větší.

Čím více vstupů a výstupů transakce má, tím je větší. Obvykle se odebírá jeden velký vstup, ze kterého se vytvoří dva výstupy. Jeden výstup obdrží příjemce a druhý výstup vrátí část aktiv zpět odesílateli. Transakce musí obsahovat witness (100-200 bajtů).

Pokud uvážíme, že v bloku budou pouze transakce o velikosti 300 bajtů, vešlo by se jich do bloku 300. Pokud toto číslo vydělíme 20 sekundami (frekvence mintování bloku), dostaneme TPS 15.

Pokud bychom uvažovali, že v bloku budou pouze obrovské SC transakce o velikosti 16 000 bajtů, vešlo by se jich do bloku zhruba 6. TPS by bylo pouze 0,3.

Jedna velká transakce SC by však mohla obsahovat zhruba 250 příjemců, takže v jednom bloku by bylo obslouženo 1 500 příjemců. Pokud bychom nepočítali TPS podle transakcí, ale podle příjemců, dostali bychom 75.

Vzhledem k současnému typu transakcí je současná maximální propustnost Cardana zhruba 40-50 příjemců za sekundu. To je zhruba 3x více, než kdybychom uvažovali pouze TPS a jednoduché transakce.

Je potřeba si uvědomit, že velikost Cardano bloku je ve srovnání s jinými blockchainy poměrně malá.

Bitcoinové bloky mají teoretickou maximální velikost 4 megabajty (SegWit). Realističtější maximální velikost je 2 megabajty. Průměr se za poslední rok pohybuje kolem 1,6 MB. Bitcoin těží nové bloky v průměru každých 10 minut. Bitcoin zvládne zhruba 7 TPS.

Ethereum razí nové bloky v průměru každých 12 sekund. Velikost bloku Etherea není pevná (neni omezená velikostí bloku v bajtech), ale spíše závisí na množství GAS používaného transakcemi zahrnutými v každém bloku. Limit GAS (složitost provádění transakcí) určuje velikost bloku. Lze ji dynamicky upravovat. V současné době je limit GAS nastaven na 15M. V posledních měsících se velikosti bloků pohybují od 140 do 170 kilobajtů. Ethereum razí asi 7 200 bloků denně a potvrzuje asi 1 milion transakcí. V blocích je asi 140 transakcí. Průměrná transakce Ethereum je asi 1000 bajtů. V současné době Ethereum funguje blízko svého limitu kapacity a jeho TPS je 12.

Algorand má velikost bloku 5 MB a dobu bloku 3,3 sekundy. Může to udělat 6000 TPS a tým plánuje zlepšit to na 10 000.

Bitcoin má dlouhou dobu bloku, ale díky tomu může mít velkou velikost bloku. TPS je primárně omezena dobou bloku. Ethereum má zhruba o polovinu nižší čas bloku než Cardano a zároveň zhruba 2x větší velikost bloku. Přesto je aktuální TPS 12. Pokud bychom počítali pouze jednoduché transakce řekněme 500 bajtů, TPS by mohlo být kolem 30. To by bylo zhruba 2x více než Cardano.

Algorand má velkou velikost bloku a zároveň velmi nízkou dobu blokování. To je jeden z důvodů vysokého TPS. Více si o tomto projektu povíme v souvislosti s Input Endorsers.

Velikost bloků Cardano by mohla být velmi pravděpodobně zvýšena na 180 kilobajtů a frekvence ražby bloků by mohla být nastavena na 15 sekund bez negativního dopadu na výkon. V takovém případě by TPS bylo 40, tedy o něco více než Ethereum.

Zvýšení o 10 TPS by však neznamenalo zásadní rozdíl. Blockchainy musí být schopny škálovat v řádu tisíců TPS během několika let. Některé sítě to prý už umí. Mise Cardano vyžaduje dostat se k podobným číslům. Může se tam Cardano dostat přes Input Endorsers?

Input Endorsers

Input Endorsers mohou zvýšit propustnost a rychlost Cardano, protože transakce mohou být streamovány neustále bez čekání na konsensus. Namísto jednoho bloku, který obsahuje transakční data, bude Cardano mít tři typy bloků: ranking bloky, endorsement bloky a vstupní bloky. Transakce budou pouze ve vstupních blocích. Endorsemetn bloky budou odkazovat na více vstupních bloků.

Jedná se o velmi podobný koncept, který Algorand již implementoval. Říká se tomu (anglicky) block pipelining. Algorand používá koncept transakčních referencí a to je jeden z důvodů vysokého TPS (samozřejmě to není jediný důvod). Než se pustíme do Input Endorsers, pojďme si stručně vysvětlit, jak funguje blok pipelining.

Síť Algorand náhodně vybere komisi uživatelů pro každý blok, kteří pak navrhnou a hlasují o bloku v jediném kole.

V Algorandu jsou dva typy bloků: klíčové (key) bloky a mikrobloky. Klíčové bloky se používají k dosažení konsensu v síti. Kromě jiného (informace o navrhovateli, výboru atd.) odkazují klíčové bloky na více mikrobloků. Mikrobloky se používají k ukládání transakčních dat.

Výbor hlasuje pouze o klíčových blocích, nikoli o mikroblocích. Mikrobloky jsou ověřovány zúčastněnými uzly předtím, než jsou zahrnuty do bloku klíčů.

Algorand obsahuje pouze odkazy na změny stavu v blocích klíčů, nikoli na celý stav hlavní knihy. Reference je pouze 32B hash změn stavu, ke kterým došlo v bloku. Hash je mnohem menší než uložení celého stavu. To snižuje velikost key bloků a umožňuje rychlejší šíření a ověřování bloků v síti.

Input Endorsers a block pipelining mají mnoho podobností:

  • Obě funkce rozdělují blok na dvě části: jednu pro konsensus a jednu pro transakce.
  • Obě funkce umožňují neustálé streamování transakčních bloků bez ohledu na proces konsensu.
  • Obě funkce mají za cíl zvýšit propustnost a rychlost sítě snížením doby šíření bloků a umožněním vyšších transakčních rychlostí.

Dá se říci, že tým IOG implementuje obdobné řešení, které již v praxi funguje. Na druhou stranu existují i rozdíly v obou řešeních. Největší rozdíl je pravděpodobně v tom, že block pipelining se spoléhá na jedinou vrstvu endorsement bloků, zatímco Input Endorsers v Cardano spoléhají na hierarchickou strukturu vstupních, endorsement a ranking bloků.

Pojďme si popsat bloky, které budou použity v Cardano poté, co bude funkce Input Endorsers doručena a to shora (síťový konsensus) dolů (data).

  • Ranking bloky se používají k dosažení konsensu v síti Cardano. Jsou podobné současným blokům, až na to, že neobsahují žádná transakční data. Místo toho obsahují odkaz na sadu bloků potvrzení, které jsou vzájemně kompatibilní. Každý hodnotící blok navíc obsahuje podpis od výrobce bloku, který jej vytvořil. Bloky hodnocení vytvářejí vedoucí slotů, kteří jsou náhodně vybíráni protokolem podle jejich stake. Ranking bloky jsou zodpovědné za zachování bezpečnosti a definitivnosti blockchainu. Mohou být vyrobeny každých 15-30 sekund.
  • Endorsement bloky obsahují odkaz na jeden vstupní blok spolu s podpisem od zadavatele vstupu, který jej vytvořil. Vytvářejí a streamují je endorsři a podléhají kontrole platnosti ze strany výrobců bloků. Endorsement bloky mají nadřazený blok, což je poslední ranking blok v řetězci, a mohou mít více (kompatibilních) podřízených bloků. Mohou být vyrobeny každých 5-10 sekund.
  • Vstupní bloky (input blocks) obsahují data transakce. Vytvářejí a streamují je endorseři, což jsou náhodně vybrané zúčastněné strany, které si mohou vybrat transakce z mem-poolu a šířit je po síti. Vstupní bloky nemají žádné nadřazené ani podřízené bloky a neúčastní se procesu konsensu. Jsou jednoduše způsobem vysílání transakcí do sítě. Mohou být vyrobeny každých 0,2-2 sekundy.

Endorsement bloky obsahují odkaz pouze na jeden vstupní blok. Na endorsement blok lze odkazovat jinými bloky potvrzení, které jsou s ním kompatibilní.

Pokud například endorsement blok EB-1 odkazuje na vstupní blok IB-1 a jiný endorsement blok EB-2 odkazuje na vstupní blok IB-2 a oba bloky IB-1 a IB-2 nemají žádné konfliktní transakce, pak EB- 2 může odkazovat na EB-1 jako na svůj rodičovský blok. Tímto způsobem se EB-2 stane podřízeným blokem EB-1 a EB-1 i EB-2 jsou vzájemně kompatibilní. To umožňuje vytvoření stromové struktury bloků potvrzení, kde každá větev představuje jinou sadu transakcí, které lze zahrnout do ledgeru prostřednictvím dalšího ranking bloku.

Účelem více podřízených bloků pro endorsement blok je zvýšit šance na nalezení kompatibilní sady bloků potvrzení pro každý blok hodnocení. Ranking blok může odkazovat na sadu bloků potvrzení, které jsou vzájemně kompatibilní, což znamená, že nemají žádné konfliktní transakce v odkazovaných vstupních blocích. Díky více podřízeným blokům pro blok potvrzení může výrobce bloku vybrat nejlepší větev, která maximalizuje počet transakcí pro zahrnutí do ledgeru.

Input Endorsers podrobněji vysvětlíme v jiném článku (včetně obrázků). V tomto článku jsme chtěli objasnit základní koncepty.

Nejdůležitější je poznamenat, že bloky s transakcemi lze razit (streamovat) v podstatě neustále (každé 0,2-2 sekundy). To znamená, že namísto vytváření jednoho datového bloku každých 20 sekund lze za stejnou dobu vyrazit 10 až 100 vstupních bloků. Vysoká frekvence ražby vstupních bloků nebrání konsenzu sítě.

Nyní se zaměřme na potenciální zvýšení škálovatelnosti.

Jeden Cardano blok pojme 300 jednoduchých transakcí. Pokud je doba bloku pro vstupní bloky nastavena na 2 sekundy, vytvoří se 10 bloků během 20 sekund, což odpovídá 3000 transakcím. Pokud je to 0,2 sekundy, bude 100 bloků s 30 000 transakcemi.

TPS tedy stoupne na 150 až 1500.

Pokud by síťová vrstva umožnila zvětšit velikost vstupních bloků, mělo by to pozitivní dopad na TPS. Při zvýšení vstupního bloku na 180 kilobajtů by Cardano mohlo mít TPS kolem 300 až 3000.

Zvyšování škálovatelnosti závisí na mnoha dalších kvalitách sítě a technologiích, jako je difusion pipelining, Mithril atd. Funkci Input Endorsers lze využít efektivněji, pokud lze zlepšit další vlastnosti jednotlivých sítí.

Je důležité zmínit, že TPS, které uvádíme, jsou pouze orientační. V praxi bude docházet ke konfliktu mezi transakcemi, takže je možné, že se do ranking bloků dostane pouze část endorsement bloků v jednom kole.

Potenciální zvýšení škálovatelnosti, které mohou Input Endorsers přinést, není pouze o vstupních blocích (a počtu transakcí v nich), ale také o ranking blocích.

Ranking bloky podléhají kontrole platnosti ze strany výrobců bloků, kteří se musí ujistit, že dodržují pravidla protokolu a konsensuální parametry. Kontrola platnosti bude náročnější na zdroje, protože bude nutné ověřit více transakcí. Ranking bloky mají také omezenou velikost a frekvenci ražby. Určuje, kolik referencí lze zahrnout do bloku hodnocení a jak často mohou být produkovány (15-30 sekund). Škálovatelnost je tedy omezena nejen vstupními bloky, ale také ranking bloky.

Blockchainové sítě nemohou generovat neomezený počet transakcí, protože to generuje obrovské množství dat. Dostupnost dat je jedním z klíčových aspektů škálovatelnosti blockchainu. V decentralizované síti probíhá kontrola platnosti na uzlech, které jsou po celém světě. Aby mohli provést kontrolu, musí mít k dispozici data.

Čím větší je velikost bloku, tím více transakcí může být zpracováno v bloku, ale také větší šířku pásma a úložiště vyžadují uzly. Čím kratší je doba blokování, tím rychleji lze transakce potvrdit, ale také tím vyšší je riziko forků a osiřelých bloků.

Týmy musí pečlivě vyvážit decentralizaci a škálovatelnost. Zvýšení škálovatelnosti může mít negativní dopad na decentralizaci, protože může snížit počet a rozmanitost uzlů, které se mohou podílet na síťovém konsensu, a zvýšit sílu určitých uzlů nad ostatními.

Závěr

Input Endorsers nemusí být posledním vylepšením protokolu Cardano. Často se říká, že sharding je nezbytný pro vysokou škálovatelnost. Sharding má však i své nevýhody, vyplývající především z nutnosti komunikace a synchronizace mezi shardy. Cardano může mít sharding po implementaci Input Endorsers. Jeden shard (podsít) by mohl mít TPS zhruba jako síť Cardano s Input Endorsers. Cardano s 10 shardy by tedy mohlo mít TPS kolem 20 000. To je však hodně daleko v budoucnosti a muselo by se dopracovat hodně technologických detailů. Například sharding na úrovni úložiště, vylepšit Mithril a mít lehké klienty, přemýšlet o ořezávání (vyhazování starých transakcí) atd.

Článek připravili Cardanians s podporou od Cexplorer.

Přečtěte si celý článek: https://cexplorer.io/article/what-is-the-future-of-cardano-scalability