🇸🇰 Pochopenie batcherov v Cardane

Pochopenie batcherov v Cardane

Batchery sú koncept, ktorý používajú niektoré decentralizované burzy (DEXy) na Cardano na zhromažďovanie príkazov a vykonávanie swapov. Poďte sa o nich dozvedieť viac. Vysvetlíme si tiež, prečo Cardano potrebuje batchery a Ethereum nie.

Úloha batcherov

Batchery sú koncept, ktorý používajú niektoré decentralizované burzy (DEXes) na zhromažďovanie objednávok používateľov a vykonávanie swapov. Batchery sú subjekty, ktoré prevádzkujú uzly v sieti Cardano a majú možnosť vytvárať a odosielať transakcie, ktoré vyvolávajú kód na reťazci (validátorské skripty) DEXov.

Cieľom batcherov je zlepšiť efektívnosť a škálovateľnosť DEX znížením počtu transakcií, ktoré musí blockchain spracovať. Batchery združujú viaceré transakcie používateľov do jednej dávkovej transakcie, ktorá ich vykoná všetky naraz. Ide o efektívnejší prístup, ako keby každý používateľ predložil DEX-u svoju vlastnú transakciu.

Batchery zhromažďujú príkazy používateľov a vytvárajú transakcie, ktoré zahŕňajú blokovanie finančných prostriedkov. Vykonáva sa to v logike mimo reťazca inteligentného kontraktu. Porovnávajú všetky príkazy používateľov a vykonávajú výmeny prostredníctvom vytvárania výdavkových transakcií, čo sa opäť deje v off-chain časti inteligentného kontraktu.

Batchery triedia transakcie používateľov podľa ich priority a ceny, čo pomáha predchádzať konfliktom alebo zlyhaniam.

Používatelia musia platiť bežné sieťové poplatky a navyše platia batcherom za swapy. Batcheri si z každej vytvorenej transakcie odpočítajú malý poplatok ako odmenu.

Na nasledujúcom obrázku vidíte zjednodušenú schému DEX, ktorá spracováva príkazy, páruje ich a vykonáva swapy. Na tento účel musí batcher vytvoriť transakcie, ktoré sú validované v on-chain časti smart kontraktu.

Ukážme si to na príklade. Zdôrazníme niektoré dôležité detaily.

Alica chce predať HOSKY a mať viac ADA. Bob chce kúpiť HOSKY a predať ADA. Dávkovací uzol môže tieto príkazy spojiť a vykonať výmenu.

Alica a Bob musia najprv nájsť batcher, ktorému dôverujú a ktorý je schopný vykonať výmenu. Môže to vykonať buď automaticky DEX, alebo si môžu vybrať batcher, ktorý chcú, v závislosti od návrhu a implementácie DEX. Niektoré DEXy umožňujú používateľom vybrať konkrétny uzol, ktorý bude poverený vykonaním výmeny, zatiaľ čo iné používajú lotériu na zabezpečenie náhodného výberu.

Po výbere batchera musia Alice a Bob uzamknúť ADA a HOSKY. Výmena sa môže vykonať len vtedy, ak má batcher kontrolu nad vynakladaním prostriedkov.

Alica posiela tokeny HOSKY na adresu skriptu, ktorú kontroluje batcher. V skripte sú definované podmienky na vynakladanie HOSKY (napr. množstvo ADA, ktoré Alica požaduje). Prostriedky môže odblokovať ktokoľvek, kto dokáže vytvoriť platnú transakciu míňania (splniť podmienky skriptu). Zvyčajne (nie nevyhnutne) je to dávkar, ktorý prostriedky uzamkol.

Všimnite si, že dávkovač je zodpovedný za vytvorenie transakcií, ktoré obsahuje skript uzamknutia. Používatelia musia podpísať transakcie svojimi súkromnými kľúčmi. Takto batcher nemôže ukradnúť prostriedky, pretože nemá prístup k súkromnému kľúču používateľa. Batcher kontroluje iba skripty, ktoré uzamykajú a odomykajú prostriedky, ale nemôže ich minúť bez splnenia podmienok výmeny.

Používatelia musia overiť transakcie, ktoré poskytuje batcher, predtým, ako ich podpíšu svojím súkromným kľúčom. Môžu skontrolovať, či transakcie zodpovedajú swapovým podmienkam a parametrom, ako je suma tokenu, výmenný kurz a čas vypršania platnosti.

Bob musí vykonať podobnú operáciu ako Alica, ale s mincami ADA. Mince ADA sa teda uzamknú na adrese skriptu kontrolovaného dávkovačom.

