Skúmanie možností škálovateľnosti modelu UTxO
Model UTxO umožňuje paralelné spracovanie transakcií, čo je vlastnosť, ktorá je nevyhnutná na dosiahnutie vysokej škálovateľnosti a rýchlej finalizácie transakcií. V tomto článku sa budeme venovať rôznym stratégiám na zlepšenie konsenzu v sieti, ktoré môžu viesť k zvýšeniu priepustnosti siete a rýchlejšej finalizácii transakcií. V článku sa dozviete o vstupných schvaľovačoch, shardingu a o tom, ako ochrana proti útokom dvojitého míňania obmedzuje škálovateľnosť.
Základné vlastnosti modelu UTxO
UTxO sú nezávislé a nemenné objekty. Keď je UTxO vytvorený ako výstup transakcie, zostáva nezmenený, kým sa nevyčerpá v novej transakcii. Keď sa minie, úplne sa spotrebuje a ako výstup novej transakcie sa vytvorí nový UTxO.
Obrázok znázorňuje nepretržité a paralelné predkladanie nových transakcií používateľmi. Každá transakcia jednoznačne odkazuje na vstupné UTxO zo súboru UTxO, ako to naznačujú červené šípky vedúce k červeným UTxO. Výraz STATE 1 predstavuje čerstvý globálny stav, ktorý vzniká v každom uzle po prijatí nového bloku. Červené UTxO boli odstránené zo súboru UTxO. Súbor UTxO bol aktualizovaný pridaním novovytvorených UTxO, znázornených zelenými šípkami smerujúcimi k zeleným UTxO.
Model UTxO zohráva kľúčovú úlohu pri správe globálneho stavu počas overovania transakcií. Globálny stav v systéme Cardano je reprezentovaný aktívnou kolekciou UTxO, známou aj ako súbor UTxO. S pridaním každého nového bloku sa všetky novo vytvorené UTxO začlenia do množiny UTxO. Naopak, UTxO, ktoré sú spotrebované (utratené) transakciami, sú zo sady UTxO odstránené. UTxO možno vnímať ako jednorazové entity.
Každý uzol v sieti si udržiava svoju individuálnu sadu UTxO. Väčšina uzlov dodržiavajúcich konsenzus disponuje identickou sadou UTxO (globálnym stavom), pretože si uchovávajú rovnakú históriu blockchainu vrátane naposledy pridaného bloku. Napriek tomu v dôsledku oneskorení pri prenose dát v sieti neprechádza globálny stav okamžitými zmenami vo všetkých uzloch súčasne, ale skôr s malým oneskorením. Možno postulovať, že v okamihu, keď uzol tvorca bloku šíri do siete nový blok, všetky uzly zdieľajú rovnaký globálny stav (čo znamená, že prijali posledný blok a podľa toho aktualizovali globálny stav).
Ako zvýšiť konečnosť transakcií?
Cardano využíva mechanizmus konsenzu podobný konsenzu v štýle Nakamoto. Ten je typický pravdepodobnostnou konečnosťou blokov, a teda aj transakcií. To znamená, že ak je transakcia zahrnutá do nového bloku, označovaného ako BLOK 1, má počet potvrdení nula. Keď sa pridá blok, existuje pravdepodobnosť, že tento blok nemusí v blockchaine pretrvať, pretože by mohol byť nahradený alternatívnym blokom vytvoreným približne v rovnakom čase. Istota, že blok v blockchaine vydrží, sa zvyšuje s pridávaním nových blokov nad rámec BLOCK 1. Často sa to označuje ako zvýšenie počtu potvrdení.
Na obrázku môžete vidieť, že po BLOKU 0 došlo k rozvetveniu blockchainu. Vznikli dva alternatívne BLOKY 1. Po pridaní ďalších blokov zvíťazil horný reťazec. V hornom reťazci sa uskutočnila transakcia TX 1.
Cardano vykazuje nízku konečnosť transakcií. Čas bloku v systéme Cardano je nakonfigurovaný na 20 sekúnd. To znamená, že ak si vaša transakcia vyžaduje 10 potvrdení, museli by ste čakať približne 200 sekúnd, čo sú zhruba 3 minúty.
Vďaka nezávislosti UTxO v rámci sady UTxO sa vzájomne vylučuje aj potvrdzovanie transakcií. Každý uzol môže potvrdiť transakciu alebo skupinu transakcií. Poradie transakcií v rámci bloku je nepodstatné, pretože sa navzájom neovplyvňujú. V dôsledku toho môže uzol nielen validovať jednotlivé transakcie po ich prijatí, ale aj pripojiť schválenie alebo hlasovanie v určitej forme pred rozšírením transakcie do siete. Každý nasledujúci uzol, ktorý dostane transakciu, bude sledovať aj schválenia od uzlov, ktoré dostali transakciu skôr.
Na obrázku môžete vidieť, ako transakcia TX 1 postupne zbiera schválenia v každom ďalšom uzle, do ktorého sa šíri. Keď uzol 4 vytvorí nový blok, transakcia už má 4 schválenia. Všimnite si, že uzol 4 ako prvý upravil svoj mem-pool. Uzol 4 odstránil starý vstupný UTxO (červený) z transakcie TX 1 a vložil novovytvorený UTxO (zelený).
Transakcie, ktoré boli v pamäťovom fonde uzla dlhšie, majú vo všeobecnosti viac schválení a mohli by mať vyššiu prioritu pri pridávaní do bloku. Toto je už vlastnosť transakcií Cardano, keďže Cardano funguje na princípe first-in, first-out. Dôležité je, že ak transakcia získa schválenie od väčšiny uzlov v sieti, pravdepodobnosť jej vyradenia sa znižuje, a to aj v prípade, že blockchain prejde reorganizáciou.
Proces dosiahnutia konsenzu o zaradení transakcií môže prebiehať rýchlejšie a nezávisle od tvorby nových blokov.
Aj keď blok obsahujúci transakciu má len niekoľko potvrdení (prípadne len jedno), medzi uzlami siete už bude existovať konsenzus, že transakcia by mala byť súčasťou blockchainu. Sieť môže byť navrhnutá tak, aby najstaršie transakcie s veľkým počtom potvrdení boli do blockchainu zaradené pri najbližšej príležitosti.
Potenciálna reorganizácia blockchainu však predstavuje výzvu pre konečnosť transakcií. Napriek tomu, že transakcia má vysoký počet schválení, je teoreticky možné, že bude z blockchainu dočasne odstránená. K tomu môže dôjsť, ak sa časť reťazca (najnovšie bloky blockchainu) nahradí alternatívnou verziou. Bloky v tejto novej čiastkovej verzii reťazca môžu obsahovať iný súbor transakcií. Zvýšenie konečnosti transakcií preto zahŕňa zmenu konsenzu, aby sa zabránilo reorganizácii blockchainu, alebo úpravu pravidiel, ktoré odrážajú počet schválení transakcií.
Na obrázku nižšie môžete vidieť neželanú reorganizáciu blockchainu. TX1 v hornom reťazci mal 4 schválenia a jedno potvrdenie (BLOCK 2). Napriek tomu nakoniec zvíťazil dolný reťazec, v ktorom sa nenachádza transakcia TX 1.
Konečnosť transakcie možno zvýšiť tým, že uzly sa počas jej šírenia sieťou zhodnú na jej začlenení do blockchainu. To je možné vďaka modelu UTxO, keďže validácia transakcie si vyžaduje len overenie existencie vstupných UTxO (ich prítomnosť v množine UTxO), čo znamená, že sú spendovateľné.
Nižšie v článku si ukážeme, ako je teoreticky možné dosiahnuť rýchlejšiu finalizáciu transakcií pred tým, ako sieť vytvorí ďalší blok.
Okrem toho je možné finalizáciu zvýšiť urýchlením konsenzu o novo pridanom bloku v rámci siete. To sa dá dosiahnuť tak, že uzly hlasujú o bloku buď pred jeho pridaním do blockchainu, alebo krátko po ňom.
Vstupní schvaľovatelia
Input Endorsers je plán na zlepšenie škálovateľnosti systému Cardano. Toto zlepšenie možno považovať za formu hlasovania pred pridaním bloku (konsenzuálneho bloku) do blockchainu.
Input Endorsers používa 3 typy blokov: Input Blocks (IB), Endorsement Blocks (EB) a Ranking Blocks (RB). Každý typ bloku sa bude raziť s inou frekvenciou. Niektoré bloky môžu byť razené v tom istom slote. Vstupné bloky sa budú raziť s najrýchlejšou frekvenciou.
Vstupné endory sledujú všetky predložené transakcie a spájajú tieto transakcie do vopred zostavených blokov. Hlavným účelom funkcie Input Endorser je oddeliť výber transakcií od výroby blokov.
V tomto modeli by transakcie mohli zbierať súhlasy na svojej ceste do mem-poolov. Input Endorsers totiž do konsenzu začleňujú prvky paralelizmu a súbežnosti pri zachovaní linearity blockchainu.
Algoritmus Input Endorsers uľahčí prípravu veľkého počtu transakcií počas fázy výberu transakcií, pretože umožňuje súbežnú účasť viacerých uzlov v sieti. Uzly Endorser overujú a predbežne schvaľujú transakcie, čo pomáha znižovať výpočtové zaťaženie a nároky na šírku pásma producentov zaraďovacích blokov a zároveň zvyšuje rozmanitosť a dostupnosť fondu transakcií. Okrem toho urýchľujú potvrdzovanie transakcií, ktoré ešte len majú byť začlenené do reťazca, tým, že poskytujú overiteľný dôkaz o schválení.
Nasadenie vstupných schvaľovateľov je možné výlučne vďaka modelu UTxO, pretože umožňuje uzlom nezávisle potvrdzovať transakcie. Jediná linearita, ktorú je potrebné v systéme zachovať, je na úrovni radenia blokov, vzhľadom na to, že blockchain je lineárna postupnosť blokov. Poradie transakcií v rámci bloku vrátane blokov poradia je nepodstatné. Zaujímavé je, že rankingové bloky neobsahujú transakcie, ale iba odkazy na ne prostredníctvom schvaľovacích blokov.
Na obrázku sú znázornení používatelia, ktorí predkladajú transakcie odkazujúce na vstupné UTxO (znázornené ako červené UTxO) z aktívnej množiny UTxO (globálny stav). Tieto transakcie prechádzajú paralelným overovaním a následne sú začlenené do vstupných blokov. Uzly môžu tieto vstupné bloky schvaľovať súbežne. Systém zachováva linearitu a najvyššiu úroveň validácie, ktorá chráni pred útokmi dvojitého míňania a podobne, na najvyššej úrovni konsenzu, kde sú Ranking Blocks pripojené k blockchainu.
S každým novo pripojeným blokom k blockchainu sa mení aj globálny stav. Ako bolo popísané vyššie, spotrebované UTxO sú zo súboru UTxO odstránené a zároveň sú do neho vložené nové UTxO (zelené UTxO z transakcií).
Poznámka: Na obrázku vyššie je zobrazená len spotreba UTxO, nie vkladanie nových UTxO do množiny UTxO.
Ochrana proti útoku dvojitého míňania
Ochrana proti útokom dvojitého míňania je jedným z faktorov, ktoré obmedzujú škálovateľnosť a paralelné spracovanie transakcií. Vstupom pre overovanie transakcií je globálny stav. Uzol overuje transakcie v kontexte aktuálneho globálneho stavu, ktorý udržiava.
Účtovný model zásadne ovplyvňuje to, ako uzly pracujú s globálnym stavom a aké majú možnosti, pokiaľ ide o paralelizáciu validácie transakcií a škálovateľnosť.
V kontexte modelu UTxO môže dôjsť k útoku dvojitým výdavkom, keď používateľ odošle dve transakcie, ktoré odkazujú na ten istý vstupný UTxO. Je to podobné, ako keby ste sa pokúšali dvakrát minúť tie isté peniaze. Sofistikovaný útočník môže do siete odosielať transakcie prostredníctvom rôznych uzlov, t. j. na rôznych miestach siete. To znamená, že obe transakcie bude určitá skupina uzlov považovať za platné, kým nepríde ďalšia transakcia, ktorá minie to isté vstupné UTxO. Vtedy nastane konflikt.
V ideálnom scenári sa útok dvojitého míňania identifikuje pri najbližšej príležitosti. Jedna transakcia bude začlenená do nového bloku, zatiaľ čo druhá bude zamietnutá. Transakcia, ktorá je zahrnutá, ovplyvní globálny stav. Spotrebované UTxO sa stane nespotrebovateľným, čím sa druhá transakcia stane trvalo neplatnou, pretože sa vzťahuje na už spotrebované UTxO.
Vďaka implementácii vstupných schvaľovacích blokov sa útok dvojitého míňania môže potenciálne odhaliť vo fáze vstupných blokov alebo schvaľovacích blokov. Aj keď k tejto detekcii nedôjde, uzol útok určite identifikuje počas konštrukcie Bloku hodnotenia.
Obrázok ilustruje pokus o útok dvojitým míňaním. Transakcia TX 1 je umiestnená do iného Vstupného bloku v porovnaní s transakciou TX 2. Následne sú obe transakcie zaradené do samostatných Blokov schválenia. V tejto fáze môže sieť potenciálne identifikovať konfliktné transakcie a jednu z nich vyradiť. Ak sa tak však nestane, konflikt sa vyrieši počas konštrukcie bloku hodnotenia. Uzol zodpovedný za zostavenie Ranking Block disponuje všetkými potrebnými informáciami na odhalenie konfliktných transakcií a vyriešenie problému.
Všimnite si, že systém uľahčuje paralelné spracovanie transakcií a zároveň zachováva schopnosť deterministicky riešiť konflikty a znemožniť útoky dvojitého míňania. Väčšina transakcií je začlenená do bloku hodnotenia, ale transakcie v konflikte nemajú šancu prejsť overením.
Predstavte si zlepšenie, pri ktorom konečnosť transakcií nezávisí od počtu potvrdení na úrovni bloku Ranking, ale skôr od počtu potvrdení. To znamená, že konečnosť by bola približne úmerná rýchlosti šírenia transakcií v sieti. Uzol, ktorý používateľ využil na odoslanie transakcie do siete, sa musí dozvedieť o počte potvrdení. To si vyžaduje mechanizmus na šírenie blokov potvrdení. Uzol, ktorý inicioval transakciu, dostane blok schválenia a bude v ňom sledovať počet schválení transakcie používateľa. Táto informácia sa môže používateľovi zobraziť prostredníctvom peňaženky alebo cez prieskumníka blockchainu. Ak transakcia získala schválenia od, hypoteticky, 51 % podielu a bolo takmer isté, že neexistuje žiadna konfliktná transakcia, transakcia by sa teoreticky mohla považovať za konečnú. Konečnú konečnosť by však transakcia dosiahla až vtedy, keď by sa stala súčasťou bloku Ranking.
Model UTxO a rozdeľovanie
Sharding je kľúčová technológia, ktorá zvyšuje škálovateľnosť blockchainov. Sieť blockchainu je rozdelená na menšie časti alebo podsiete, známe ako “shards”. Celková výpočtová a úložná záťaž sa rozdelí na shardy.
Sharding je forma paralelizmu v systéme. Každý shard pracuje nezávisle a môže spracovávať svoj vlastný súbor transakcií. Toto paralelné vykonávanie transakcií zvyšuje celkovú účinnosť a priepustnosť systému.
Každý oddiel si udržiava svoju časť globálneho stavu. Tento stav sa nazýva lokálny stav. Globálny stav celého blockchainu je potom súhrnom všetkých týchto lokálnych stavov.
Dôležitým aspektom shardingu je komunikácia medzi jednotlivými shardmi. Vzťahuje sa na proces výmeny transakcií alebo informácií medzi rôznymi shardmi. Je to kľúčové, pretože priepustnosť sharded blockchainovej siete je výrazne ovplyvnená cross-shard komunikáciou.
Model UTxO je pre sharding výhodnejší ako model založený na účtoch.
V kontexte modelu UTxO slúži transakcia ako základná jednotka validácie. Transakcia je jednotka, ktorú môže nezávisle validovať viacero strán súčasne. Výsledok týchto validácií bude vždy identický. Cardano vykonáva validácie transakcií deterministicky. Viacero strán môže validovať transakcie paralelne a v ľubovoľnom poradí, bez ohľadu na blok, teda bez ohľadu na to, kedy budú transakcie začlenené do bloku a bez ohľadu na poradie transakcií v rámci bloku.
Naopak, v modeli Etherea založenom na účtoch je blok primárnou jednotkou validácie. Transakcie sú navzájom závislé. Transakcia v systéme Ethereum nemôže byť validovaná izolovane, ale len pokiaľ ide o prevládajúci globálny stav. Globálny stav v systéme Ethereum možno konceptualizovať ako postupnosť transakcií. Výsledok validácie transakcie je závislý od jej pozície v rámci tejto sekvencie.
Rozdielnosť účtovných modelov výrazne ovplyvňuje implementáciu shardingu.
Zjednodušene povedané, uvažujme sieť Cardano ako jeden shard. Ak by sme mali 10 shardov, bolo by to podobné, ako keby vedľa seba fungovalo 10 sietí Cardano. Teoreticky by to mohlo viesť k desaťnásobnému zvýšeniu priepustnosti siete. V praxi by to však nemuselo byť možné kvôli faktorom, ako je komunikácia medzi jednotlivými shardmi, potreba zabezpečiť konzistenciu a bezpečnosť údajov, latencia siete a réžia správy (ako je vyrovnávanie záťaže medzi shardmi, riadenie pripojenia a odchodu uzlov a smerovanie transakcií).
V prípade blockchainov, ktoré používajú model UTxO, je implementácia shardingu relatívne jednoduchá, keďže globálny stav prirodzene umožňuje paralelizmus a transakcie sa môžu overovať nezávisle v rámci každého shardu.
Model UTxO má svoje výhody, pokiaľ ide o komunikáciu medzi jednotlivými shardmi, keďže je relatívne jednoduché vytvoriť transakciu, ktorá vyžaduje validáciu z dvoch shardov.
Predstavte si transakciu, ktorá má vstupné UTxO z globálneho stavu SHARD 1 a vytvára výstupné UTxO v globálnom stave SHARD 2. Táto transakcia by bola súčasťou blockchainu v oboch shardoch. Výhodou je, že tu môže dôjsť k validácii bez ohľadu na blok, t. j. bez ohľadu na poradie transakcie v bloku.
V každom sharde so vstupnými schvaľovačmi by transakcia medzi shardmi mohla získať schválenia (endorsementy) krátko po svojom predložení. Transakcia by bola predložená v SHARD 1, ktorý by ju okamžite postúpil do SHARD 2. V oboch shardoch by transakcia dostala schválenia súčasne. V oboch častiach by transakcia mohla potenciálne získať podporu napríklad 51 % podielu vo veľmi krátkom čase. Musel by existovať mechanizmus na zdieľanie blokov potvrdení medzi jednotlivými oddielmi (stačila by podmnožina údajov týkajúcich sa transakcií medzi reťazcami). V čase, keď by každý zo shardov vložil transakciu do rebríčkového bloku, by daný shard mohol s vysokou mierou istoty očakávať, že transakcia bude vďaka vysokému počtu endorsementov vložená do rebríčkového bloku v druhom sharde.
Teoreticky nemusí oddiel 1 čakať na vloženie transakcie do rebríčkového bloku. Samozrejme, len za predpokladu, že bude existovať mechanizmus (a stimuly), ktorý zabezpečí, že transakcia s vysokým počtom potvrdení od väčšiny podielov sa vždy dostane do niektorého z ďalších blokov.
Na obrázku môžete vidieť transakciu TX 1, ktorá má vstup UTxO z bloku SHARD 1. Výsledkom transakcie je výstupné UTxO, ktoré je vytvorené v SHARD 2. Dá sa povedať, že hodnota sa prenáša medzi shardmi. Transakcia sa dostane do vstupného bloku v SHARD 1. SHARD 1 postupuje transakciu do SHARD 2. TX 1 sa dostane do Vstupného bloku v SHARD 2. Transakcia TX 1 sa postupne dostane do Blokov schvaľovania v oboch shardoch a nakoniec do Blokov hodnotenia. Hneď ako sa transakcia vloží do bloku Ranking Block, zmení sa lokálny stav v danom sharde. Vstupný UTxO sa odstráni z lokálneho stavu SHARD 1. V lokálnom stave SHARD 2 sa vytvorí nový UTxO.
Model UTxO ponúka niekoľko výhod vrátane jeho použiteľnosti pre vstupné schvaľovacie zariadenia aj sharding. Uvedený príklad ilustruje integráciu týchto dvoch technológií. Po zavedení Input Endorsers má sharding potenciál zvýšiť škálovateľnosť Cardana. Input Endorsers však musia urýchliť finalizáciu transakcií, aby sa predišlo pomalej komunikácii medzi hardmi a zabezpečila sa integrita globálneho stavu.
Prečo je ťažké implementovať sharding v Ethereu?
Ethereum funguje na modeli založenom na účtoch, kde má každý účet priradený stav. Globálny stav Etherea je v podstate databáza všetkých účtov a ich aktuálnych zostatkov aktív. S každým novým blokom sa stav systému aktualizuje na základe transakcií v rámci daného bloku.
Transakcie sa spracúvajú tak, že sa skontroluje, či je na účte odosielateľa dostatok prostriedkov. Ak je úspešná, zostatok odosielateľa sa zníži, zatiaľ čo zostatok príjemcu sa zvýši. Virtuálny stroj Ethereum (EVM) potom vypočíta nový stav z aktuálneho stavu a transakcie, ktorý sa stane základom pre ďalšiu transakciu. Tento nepretržitý vývoj stavu blockchainu znamená, že poradie transakcií je pre validáciu kľúčové.
Každá transakcia môže potenciálne zmeniť stav akéhokoľvek účtu a jej výsledok môže závisieť od poradia jej spracovania. Na zachovanie konzistentnosti a zabránenie dvojitému výdavku sa globálny stav počas každého overovania “uzamkne”, čím sa umožní spracovanie len jednej transakcie v danom čase. Tento mechanizmus uzamykania je nevyhnutný pre integritu systému, pretože zabraňuje tomu, aby súbežné transakcie spôsobili nekonzistentnosť alebo dvojité čerpanie.
Vstupmi transakcií sú zostatky na účtoch, ktoré sú zdieľaným zdrojom. To znamená, že zostatok pri predložení transakcie sa môže líšiť od zostatku pri validácii, čím sa vstup transakcie stáva nedeterministickým, na rozdiel od modelu UTxO.
V Ethereu sú zostatky trvalými entitami, ktoré môžu byť transakciami kedykoľvek modifikované, ale dve transakcie nemôžu súčasne modifikovať ten istý zostatok.
Na obrázku môžete vidieť, ako používatelia zadávajú 5 transakcií. Transakcie je možné predkladať paralelne. Všimnite si, že niekoľko transakcií upravuje ten istý zostatok. Napríklad TX 1 a TX 2 odčítajú hodnotu od toho istého zostatku. Transakcie TX 3 a TX 4 pridávajú hodnotu k tomu istému zostatku. STAV 1 až STAV 4 predstavujú postupné spracovanie transakcií, a teda postupnú aktualizáciu globálneho stavu. Globálny stav tvoria rovnaké zostatky, t. j. trvalé objekty, ktorých stav sa môže prostredníctvom transakcií meniť mnohokrát za sebou.
Predstavte si, o koľko komplikovanejšia je komunikácia medzi jednotlivými časťami systému, ak má transakcia súčasne zmeniť jeden zostatok v SHARD 1 a druhý v SHARD 2. Poradie transakcií v bloku Ethereum zohráva dôležitú úlohu pri výsledku validácie. Pri súčasnej implementácii EVM by bolo potrebné, aby oba shardy zaradili transakciu do bloku a navzájom si odovzdali informácie o výsledkoch validácie. Nemá zmysel, aby v SHARD 1 bola validácia transakcie úspešná a hodnota bola odpočítaná zo zostatku, zatiaľ čo v SHARD 2 by validácia transakcie zlyhala, t. j. hodnota by nebola pripísaná na zostatok. Komunikácia medzi jednotlivými shardmi výrazne obmedzuje možnosť vytvoriť blok v každom sharde.
Na obrázku vidíte transakciu TX 1, ktorá je po odoslaní vložená do mem-poolu. Potom je z mem-poolu vložená do BLOKU 1. Validácia transakcie TX 1 mení aktuálny lokálny stav v SHARD 1. SHARD 1 však potrebuje poznať výsledok validácie v SHARD 2. SHARD 1 preto komunikuje s SHARD 2 o výsledku validácie transakcie v BLOKU 2 (SHARD 2). SHARD 2 teda musí vložiť transakciu TX 1 do BLOKU 2 a vykonať validáciu. Potom môže výsledok validácie oznámiť SHARD 1. Všimnite si, že SHARD 1 musí poznať výsledok validácie v SHARD 2 pred pridaním ďalšej transakcie do svojho BLOKU 1.
Uvedený príklad je skutočne zjednodušenou (naivnou) implementáciou shardingu. Poukazuje na významné problémy, ktorým čelí tím Ethereum pri implementácii shardingu so súčasným mechanizmom konsenzu.
Zachovanie atomicity transakcií počas komunikácie medzi jednotlivými blokmi v blockchaine založenom na účtoch je zložitá úloha. Je nevyhnutné zabezpečiť, aby sa transakcia buď úplne vykonala, alebo vôbec nevykonala, aby sa zachovala integrita systému.
Na riešenie tohto problému boli navrhnuté rôzne stratégie a protokoly vrátane dvojfázových commit protokolov. Tieto riešenia však tiež predstavujú svoje kompromisy a zložitosť. Je pozoruhodné, že niekoľko projektov úspešne implementovalo sharding v rámci blockchainu s využitím modelu založeného na účtoch.
Záver
Zmena mechanizmov konsenzu je len jednou z metód na zvýšenie škálovateľnosti siete. Škálovateľnosť možno zlepšiť aj prostredníctvom riešení druhej vrstvy, viacvrstvovej architektúry alebo zvýšením efektivity. Napríklad Plutus V2 je efektívnejší ako jeho predchodca Plutus V1, čo vedie k úspore blokového priestoru. Táto efektívnosť umožňuje uskutočniť viac transakcií na blok, čím sa zvyšuje priepustnosť siete. Vstupné endorsery však môžu poskytnúť podstatnejšie zlepšenie škálovateľnosti ako len zvýšenie efektívnosti.
Niektorí členovia komunity Cardano sa domnievajú, že dôraz by sa mal klásť skôr na zvýšenie škálovateľnosti prostredníctvom kryptografie ZK než na Input Endorsers. Cardano zahrnie kryptografiu ZK prostredníctvom tvrdého forku Chang. Vďaka determinizmu Cardana bude možné skonštruovať ZK rollupy, ktoré nevyžadujú sekvencery.
Model UTxO je veľmi vhodný pre Input Endorsers alebo sharding, keďže globálny stav zložený z jednorazových objektov je dobre paralelizovateľný. Niekoľko uzlov v sieti môže paralelne potvrdzovať transakcie nezávisle od seba, a to aj v prípade shardingu.
Pôvodný článok: https://cexplorer.io/article/exploring-scalability-options-of-the-utxo-model