🇸🇰 Súbežnosť a iné: Inteligentné zmluvy v Cardane a model eUTXO

Model eUTXO Cardana poskytuje bezpečné a univerzálne prostredie na spracovanie viacerých operácií bez zlyhania systému

Concurrency and all that: Cardano smart contracts and the eUTXO model

Cardano je blockchain založený na UTXO, ktorý využíva inú programovú paradigmu pre decentralizované aplikácie (DApps) ako iné blockchainy založené na účtoch, napríklad Ethereum. Špecifickou príchuťou, ktorú Cardano využíva, je model Extended Unspent Transaction Output (eUTXO) zavedený aktualizáciou Alonzo. eUTXO ponúka väčšiu bezpečnosť umožňujúcu predvídateľnosť nákladov na vykonávanie inteligentných kontraktov (bez nepríjemných prekvapení) a v dôsledku toho ponúka iný prístup k paralelizácii.

Model eUTXO zdedil návrh modelu UTXO (Bitcoin), kde jedna vetva je podľa definície postupnosť transakcií, ktorá vyžaduje postupnosť validácií. Na rozdelenie logiky na rôzne vetvy a presadenie väčšieho paralelizmu je nevyhnutné budovať DApps a iné riešenia pomocou viacnásobných UTXO . To poskytuje výhody z hľadiska škálovania, podobne ako sa u Bitcoinu predpokladá rozdelenie jednej peňaženky na čiastkové peňaženky.

DApps postavené na Cardano nie sú obmedzené na jednu transakciu na blok. V skutočnosti rozpočet bloku (t. j. maximálny počet transakcií, ktoré môže pojať) umožňuje vykonávať stovky jednoduchých transakcií a niekoľko zložitých skriptov. Model eUTXO však umožňuje minúť výstup transakcie len raz. Vzhľadom na to, že používatelia môžu čeliť problémom s konfliktom pri snahe získať prístup k tomu istému UTXO, je dôležité používať mnoho rôznych UTXO. Všimnite si, že je to dôležité, pokiaľ by takýto návrh nemal prospech z prísneho poradia klientov. Sady UTXO možno použiť na implementáciu návrhových vzorov, ktoré zahŕňajú semafory. Okrem toho môžu rôzni používatelia komunikovať s jedným inteligentným kontraktom bez akéhokoľvek zlyhania súbežnosti. Je to preto, že inteligentný kontrakt môže spracúvať množstvo rôznych UTXO, ktoré tvoria jeho aktuálny stav a mimo reťazca metadáta, ktoré umožňujú interpretáciu týchto UTXO.

Robíme veci paralelné

Blockchainy dosahujú nemennosť a transparentnosť spracovania transakcií odlišným spôsobom. Každý blockchainový systém by mal mať súbor vlastností, ktoré spĺňajú stále rastúcu potrebu bezpečného a zároveň rýchleho spracovania operácií, a to

  • Priepustnosť - počet operácií, ktoré systém dokáže vykonať za určitý čas. Týka sa to napríklad počtu transakcií alebo inteligentných kontraktov spracovaných za jednu sekundu.
  • Výkon - ako rýchlo systém pracuje. Výkon meria čas vykonania transakcie alebo inteligentného kontraktu.
  • Škálovateľnosť - schopnosť systému vykonávať viacero operácií bez preťaženia siete alebo ovplyvnenia výkonnostných vlastností.

Zvyšovaním paralelizmu môžeme v konečnom dôsledku zlepšiť priepustnosť systému pri zachovaní rovnakého výkonu jednotlivých operácií, ale tento druh škálovateľnosti bude vždy obmedzený mierou sporu.

Pokiaľ ide o škálovateľnosť, rozlišujeme aj také vlastnosti systému, ako sú konkurencia, paralelizmus a obsah. Súbežnosť je nevyhnutná na to, aby viacerí aktéri mohli postupovať pri plnení určitej úlohy bez toho, aby sa navzájom rušili. Paralelnosť umožňuje takýto postup v rovnakom čase bez akéhokoľvek rušenia. K súpereniu dochádza vtedy, keď sa tieto viaceré subjekty navzájom rušia pri súbežnej alebo paralelnej práci.

Porozumenie súbežnosti

Súbežnosť môže, ale nemusí zlepšiť výkon, priepustnosť alebo odozvu systému. Množstvo súbežnosti obmedzuje maximálny počet súbežných operácií, ktoré možno vykonať.

Na dosiahnutie skutočného zlepšenia výkonu v blockchaine založenom na UTXO by mali byť procesory alebo iné subjekty schopné vykonávať viacero akcií súčasne. Čím vyššia je úroveň súbežnosti, tým vyšší je maximálny možný paralelizmus. Takýto prístup sa potom premieta do zlepšenia výkonu a priepustnosti. Poskytuje tiež významné výhody oproti systémom založeným na účtoch (ako je Ethereum).

Nasadenie DApps na účtovných knihách UTXO je iné

Prístup Cardana k nasadzovaniu DApp je odlišný a preto si vyžaduje učenie a odlišný prístup. Je to ako práca s rôznymi programovacími jazykmi: existuje jeden cieľ - nasadiť riešenie, ale veľa programovacích jazykov, ktoré sa na tento účel dajú použiť.