HOSKY a ADA sú uzamknuté a batcher môže párovať oba príkazy. Overuje, či je možné splniť podmienky výdavkov oboch skriptov, ktoré uzamknú prostriedky. Ak áno, batcher vytvorí dve výdavkové transakcie, ktoré odomknú HOSKY a ADA z adries skriptov a odošle ich na adresy príjemcov, t. j. Alice a Boba, presne podľa ich požiadaviek.

Batcher odošle obe výdavkové transakcie do siete Cardano ako jednu atomickú transakciu. To znamená, že buď sa úspešne vykonajú obe transakcie, alebo sa nevykoná žiadna z nich. Tým je zabezpečené, že Alica a Bob dostanú svoje tokeny a mince bez rizika, že prídu o svoje prostriedky alebo že ich batcher alebo jeden druhého podvedie.

Ukázali sme si príklad tzv. priamej výmeny, ktorá si vyžaduje viac koordinácie a komunikácie medzi stranami. Alica môže DEX explicitne povedať, že protistranou musí byť Bob, ak pozná Bobovu adresu a počet tokenov, ktoré chce vymeniť. Alica a Bob sa musia vopred dohodnúť na podmienkach a parametroch swapu a potom použiť dávkovač na vykonanie svojej swapovej transakcie. Priamy swap je bezpečnejší a efektívnejší ako swap založený na poole, pri ktorom sa Alica a Bob navzájom nepoznajú a pri hľadaní vhodného partnera pre svoj swap sa spoliehajú na pool likvidity.

Prečo Cardano potrebuje batchery?

Batchery zohrávajú kľúčovú úlohu pri umožňovaní inteligentných kontraktov a swapov na Cardano. Prinášajú však aj niektoré výzvy a kompromisy. Pozrime sa najprv na niektoré výhody:

  • Znižujú zaťaženie blockchainu a zvyšujú priepustnosť DEX, pretože uzly musia overiť a uložiť do blockchainu menej transakcií. Dávková transakcia s 10 transakciami má menšiu veľkosť ako 10 jednotlivých transakcií. Je to preto, že dávková transakcia môže kombinovať viacero vstupov a výstupov do jednej transakcie, čím sa znižuje réžia a redundancia vytvárania samostatných transakcií.
  • Znižujú poplatky pre používateľov, pretože si môžu náklady na dávkovú transakciu rozdeliť medzi sebou. Poplatky v Cardano sú založené na veľkosti transakcie a veľkosť závisí (okrem iného) od počtu svedkov (podpisov).
  • Zlepšujú skúsenosti používateľov, pretože môžu poskytovať rýchlejšie a spoľahlivejšie vykonávanie ich transakcií.

Niektoré nevýhody batcherov sú nasledovné:

  • Znižujú decentralizáciu a bezpečnosť DEX, pretože zavádzajú bod zlyhania pre transakcie používateľov. Ak je batcher škodlivý alebo kompromitovaný, môže manipulovať, cenzurovať alebo predbiehať transakcie používateľov.
  • Zvyšujú zložitosť a riziko pre používateľov, pretože musia dôverovať batcheru a komunikovať s ním. Používatelia musia posielať svoje finančné prostriedky a údaje dávkovaču, ktorý potom v ich mene vytvorí a odošle dávkovú transakciu.
  • Používatelia sa pri vykonávaní svojich príkazov musia spoliehať na dostupnosť a výkonnosť dávkového uzla. Ak je uzol dávkového spracovania vypnutý alebo preťažený, transakcie sa môžu oneskoriť alebo zlyhať.
  • Je bežné, že batchery sú väčšinou prevádzkovatelia staking poolov (SPO) s vysokým vkladom. To predstavuje pre záujemcov vstupnú bariéru. Tento mechanizmus má zabezpečiť čestné správanie, pretože kombinuje prevádzku poolu s prevádzkou batcher uzla. Ak by sa batcher nesprával čestne, mohlo by to delegátov odradiť od stávkovania ADA do poolu operátora. Okrem poplatku za dávkovanie transakcií hrozí nečestnému batcherovi aj strata odmien za stávkovanie.

Teraz sa dostávame ku kľúčovej otázke. Prečo Cardano potrebuje batcherov a Ethereum nie?

