Výhody determinizmu pre ZK Rollups na Cardane
Transakcie na Cardano zriedkavo zlyhávajú, pretože validácia nezávisí od zdieľaného globálneho stavu. Toto je kľúčový rozdiel medzi modelom UTxO v Cardane a modelom založeným na účtoch v Ethereu. Prístup Cardano umožňuje predvídateľné a deterministické overovanie transakcií a vykonávanie skriptov. Výsledok je vopred známy, čo je obzvlášť výhodné pri implementácii ZK Rollups. Tie sa dajú realizovať bez potreby centralizovaných sekvencerov. V tomto článku sa najprv ponoríme do vysvetlenia determinizmu a dôvodov, prečo môžu transakcie na Ethereu zlyhať. Potom vysvetlíme základné princípy ZK Rollups na Ethereu. Následne preskúmame, ako by sa ZK Rollups mohli líšiť v rámci ekosystému Cardano.
Úvod do ZK Rollups
Zero-Knowledge Rollup (ZK Rollup) je riešenie škálovania na druhej vrstve (L2). Dokáže prevziať časť stavu (typicky zostatky používateľských účtov) z vrstvy 1 (L1) a preniesť ju do vrstvy L2. To umožňuje, aby sa v L2 uskutočňovali zložité výpočty, ktoré by inak boli pomalé a náročné na zdroje, keby sa vykonávali v reťazci (t. j. v L1). Inými slovami, výpočty sa uskutočňujú mimo reťazca, čo poskytuje efektívne riešenie škálovania.
Zmeny stavu, ako napríklad overovanie transakcií a vykonávanie inteligentných kontraktov, sa počítajú mimo reťazca a následne sa overujú v reťazci pomocou dôkazov nulovej znalosti (Zero-Knowledge Proofs alebo ZKP). ZK Rollups výrazne zvyšujú priepustnosť transakcií a minimalizujú transakčné náklady, pričom všetky zdedia bezpečnosť siete základnej vrstvy, ku ktorej sú pripojené na vyrovnanie.
ZK Rollups pravidelne odosielajú malú podmnožinu údajov do vrstvy 1 (L1). Tieto údaje sú výsledkom spracovania veľkého objemu údajov vo vrstve 2 (L2). Týmto spôsobom ZK Rollups efektívne využívajú odolnosť voči cenzúre a bezpečnosť základnej vrstvy na konečné zúčtovanie transakcií.
Potreba kontextu pri overovaní transakcií
V každom finančnom systéme si overenie transakcie - prevodu hodnoty medzi dvoma alebo viacerými účastníkmi - vyžaduje určitý kontext alebo stav na overenie. Systém musí okrem iného overiť, či má odosielateľ na účte dostatok finančných prostriedkov. Musí tiež zabezpečiť, aby používatelia nevydali tie isté finančné prostriedky viac ako raz, čím sa rieši známy problém dvojitej spotreby.
Vstupom pre overenie je transakcia a stav. Výstupom je rozhodnutie, či je transakcia v kontexte stavu platná alebo nie.
Blockchain je distribuovaný finančný systém, v ktorom sa spracovanie transakcií alebo prechody stavov dosahujú pridávaním nových blokov na koniec blockchainu. Každý blok obsahuje viacero transakcií.
Ako je znázornené na obrázku, globálny stav sa mení s každým novo pridaným blokom. Posledná zmena stavu nastala po pridaní bloku N+4, čím sa aktuálny globálny stav stal N+4.
Cardano a Ethereum používajú na overovanie transakcií rôzne kontexty.
V prípade Etherea je validácia transakcií alebo inteligentných kontraktov podmienená globálnym stavom v konkrétnom okamihu. Tento globálny stav zahŕňa aktuálny stav všetkých účtov vrátane ich zostatkov a stav všetkých existujúcich inteligentných zmlúv. Transakcie v rámci bloku sú usporiadané v pevnom poradí a každá transakcia má potenciál zmeniť globálny stav. V dôsledku toho môžu výsledok vykonania transakcie ovplyvniť transakcie, ktoré boli vykonané pred ňou v rámci toho istého bloku.
Ako je znázornené na obrázku, najnovšie pridaný blok je N+3, čím sa globálny stav stáva N+3. Sieť sa pokúsi prejsť do nového stavu N+4, a tak sa vytvorí nový blok N+4. Je dôležité poznamenať, že validácia transakcie v bloku N+4 (označená zeleným rámčekom) závisí od globálneho stavu. Po začlenení transakcie do bloku N+4 je možné validovať nasledujúcu transakciu, ktorá bude závisieť od globálneho stavu aj od predchádzajúcej transakcie.
Jedným z dôvodov, prečo môžu transakcie Etherea zlyhať, je nepredvídateľnosť globálneho stavu v čase validácie transakcie. Pri vytváraní transakcie nie je možné predvídať jej výsledok. Globálny stav počas validácie transakcie sa môže líšiť od stavu počas konštrukcie transakcie. V medziobdobí medzi zadaním transakcie a jej validáciou sa mohli zmeniť zostatky na účtoch účastníkov transakcie. Tieto zmeny zostatkov na účtoch by mohli zabrániť vykonaniu transakcie podľa pôvodného zámeru zadávateľa.
Obrázok znázorňuje obdobie medzi predložením transakcie TX 10, ku ktorému došlo približne v bloku N+2 (stav +2), a následnou validáciou transakcie po validácii transakcie TX 9. Počas tohto obdobia došlo k mnohým zmenám v globálnom stave. Validácia transakcie TX 10 je závislá od globálneho stavu aj od zmien, ktoré zaviedla transakcia TX 9. Transakcia TX 9 alebo akákoľvek predchádzajúca zmena by potenciálne mohla spôsobiť zlyhanie transakcie TX 10.
Transakcie Ethereum možno charakterizovať ako stavové.
Naproti tomu Cardano funguje bez globálneho stavu a využíva model UTxO. V tomto modeli je validácia transakcie založená na jej vstupoch a výstupoch, čím sa eliminuje potreba referencie globálneho stavu. Každá transakcia spotrebúva určité UTXO ako vstupy a generuje nové UTXO ako výstupy. Platnosť transakcie závisí výlučne od toho, či sú spotrebované UTXO platné a nespotrebované a či celková hodnota vstupov zodpovedá celkovej hodnote výstupov.
Validácie transakcií sú navzájom nezávislé. UTxOs sú nemenné objekty a je možné k nim zabezpečiť výlučný prístup. V rámci blokovej validácie je jednoduché zabezpečiť, aby sa každý vstupný UTxO spotreboval len raz a v celom rozsahu. Poradie transakcií v rámci bloku Cardano je v kontexte stavu nepodstatné.
Na obrázku je znázornená sieť, ktorá generuje nový blok N+4, obsahujúci transakcie TX 9 a TX 10. Nové transakcie TX 9 a TX 10 spotrebujú staré výstupné UTxO (znázornené zelenými rámčekmi) na vytvorenie vstupných UTxO (znázornené červenými rámčekmi). Poradie transakcií v rámci bloku je irelevantné, pretože transakcie sú nezávislé a navzájom sa neovplyvňujú. Transakcia TX 10, odoslaná krátko po vytvorení bloku N+2, môže spotrebovať UTxO z transakcie v rámci tohto bloku. Pridanie nového bloku N+4 má za následok vytvorenie nových UTxO zo vstupných UTxO, čo znamená zmenu stavu.
Transakcie Cardano sú vo svojej podstate bezstavové. Vstupy aj výstupy sú známe v čase odoslania transakcie. To umožňuje lokálnu validáciu transakcie pred jej odoslaním, čím sa zabezpečí, že pravdepodobne prejde validáciou siete. Schopnosť minúť vstupné UTxO (ich existencia a schopnosť minúť ich so správnym podpisom) sa dá overiť lokálne, rovnako ako výsledok vykonania skriptu (ktorý závisí od vstupných údajov pridaných do transakcie predkladateľom). To dáva predkladateľovi vysokú mieru istoty, že transakcia nezlyhá.
Na rozdiel od Etherea Cardano funguje predvídateľne a deterministicky. Tento zásadný rozdiel výrazne ovplyvňuje používanie ZK Proofs.
Je dôležité objasniť, že Ethereum overuje transakcie deterministicky v tom zmysle, že pri rovnakých vstupoch (údaje o transakcii) a rovnakom stave (aktuálny globálny stav blockchainu Ethereum) EVM vždy vytvorí rovnaký výstup. Výsledok validácie transakcií je však nedeterministický. Výsledok validácie sa môže líšiť od očakávaní používateľa.
Počas zadávania transakcie používateľ nemôže predvídať, aký bude globálny stav v čase validácie transakcie. Preto nie je možné odhadnúť výsledok validácie s vysokou mierou istoty. Možno ho len predpokladať.
ZK Rollup udržiava stav
V riešeniach 2. vrstvy, ako sú ZK Rollups, je validácia transakcií kľúčová na zachovanie integrity systému. Patria sem ochranné opatrenia proti dvojitým výdavkom a neoprávnenému vytváraniu nových tokenov.
Podobne ako vrstva 1 v systéme Ethereum, aj ZK Rollups (L2) zachovávajú globálny stav. Tento globálny stav sa aktualizuje pri každej transakcii, vďaka čomu je poradie transakcií významné.
Udržiavanie stavu v ZK Rollups je podstatne menej zložité ako v blockchaine Ethereum, predovšetkým preto, že naň zvyčajne dohliada centralizovaný subjekt, známy ako sekvencer. V dôsledku toho môže zostatky na používateľských účtoch spravovať jediný server.
Používatelia, ktorí chcú využívať ZK Rollups, musia zablokovať tokeny, ktoré boli vyťažené na Ethereum. Dosiahnu to využitím inteligentného kontraktu Ethereum, ktorý uzamkne tokeny a vygeneruje ekvivalentné množstvo v druhej vrstve.
V druhej vrstve môžu používatelia zadávať transakcie. Tieto transakcie menia zostatky na účtoch používateľov v druhej vrstve. Je však dôležité poznamenať, že všetky zmeny stavu, ku ktorým dochádza vo vrstve 2, nemajú v danom okamihu vplyv na globálny stav Etherea.
Globálny stav v rámci siete Ethereum sa mení nezávisle od stavu vrstvy 2.
Ak by používatelia chceli opustiť vrstvu 2 a odomknúť tokeny zabezpečené v inteligentnom kontrakte Ethereum, musia iniciovať výber zo ZK Rollup. Výsledkom tejto akcie je spálenie ich tokenov vo vrstve 2 a odomknutie ekvivalentného množstva tokenov vo vrstve 1. Počas tohto procesu sa riadne premietnu všetky zmeny vo vlastníctve tokenov, ku ktorým došlo vo vrstve 2.
Na stiahnutie tokenov zo ZK Rollup je potrebné predložiť ZK Proof.
Keď chce používateľ previesť svoje tokeny zo ZK Rollup späť do Etherea, iniciuje žiadosť o výber. V tejto žiadosti uvedie množstvo tokenov, ktoré má v úmysle vybrať, a adresu Etherea, na ktorú sa majú tokeny poslať.
Následne systém ZK Rollup vygeneruje dôkaz Zero-Knowledge (ZK), ktorý túto žiadosť o výber potvrdí.
Tento dôkaz v podstate potvrdzuje, že “používateľ skutočne vlastní tieto tokeny na 2. vrstve a neboli minuté”.
Tento dôkaz ZK sa potom predloží inteligentnej zmluve na Ethereum. Ak inteligentná zmluva overí dôkaz ako platný, požadované množstvo tokenov sa odomkne z inteligentnej zmluvy a prevedie sa na adresu používateľa na Ethereum.
Ak to zhrnieme:
Ethereum uzamkne tokeny používateľov v dôsledku transakcie vkladu, čo súčasne ovplyvní globálny stav Etherea aj stav ZK Rollup. Používatelia môžu využívať tokeny len v druhej vrstve. Transakcie uskutočnené v ZK Rollup ovplyvňujú predovšetkým stav vrstvy 2. Ďalej si ukážeme, ako zmeny stavu v ZK Rollup ovplyvňujú aj stav vrstvy 1. Ak chcú používatelia previesť tokeny z vrstvy 2 späť do Etherea, musia zadať transakciu výberu, ktorá odomkne tokeny vo vrstve 1. Táto akcia opäť mení stavy vrstvy 1 aj vrstvy 2.
Hoci sú zostatky v Ethereum a ZK Rollup prepojené, nie sú vždy rovnocenné a fungujú do istej miery nezávisle.
Ako funguje ZK Rollup?
Vo vrstve 2 si každý používateľ vedie účet so zostatkom. Používatelia zadávajú transakcie, ktoré môžu zahŕňať prevody hodnoty medzi účtami. Tieto transakcie sú zhromažďované a sekvencované centralizovaným subjektom známym ako sekvencér.
Sekvencér vytvorí novú dávku transakcií, ktorá predstavuje skupinu jednotlivých transakcií, ktoré boli spracované mimo reťazca.
Používateľské transakcie nie sú zahrnuté do koreňového súboru nového stavu ani do dôkazu ZK. Namiesto toho sa ukladajú samostatne vo vrstve dostupnosti údajov, ktorá je úložiskom mimo reťazca. Tieto údaje sú kľúčové pre rekonštrukciu stavu Rollup a ich uloženie mimo reťazca zvyšuje škálovateľnosť.
Na základe dávky sekvenátor vypočíta nový globálny stav, známy aj ako koreň stavu, a dôkaz ZK.
V kontexte ZK kryptografie vrstva 1 vystupuje ako overovateľ a vrstva 2 ako preukazovateľ.
Sekvencer pravidelne odosiela novú transakciu do Etherea. Každá transakcia obsahuje dôkaz ZK a nový koreň stavu (globálny stav).
Koreň stavu je kryptografický záväzok nového stavu ZK Rollup po spracovaní dávky transakcií. Znamená čistý účinok všetkých transakcií v dávke.
ZK dôkaz je kryptografický dôkaz, ktorý potvrdzuje platnosť prechodu stavu reprezentovaného dávkou. Overuje, že dávka transakcií bola spracovaná správne a jej výsledkom je nový globálny stav.
Dôkaz ZK aj nový globálny stav závisia od dávky transakcií a sú od nej kryptograficky odvodené. Ponúkajú bezpečný a efektívny spôsob reprezentácie dávky transakcií v hlavnom reťazci bez potreby spracovávať každú transakciu v reťazci.
Inteligentný kontrakt (verifikátor) Ethereum nevyžaduje na overenie dávku transakcií. Potrebuje len dôkaz ZK a koreň nového stavu. Ethereum potrebuje len potvrdiť, že dávka ako celok je platná (čo potvrdzuje dôkaz ZK) a pochopiť čistý vplyv na zostatok každého účtu.
Na obrázku môžete vidieť transakcie používateľov úplne hore. Sekvenátor (dôkaz ZK Rollup) vezme posledné transakcie používateľov, zoradí ich a vytvorí dávku transakcií. Z dávky vygeneruje ZK Proof a nový globálny stav (state root) (červené šípky predstavujú kryptografickú závislosť od dávky) a odošle ho Ethereu na overenie v transakcii. Ethereum (overovateľ ZK) potvrdí a uloží transakciu do blockchainu, čím zmení jeho globálny stav.
Ethereum uchováva ZK Proof a nový globálny stav odoslaný sekvencerom, čím zabezpečuje integritu ZK Rollup.
Virtuálny stroj Ethereum (EVM) môže pracovať v rámci ZK Rollup. To znamená, že vývojári môžu písať inteligentné kontrakty rovnakým spôsobom, ako by to robili pre hlavnú sieť Ethereum. Táto kompatibilita s EVM uľahčuje prenos decentralizovanej aplikácie (DApp) z Etherea do ZK Rollup.
Tým sa v podstate presunie vykonávanie inteligentných kontraktov DApp z Etherea na ZK Rollup. Inteligentné kontrakty síce naďalej dodržiavajú pravidlá EVM, ale ich vykonávanie sa stáva škálovateľnejším a efektívnejším, pretože prebieha na vrstve 2.
Jednoduchosť migrácie inteligentných kontraktov na riešenia na 2. vrstve je jedným z dôvodov, prečo ZK Rollup (a iné riešenia na 2. vrstve) prijímajú model založený na účtoch podobný modelu, ktorý používa Ethereum.
Výhody determinizmu Cardano
Komunita Etherea aktívne skúma rôzne metódy na zvýšenie škálovateľnosti a efektívnosti, pričom technológia Zero-Knowledge je jedným zo sľubných skúmaných riešení. Zavedenie sekvencerov v ZK Rollups je kľúčovým mechanizmom na riadenie a zoraďovanie transakcií v sieti 2. vrstvy.
Sekvencéry slúžia ako riešenie otázky usporiadania a determinizmu transakcií, pričom zohrávajú kľúčovú úlohu vo fungovaní ZK Rollups. Používanie sekvencerov však zavádza určitú úroveň centralizácie, čo vyvoláva obavy v kontexte princípu decentralizácie blockchainu. Sekvencér ako jediný subjekt s právomocou prikazovať transakcie by sa potenciálne mohol stať miestom zlyhania alebo manipulácie.
Overovanie transakcií v systéme Cardano je deterministické, čo umožňuje vytvárať transakcie, ktorých výsledok je známy a predvídateľný v čase vytvárania transakcie. Je to možné, pretože validácia transakcií v systéme Cardano sa spolieha výlučne na vstupy a výstupy transakcie, a nie na akýkoľvek globálny stav.
V kontexte dôkazov ZK je táto deterministická povaha výhodná. Pri vytváraní dôkazu ZK v podstate dokazujete, že poznáte tajný vstup, ktorý po podrobení určitému výpočtu vedie k známemu výstupu. Keďže výpočet je deterministický, môžete pri zostavovaní ZK dôkazu predvídať výstup.
Vzhľadom na to, že pri konštrukcii transakcie sú známe všetky znalosti o vynaložených UTxO, vyrobených UTxO a spustených validátoroch (inteligentných kontraktoch), je možné vytvoriť ZK dôkaz na preukázanie, že validátor (zakódovaný ako aritmetický obvod) sa vykonal úspešne.
Dôkaz ZK svedka je možné skonštruovať mimo reťazca ako výsledok zložitejších výpočtov. Validátor v reťazci obsahuje aritmetický obvod, ktorý overuje správnosť akéhokoľvek poskytnutého svedka ZK dôkazu.
Preto sa potreba sekvencera môže znížiť alebo dokonca potenciálne odstrániť. Výpočty mimo reťazca by sa potenciálne mohli vykonávať bez sekvencera vzhľadom na determinizmus transakcií. V Cardano ZK Rollup musí každá transakcia vedieť len o svojich špecifických vstupoch a výstupoch a nemusí komunikovať s globálnym stavom. Inými slovami, výhody modelu UTxO v L1 možno preniesť do L2.
V Ethereu riešenia škálovania ZK dôkazov využívajú sekvencéry na sekvencovanie dávok transakcií deterministickým spôsobom, aby bolo možné poznať stav na vytvorenie požadovaného dôkazu (ZK Proof witness).
Pri konštrukcii transakcií Ethereum nie je k dispozícii dokonalá znalosť príslušného stavu. To spôsobuje, že bez dôveryhodných sekvencerov (operátorov) je prakticky nemožné dôkaz vôbec skonštruovať, pretože stav kontraktu nie je v čase spracovania transakcie známy.
V Cardane však nie je potrebné vedieť, kde sa transakcia v bloku objaví, pretože to, kde sa v bloku objaví, nemá vplyv na stav inteligentného kontraktu. V každom bloku môže do stavu - UTxO’s Datum - zasahovať len jedna transakcia.
Táto deterministická povaha Cardana umožňuje vytvárať dôkazy ZK bez potreby sekvencera. Dokonca je teoreticky možné zaobísť sa bez externej vrstvy dostupnosti dát.
V sieti L2 musí existovať entita (ZK Prover), ktorá bude konštruovať transakcie pre L1. Stav L2 nebude globálny stav ako v Ethereu, ale stav všetkých nezávislých transakcií.
V ZK Rollup môžu UTxO fungovať nezávisle od seba, podobne ako vo vrstve 1. To umožňuje vysokú úroveň paralelizmu a nezávislosti medzi transakciami.
Aj v prípade absencie sekvencera a dávkovania transakcií je pravdepodobne potrebné nejakým spôsobom prenášať stav vrstvy 2 do vrstvy 1, aby sa zabezpečila integrita a konzistentnosť systému. Hoci Cardano nevyžaduje sekvencer na dosiahnutie determinizmu, L2 sa stále spolieha na L1 z hľadiska bezpečnosti.
ZK Rollupy, ktoré využívajú model UTxO, môžu byť na rozdiel od tých v ekosystéme Ethereum ľahšie decentralizované. Deterministická povaha a model UTxO otvárajú cestu novým možnostiam implementácie. Môže byť podstatne jednoduchšie vyvinúť implementáciu ZK Rollup, ktorá je efektívnejšia a decentralizovanejšia, než akú možno dosiahnuť s modelom založeným na účtoch.
Uvidíme, či sa niektorému tímu podarí vytvoriť ZK Rollup, ktorý funguje bez sekvencera a udržiava integritu systému pomocou skriptov validátora a dôkazov ZK.
Záver
Model UTxO spoločnosti Cardano predstavuje niekoľko výhod vrátane deterministických transakcií, silného potenciálu na využitie pre dôkazy ZK, odstránenia potreby sekvencerov a teoretickej možnosti konštrukcie ZK Rollupov bez vrstvy dostupnosti údajov. Tieto výhody z neho robia výhodnejšiu voľbu pre ZK Rollups v porovnaní s modelom Ethereum založeným na účtoch. Nadchádzajúci Changov hard fork zavedie ZK kryptografiu do Cardana, čo bude znamenať začiatok novej kapitoly pre celý ekosystém.
Pôvodný článok: https://cexplorer.io/article/advantages-of-determinism-for-zk-rollups-on-cardano
1 post - 1 participant