Maximalizácia súbežnosti je zručnosť, ktorú sa treba naučiť: vývojári musia písať kód spôsobom, ktorý výrazne obmedzuje možnosti vzniku sporných situácií (napr. vyhýbaním sa zdieľaným stavom a náhodným závislostiam). Systém potom musí túto súbežnosť previesť na paralelizmus. Viacerí vývojári už identifikovali spôsoby, ako k tomu pristupovať, zatiaľ čo iní stále vyvíjajú riešenia. Jednoduché presadenie skúseností získaných na jednom blockchaine nebude fungovať; hoci je krivka učenia sa o niečo strmšia, vďaka výsledkom sa to oplatí.

V každom prípade je dôležité pochopiť, že na nasadenie škálovateľnej DApp na Cardano nemôže vývojár použiť len upravený kontrakt Etherea. Cardano je založené na modeli UTXO; nie je založené na účtoch. A to znamená, že jeden stav v reťazci nebude spĺňať vlastnosť súbežnosti na Cardane. Namiesto toho by DApps mali rozdeliť svoj on-chain stav na mnoho UTXO. Tým sa zvýši súbežnosť ich aplikácie, čo umožní vyššiu priepustnosť.

Náš vzdelávací tím sa už predtým podelil o jednoduchú implementáciu DEXu v štýle AMM v kurze Plutus Pioneer. Hoci je to užitočné na účely výučby, táto architektúra by priamo nepodporovala komerčný DEX, kde sa vyžaduje prístup knihy objednávok a ďalšia súbežnosť. Vývojár, ktorý by ju chcel nasadiť v mainnete Cardano, by musel zodpovedajúcim spôsobom zlepšiť škálovateľnosť architektúry.

Riešenie sme navrhli v rámci nášho nedávneho dokumentu Djed stablecoin paper. Pri implementácii Djed na Cardane sa uprednostňuje modelový vzor knihy objednávok, v rámci ktorého je tvorca objednávky zodpovedný za postúpenie každej objednávky na razenie alebo spálenie stablecoinu inteligentnej zmluvy, pričom každému prípadnému kupujúcemu alebo predávajúcemu stablecoinov a rezervných mincí sa ukladá dodatočný motivačný poplatok. Na zaručenie jedinečnosti transakcií, správnosti každej odoslanej objednávky a na zabránenie útokom typu front-running sa používa aj niekoľko bezpečnostných mechanizmov - prostredníctvom rozsiahleho používania nezameniteľných tokenov (NFT). Tokeny NFT sa používajú aj na hlásenie úspešných alebo neúspešných príkazov na razenie a pálenie. O tejto téme čoskoro uverejníme obsiahlejší článok.

Ak sa chcete dozvedieť viac o škálovateľnosti, môžete si prečítať ako navrhnúť škálovateľnú aplikáciu v Plutuse a zistiť, ako organizovať DApps na Cardano pomocou vzorovej knihy objednávok. Vývojári tiež predstavili paralelné a deterministické prístupy k architektúre inteligentných kontraktov eUTXO, ktoré možno považovať za zovšeobecnenie paralelných krokov stavového stroja predstavených v dokumente Hydra na realizáciu viackrokových stavových zdrojov. Viacerí ďalší vývojári a členovia komunity tiež publikovali videá, články a užitočné vlákna na Twitteri, v ktorých načrtli svoje postupy. Je to brilantná lekcia toho, ako bude komunita pokračovať vo vývoji vlastných inovatívnych riešení, keďže prístupy sa so zrelosťou platformy štandardizujú.

Posunutie sa vpred

Alonzo hard fork predstaví základné stavebné bloky Plutusu 1.0. Je to začiatok rastu ekosystému. Hoci je ešte skoro, testnet Alonzo umožňuje našim vývojárom posúdiť vlastnosti systému a vytvoriť škálovateľné DApps v predstihu - pripravujúc sa na ich spustenie v mainnete. Desiatky projektov už pracujú s lokálnymi inštanciami prostredia Plutus. Vzhľadom na to, že hlavný verejný testnet bude čoskoro podporovať inteligentné kontrakty, očakávame v nasledujúcich týždňoch a mesiacoch výrazné zvýšenie aktivity. Koncom tohto mesiaca sa na samite Cardano summit (25. - 26. septembra) predstavia mnohé z týchto projektov a navyše budú poskytnuté dôležité aktualizácie plánu inteligentných kontraktov a prebiehajúceho vývoja technologického zásobníka. Vývojárske podujatia, hackathony a, samozrejme, výsledky projektu Catalyst budú aj naďalej prinášať nové nástroje a abstrakcie do tohto rýchlo rastúceho vývojárskeho ekosystému.

Ak ste vývojár, určite sa pripojte k našej komunite Discord a zapojte sa do Project Catalyst, ak chcete financovať svoj projekt.

Rád by som poďakoval Larsovi Brünjesovi, Jannovi Müllerovi a Manuelovi Chakravartymu za ich technický prínos a podporu počas prípravy príspevku na blogu.


(Napísala Olga Hryniuk z IOHK) - preklad @Martin.M
Pôvodný článok: Concurrency and all that: Cardano smart contracts and the eUTXO model