🇨🇿 Pochopení Cardano Batchers

Batcheři jsou koncept používaný některými decentralizovanými burzami (DEX) na Cardanu ke shromažďování objednávek a provádění swapů. Pojďte se o nich dozvědět více. Vysvětlíme také, proč Cardano potřebuje batchery a Ethereum ne.

Role Batcherů

Batcheři jsou konceptem jež je používaný některými decentralizovanými burzami (DEX) ke shromažďování objednávek a provádění swapů. Batcheři jsou entity, které provozují uzly v síti Cardano a mají schopnost vytvářet a odesílat transakce, které vyvolávají on-chain kód (validační skripty) DEXů.

Cílem batcherů je zlepšit efektivitu a škálovatelnost DEX snížením počtu transakcí, které musí blockchain zpracovat. Batcheri agregují více uživatelských transakcí do jediné dávkové transakce, která je provede všechny najednou. Toto je efektivnější přístup, než kdyby každý uživatel odeslal svou vlastní transakci do DEX.

Batcheři shromažďují uživatelské příkazy a vytvářejí transakce, které zahrnují zamykání prostředků. Děje se tak v off-chain logice chytré smlouvy. Agregují všechny uživatelské objednávky a provádějí swapy prostřednictvím vytváření spending transakcí, což se opět děje v off-chain části chytré smlouvy.

Batcheři třídí uživatelské transakce podle priority a ceny, což pomáhá předcházet konfliktům nebo selháním.

Uživatelé musí platit obvyklé síťové poplatky a navíc platí Batcherům za swapy. Batcheri si jako odměnu odečítají malý poplatek z každé transakce, kterou vytvoří.

Na obrázku níže můžete vidět zjednodušené schéma DEX, který zpracovává objednávky, páruje je a provádí swapy. Za tímto účelem musí Batcher vytvořit transakce, které jsou ověřeny v on-chain části inteligentní smlouvy.

Ukažme si to na příkladu. Zdůrazníme některé důležité detaily.

Alice chce prodat HOSKY a mít více ADA. Bob chce koupit HOSKY a prodat ADA. Batcher uzel může tyto příkazy kombinovat a provést swap.

Nejprve musí Alice a Bob najít Batchera, kterému důvěřují a který je schopen provést výměnu. Může to být provedeno automaticky pomocí DEX nebo si mohou vybrat Batchere, které chtějí, v závislosti na návrhu a implementaci DEX. Některé DEXy umožňují uživatelům vybrat konkrétní uzel, který má za úkol provést swap, zatímco jiné používají loterii k zajištění náhodného výběru.

Jakmile je Batcher vybrán, Alice a Bob musí uzamknout ADA a HOSKY. Swap lze provést pouze v případě, že má Batcher kontrolu nad utrácením finančních prostředků.

Alice posílá HOSKY tokeny na adresu skriptu řízenou batcherem. Ve skriptu jsou definovány podmínky pro útratu HOSKY (např. množství ADA, které Alice požaduje). Prostředky může odemknout kdokoli, kdo dokáže vytvořit platnou platební transakci (splňující podmínky skriptu). To je obvykle (ne nutně) batcher, který uzamkl prostředky.

Všimněte si, že batcher je zodpovědný za vytváření transakcí, které zahrnují zamykací skript. Uživatelé musí transakce podepsat svými soukromými klíči. Tímto způsobem nemohou být prostředky odcizeny batcherem, protože nemají přístup k soukromému klíči uživatele. Batcher ovládá pouze skripty, které zamykají a odemykají finanční prostředky, ale nemohou je utratit bez splnění podmínek swapu.

Uživatelé musí ověřit transakce, které poskytuje batcher, než je podepíší svým soukromým klíčem. Mohou zkontrolovat, zda transakce odpovídají podmínkám a parametrům swapu, jako je částka tokenu, směnný kurz a doba platnosti.

Bob musí provést podobnou operaci jako Alice, ale s ADA mincemi. Coiny ADA se tedy uzamknou na adrese skriptu řízené batcherem.