Dávkovanie je technika, ktorá umožňuje vykonať viacero transakcií ako jednu atomickú transakciu v blockchaine. To znamená, že buď sa úspešne vykonajú všetky transakcie, alebo sa nevykoná žiadna z nich. Z hľadiska bezpečnosti a správnosti je atomicita absolútne nevyhnutná. Ak je niektorá časť dávky neplatná alebo konfliktná, celá dávka by mala zlyhať. Tým sa zabráni čiastočnému alebo nekonzistentnému vykonaniu transakcií, ktoré by mohlo viesť k strate finančných prostriedkov, dvojitému vynaloženiu alebo podvodu.

Dávky sú potrebné, pretože Cardano nepodporuje inteligentné zmluvy rovnakým spôsobom ako Ethereum alebo iné blockchainy, keďže používa iný účtovný model.

V modeli UTXO sa každý UTXO môže minúť len raz. Každá transakcia spotrebuje niektoré UTXO ako vstupy a vytvorí nové UTXO ako výstupy. Zostatok používateľa sa vypočíta ako súčet všetkých UTXO spojených s jeho adresami.

Výstupy môžu byť uzamknuté skriptami, ktoré určujú podmienky ich míňania. Logika vynakladania prostriedkov definovaná v skripte môže vyžadovať schopnosť poznať určitý kontext alebo stav. Stav je súbor údajov, ktorý predstavuje aktuálny stav systému alebo programu. Informácie o stave sú nevyhnutné pre mnohé aplikácie, ktoré vyžadujú interakciu, výpočet alebo overenie v blockchaine.

Na rozdiel od Etherea, kde inteligentné kontrakty môžu ukladať a manipulovať so stavovými premennými, skripty Cardano môžu pristupovať len k vstupom a výstupom aktuálnej transakcie (k dispozícii je len lokálny kontext alebo stav). To znamená, že skripty Cardano nemôžu vykonávať zložitú logiku alebo komunikovať s inými skriptami v rámci on-chain časti inteligentnej zmluvy DEX.

Obmedzením modelu UTXO je, že nepodporuje komplexnú logiku ani informácie o stave.

Na prekonanie tohto obmedzenia slúžia batchery ako sprostredkovatelia, ktorí zhromažďujú, objednávajú a vykonávajú transakcie, ktoré zahŕňajú uzamknutie a odomknutie prostriedkov pomocou skriptov. Inými slovami, obchodná logika DEX sa vykonáva mimo reťazca, pretože je možné pracovať so stavom aplikácie.

Model UTXO nemá globálny stav, ktorý by sa dal aktualizovať alebo ku ktorému by mohli pristupovať transakcie. Namiesto toho môže každá transakcia pristupovať len k vstupom a výstupom aktuálnej transakcie. Počas vykonávania skriptu sú k dispozícii dátum UTxO, vykupiteľ z transakcie výdavkov a (lokálny) kontext transakcie.

To znamená, že transakcie nemôžu vykonávať operácie, ktoré závisia od externých premenných alebo podmienok, ako sú aritmetické operácie, podmienené príkazy, cykly alebo volania funkcií. Okrem toho transakcie nemôžu komunikovať s inými transakciami alebo skriptami v blockchaine, čo obmedzuje funkčnosť a interoperabilitu aplikácií.

Batchery umožňujú swapy na Cardano, pretože umožňujú implementáciu algoritmov, ktoré môžu pracovať s viacerými transakciami (príkazmi) súčasne a udržiavať stav aplikácie.

Ethereum nepotrebuje batchery, pretože používa iný účtovný model nazývaný account-based model. Model založený na účtoch sleduje zostatok každého účtu ako globálny stav. Každá transakcia aktualizuje stav systému podľa logiky a údajov obsiahnutých v transakcii. Model založený na účtoch podporuje komplexnú logiku a informácie o stave, pretože umožňuje transakciám pristupovať ku globálnemu stavu systému a meniť ho. Jednoducho povedané, Ethereum umožňuje implementáciu logiky DEX prostredníctvom inteligentných kontraktov.

Krátke porovnanie Cardano a Ethereum

Rozdiel medzi modelom UTXO a modelom založeným na účtoch súvisí s globálnym stavom Etherea. Ethereum má globálny stav, ktorý možno aktualizovať alebo ku ktorému majú prístup transakcie.