HOSKY a ADA jsou uzamčeny a Batcher může spárovat obě objednávky. Ověřuje, zda je možné splnit podmínky útraty obou skriptů, které zamykají prostředky. Pokud ano, batcher vytvoří dvě spending transakce, které odemknou HOSKY a ADA z adres skriptů a odešlou je na adresy příjemců, tedy Alice a Boba, přesně podle jejich požadavků.

Batcher odešle obě spending transakce do sítě Cardano jako jednu atomickou transakci. To znamená, že buď jsou úspěšně provedeny obě transakce, nebo se neprovede vůbec žádná. To zajišťuje, že Alice a Bob obdrží své tokeny a mince, aniž by hrozilo, že ztratí své prostředky nebo budou podvedeni batcherem nebo navzájem.

Ukázali jsme příklad tzv. přímého swapu, který vyžaduje větší koordinaci a komunikaci mezi stranami. Alice může výslovně říci DEX, že protistranou musí být Bob, pokud zná Bobovu adresu a počet tokenů, které chce vyměnit. Alice a Bob se musí předem dohodnout na podmínkách a parametrech swapu a poté použít Batcher k provedení své swapové transakce. Přímý swap je bezpečnější a efektivnější než swap založený na poolu, kde se Alice a Bob navzájem neznají a spoléhají na likvidity pool, aby našli vhodnou shodu pro svůj swap.

Proč Cardano potřebuje Batchery?

Batcheři hrají klíčovou roli při umožnění inteligentních smluv a swapů na Cardano. Přinášejí však také některé výzvy a kompromisy. Nejprve se podívejme na některé výhody:

  • Snižují zatížení blockchainu a zvyšují propustnost DEX, protože méně transakcí musí být ověřeno uzly a uloženo v blockchainu. Dávková transakce s 10 transakcemi má menší velikost než 10 jednotlivých transakcí. Je to proto, že dávková transakce může kombinovat více vstupů a výstupů do jediné transakce, což snižuje režii a redundanci vytváření samostatných transakcí.
  • Snižují poplatky pro uživatele, protože mezi ně mohou sdílet náklady na dávkovou transakci. Poplatky v Cardano jsou založeny na velikosti transakce a velikost závisí (mimo jiné) na počtu witness (podpisů).
  • Zlepšují uživatelskou zkušenost, protože mohou poskytovat rychlejší a spolehlivější provádění jejich transakcí.

Některé nevýhody Batcherů jsou:

  • Snižují decentralizaci a bezpečnost DEX, protože představují bod selhání pro uživatelské transakce. Pokud je batcher škodlivý nebo kompromitovaný, může manipulovat nebo cenzurovat uživatelské transakce.
  • Zvyšují složitost a riziko pro uživatele, protože musí důvěřovat a komunikovat s batcherem. Uživatelé musí poslat své prostředky a data batcherovi, který pak vytvoří a odešle dávkovou transakci jejich jménem.
  • Uživatelé se musí při provádění svých příkazů spolehnout na dostupnost a výkon batcher uzlu. Pokud uzel batchera přejde do režimu offline nebo se přetíží, transakce se mohou zpozdit nebo selhat.
  • Je běžné, že batcheři jsou většinou provozovatelé staking poolu (SPO) s vysokým stake. To představuje vstupní bariéru pro zainteresované strany. Tento mechanismus má zajistit poctivé chování, protože kombinuje provoz poolu s provozem uzlu batchera. Pokud by se batcher nechoval čestně, mohlo by to delegáty odradit od stakování ADA do poolu operátora. Kromě poplatku za dávkové transakce hrozí nepoctivému batcherovi také ztráta odměn za staking.

Nyní se dostáváme ke klíčové otázce. Proč Cardano potřebuje Batchery a Ethereum ne?

Dávkování je technika, která umožňuje provést více transakcí jako jednu atomickou transakci na blockchainu. To znamená, že buď jsou úspěšně provedeny všechny transakce, nebo se neprovede vůbec žádná. Z hlediska bezpečnosti a korektnosti je atomicita naprosto zásadní. Pokud je některá část dávky neplatná nebo konfliktní, měla by selhat celá dávka. Tím se zabrání částečnému nebo nekonzistentnímu provádění transakcí, které by mohly vést ke ztrátě finančních prostředků, dvojímu utrácení nebo podvodu.

Batcheři jsou potřeba, protože Cardano nepodporuje chytré smlouvy stejným způsobem jako Ethereum nebo jiné blockchainy, protože používá jiný účetní model.

V modelu UTXO lze každé UTXO utratit pouze jednou. Každá transakce spotřebovává nějaké UTXO jako vstupy a vytváří nové UTXO jako výstupy. Zůstatek uživatele se vypočítá jako součet všech UTXO spojených s jejich adresami.

Výstupy lze uzamknout pomocí skriptů, které určují podmínky pro jejich utrácení. Logika pro utrácení prostředků definovaná ve skriptu může vyžadovat schopnost znát nějaký kontext nebo stav. Stav je soubor dat, který představuje aktuální stav systému nebo programu. Informace o stavu jsou nezbytné pro mnoho aplikací, které vyžadují interakci, výpočty nebo ověření na blockchainu.

Na rozdíl od Etherea, kde mohou chytré kontrakty ukládat a manipulovat se stavovými proměnnými, mohou skripty Cardano přistupovat pouze ke vstupům a výstupům aktuální transakce (k dispozici je pouze místní kontext nebo stav). To znamená, že skripty Cardano nemohou provádět složitou logiku ani interagovat s jinými skripty v rámci on-chain části inteligentní smlouvy DEX.

Omezení modelu UTXO spočívá v tom, že nepodporuje složité logické nebo stavové informace.

K překonání tohoto omezení jednají batcheři jako zprostředkovatelé, kteří shromažďují, objednávají a provádějí transakce, které zahrnují zamykání a odemykání prostředků pomocí skriptů. Jinými slovy, obchodní logika DEX je vykonávána off-chain, protože je možné pracovat se stavem aplikace.

Model UTXO nemá globální stav, který lze aktualizovat nebo k němu přistupovat transakcemi. Místo toho může každá transakce přistupovat pouze ke vstupům a výstupům aktuální transakce. Datum asociovaný s UTxO, Redeemer z platební transakce a transakční (místní) kontext jsou k dispozici během provádění skriptu.

To znamená, že transakce nemohou provádět operace, které závisí na externích proměnných nebo podmínkách, jako jsou aritmetické operace, podmíněné příkazy, smyčky nebo volání funkcí. Transakce navíc nemohou interagovat s jinými transakcemi nebo skripty na blockchainu, což omezuje funkčnost a interoperabilitu aplikací.

Batcheři umožňují swapy na Cardano, protože umožňují implementaci algoritmů, které mohou pracovat s více transakcemi (objednávkami) současně a udržovat stav aplikace.

Ethereum nepotřebuje batchery, protože používá jiný účetní model nazývaný model založený na účtu. Model založený na účtu sleduje zůstatek každého účtu jako globálního stavu. Každá transakce aktualizuje stav systému podle logiky a dat obsažených v transakci. Model založený na účtu podporuje komplexní logiku a informace o stavu, protože umožňuje transakcím přistupovat a upravovat globální stav systému. Jednoduše řečeno, Ethereum umožňuje implementaci DEX logiky prostřednictvím chytrých kontraktů.

Krátké srovnání Cardano a Ethereum

Rozdíl mezi modelem UTXO a modelem založeným na účtu souvisí s globálním stavem Etherea. Ethereum má globální stav, který lze aktualizovat nebo k němu přistupovat prostřednictvím transakcí.

Cardano nemá globální stát. Provádění transakcí je na sobě nezávislé, protože závisí pouze na místním kontextu. Díky tomu je Ethereum vhodnější pro chytré smlouvy a swapy než Cardano, ale také přináší některé výzvy a kompromisy:

  • Globální stav Etherea je složitější než Cardaní model UTXO, což ztěžuje ověření a údržbu. Vyšší složitost často přináší zranitelnosti a útočné vektory.
  • Globální stav Etherea vyžaduje více úložiště a výpočtů než model Cardano UTXO, což omezuje jeho škálovatelnost a výkon. EVM provádí transakce postupně, jednu po druhé, a podle toho aktualizuje stav. Sekvence musí být dodržena během ověřování bloku.
  • Globální stav Etherea odhaluje více informací než Cardaní model UTXO, což snižuje jeho soukromí a anonymitu.