Cardano nemá globálny stav. Vykonávanie transakcií je navzájom nezávislé, pretože závisí len od lokálneho kontextu. Vďaka tomu je Ethereum vhodnejšie na inteligentné kontrakty a výmeny ako Cardano, ale prináša to aj určité výzvy a kompromisy:

  • Globálny stav Etherea je zložitejší ako model UTXO v Cardane, čo sťažuje jeho overovanie a údržbu. Vyššia komplexnosť často prináša zraniteľnosti a vektory útokov.
  • Globálny stav Etherea vyžaduje viac úložiska a výpočtov ako model UTXO v Cardane, čo obmedzuje jeho škálovateľnosť a výkon. EVM vykonáva transakcie postupne, jednu po druhej, a podľa toho aktualizuje stav. Táto postupnosť sa musí dodržiavať aj počas validácie blokov.
  • Globálny stav Etherea odhaľuje viac informácií ako model UTXO spoločnosti Cardano, čo znižuje jeho súkromie a anonymitu.

Tím IOG si vybral model UTxO a zámerne nechcel mať niečo ako globálny stav. Chceli využiť výhody modelu UTxO a zároveň prekonať jeho obmedzenia. Urobili to zavedením rozšírenej verzie modelu UTxO, nazvanej eUTXO, ktorá umožňuje transakciám prenášať niektoré informácie o stave a vykonávať vlastnú logiku pomocou inteligentných kontraktov.

Model eUTXO zachováva jednoduchosť, súkromie a škálovateľnosť modelu UTxO (ako ho poznáte z Bitcoinu) a zároveň umožňuje viac funkcií a interoperabilitu aplikácií.

Model eUTxO, t. j. absencia globálneho stavu, má pre Cardano určité výhody.

  • Skripty validátora (logika na reťazci) sú veľmi malé a jednoducho sa validujú. Tým sa šetria výpočtové zdroje distribuovanej siete. Tímy sú nútené implementovať väčšinu aplikačnej logiky v off-chain časti, ktorú možno ľahko aktualizovať. Počas validácie v on-chaine je možné pracovať s lokálnym stavom (na rozdiel od modelu UTxO Bitcoinu) prostredníctvom systémov Datum a Redeemer.
  • Model eUTxO umožňuje používateľom vytvárať viacero adries a používať rôzne UTxO pre každú transakciu, čo sťažuje prepojenie transakcií s jednou identitou alebo sledovanie histórie finančných prostriedkov.
  • Model eUTxO umožňuje paralelné spracovanie transakcií, keďže každý UTxO môže byť overovaný nezávisle a súčasne rôznymi uzlami. Tým sa znižuje úzke hrdlo a latencia siete. Počas overovania blokov nie je potrebné dodržiavať poradie, pretože transakcie sú na sebe nezávislé.

Jedným z hlavných dôvodov výberu modelu eUTXO namiesto modelu založeného na účtoch je lepšia škálovateľnosť a paralelizmus. Model eUTXO umožňuje paralelné spracovanie transakcií rôznymi uzlami, pokiaľ si navzájom nekonkurujú. To znamená, že priepustnosť a výkonnosť siete možno zvýšiť pridaním ďalších uzlov a zdrojov.

Na druhej strane model založený na účtoch vyžaduje sekvenčné spracovanie transakcií, keďže každá transakcia závisí od globálneho stavu systému. To znamená, že priepustnosť a výkon siete sú obmedzené rýchlosťou a kapacitou jedného uzla.

Táto téma je zložitejšia a porovnanie Cardana a Etherea by si zaslúžilo samostatný článok. Chceli sme vysvetliť, ako fungujú batchery a prečo ich Cardano na rozdiel od Etherea potrebuje. Dúfam, že sa nám to podarilo.

Záver

Na Ethereu je pekné, že v inteligentných kontraktoch je možné implementovať logiku DEX bez potreby mať logiku mimo reťazca. Na druhej strane je to však neefektívne. Ak by DEXy chcelo používať viac používateľov, Ethereum by mohlo mať problémy so škálovateľnosťou. V ekosystéme Ethereum už dnes existujú DEXy, ktoré majú off-chain logiku podobnú Cardanovi na párovanie príkazov a vykonávanie swapov. Najpoužívanejší DEX v ekosystéme Ethereum je Uniswap a je to DEX na reťazci.

Väčšina DEX v ekosystéme Cardano používa batchery. Batchery možno považovať za jediný bod zlyhania. Ak batcher zablokuje finančné prostriedky a následne sa vypne, nemusí byť možné vytvoriť výdavkové transakcie (môže sa stať, že iný batcher ich môže vytvoriť v rámci jedného DEX). Na druhej strane treba povedať, že ekonomické stimuly sú nastavené dobre. Batcheri sú motivovaní vykonávať batching poctivo, pretože riskujú stratu obchodu a potenciálne delegovaných mincí ADA.


Pôvodný článok: Understanding Cardano Batchers | Cardano Explorer (cexplorer.io)