Tým IOG zvolil model UTxO a záměrně nechtěl mít něco jako globální stát. Chtěli využít výhod modelu UTxO a zároveň překonat jeho omezení. Dokázali to zavedením rozšířené verze modelu UTxO nazvaného eUTXO, která umožňuje transakcím přenášet některé stavové informace a provádět vlastní logiku pomocí chytrých kontraktů.

Model eUTXO zachovává jednoduchost, soukromí a škálovatelnost modelu UTxO (jak jej znáte z Bitcoinu) a zároveň umožňuje více funkčnosti a interoperability aplikací.

Model eUTxO, tedy absence globálního státu, má pro Cardano určité výhody.

  • Validátorové skripty (on-chain logika) jsou velmi malé a snadno se ověřují. Tím se šetří výpočetní prostředky distribuované sítě. Týmy jsou nuceny implementovat většinu aplikační logiky v off-chain části, kterou lze snadno upgradovat. Během on-chain validace je možné pracovat s místním státem (na rozdíl od bitcoinového modelu UTxO) prostřednictvím Datum a Redeemer.
  • Model eUTxO umožňuje uživatelům vytvářet více adres a používat různé UTxO pro každou transakci, což ztěžuje propojení transakcí s jedinou identitou nebo sledování historie finančních prostředků.
  • Model eUTxO umožňuje paralelní zpracování transakcí, protože každý UTxO může být verifikován nezávisle a současně různými uzly. To snižuje úzké hrdlo a latenci sítě. Při validaci bloku není nutné dodržovat pořadí, protože transakce jsou na sobě nezávislé.

Jedním z hlavních důvodů pro volbu modelu eUTXO před modelem založeným na účtu je lepší škálovatelnost a paralelismus. Model eUTXO umožňuje paralelní zpracování transakcí různými uzly, pokud nejsou ve vzájemném konfliktu. To znamená, že propustnost a výkon sítě lze zvýšit přidáním více uzlů a zdrojů.

Model založený na účtu na druhé straně vyžaduje sekvenční zpracování transakcí, protože každá transakce závisí na globálním stavu systému. To znamená, že propustnost a výkon sítě jsou omezeny rychlostí a kapacitou jednoho uzlu.

Toto téma je složitější a srovnání Cardana a Etherea by si zasloužilo samostatný článek. Chtěli jsme vysvětlit, jak batcheři fungují a proč je Cardano na rozdíl od Etherea potřebuje. Doufám, že se nám to povedlo.

Závěr

Pěkná věc na Ethereu je, že je možné implementovat logiku DEX do chytrých kontraktů bez nutnosti mít logiku mimo řetězec. Na druhou stranu je to neefektivní. Pokud by DEXy chtělo používat více uživatelů, Ethereum by mohlo mít problémy se škálovatelností. V ekosystému Ethereum již dnes existují DEXy, které mají off-chain logiku podobnou Cardano pro párování objednávek a provádění swapů. Nejpoužívanějším DEX v ekosystému Ethereum je Uniswap a jedná se o on-chain DEX.

Většina DEXů v ekosystému Cardano používá Batchery. Batchery lze považovat za jediný bod selhání. Pokud Batcher uzamkne finanční prostředky a následně přejde do režimu offline, nemusí být možné vytvořit spending transakce (může se stát, že je v rámci jednoho DEX vytvoří jiný batcher). Na druhou stranu je třeba říci, že ekonomické pobídky jsou nastaveny dobře. Batcheři jsou motivováni k poctivému chování, protože riskují ztrátu byznysu a potenciálně delegované ADA coiny.

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

Přečtěte si celý článek: https://cexplorer.io/article/understanding-cardano-batchers