🇨🇿 Pochopení složitelnosti aplikací na Cardanu

Cardano podporuje komposovatelnost svých aplikací, a to dvouvrstvou architekturou, ale především modulárním přístupem k chytrým kontraktům. Pojďte si o tom přečíst více. V článku se také dozvíte více o škálovatelnosti a paralelismu. V závěru uděláme rychlé srovnání Cardano s Ethereum s ohledem na composability.

Co je složitelnost

Composability (složitelnost) je termín, který označuje schopnost různých aplikací nebo komponent spolupracovat a stavět na sobě a vytvářet nové a složitější funkce. Složitost je často považována za žádoucí vlastnost pro decentralizované aplikace (DApps), zejména v oblasti decentralizovaných financí (DeFi), kde uživatelé mohou kombinovat různé protokoly nebo služby a vytvářet nové finanční produkty nebo trhy.

Složitost umožňuje vývojářům třetích stran propojit jejich aplikace a přinášet na trh nová řešení. Kombinace dvou (nebo více) aplikací dohromady může uživatelům umožnit interakci se všemi službami prostřednictvím jediného rozhraní. Jediné aplikační rozhraní umožní přístup ke všem službám všech složených aplikací.

Lze například sestavit DEX a platformu pro půjčování. Nebo můžete poskládat dva DEXy dohromady.

Uživatelé tak mohou mít přístup k více poolům, více tokenům, větší likviditě atd. DEXy mohou sdílet objednávky a tržní hodnotu tokenů (Oracles) atd. To zvyšuje efektivitu, ziskovost a spokojenost uživatelů.

Na obrázku níže můžete vidět, že týmy dvou DEXů se dohodly na spolupráci a propojily své aplikace dohromady. Uživatel má přístup k poolům likvidity obou DEXů prostřednictvím jediného rozhraní libovolného DEX.

Složitelnost má i nevýhody. Skládáním aplikací vzniká vzájemná závislost.

Skládání přináší složitost, protože vyžaduje větší koordinaci a synchronizaci mezi různými aplikacemi nebo komponentami, které mohou mít různá rozhraní, datové typy nebo protokoly.

Možnost skládání může snížit zabezpečení, protože vystavuje aplikace nebo komponenty většímu počtu vzájemných rizik nebo hrozeb, jako jsou konflikty, selhání, útoky nebo zranitelnosti. Pokud je jedna aplikace napadena, může to způsobit problémy druhé aplikaci.

Nutno podotknout, že služby DeFi jsou ekonomicky propojené. Půjčovací platformy mohou například používat stablecoiny vydané jinými aplikacemi. Pokud jsou stablecoiny z nějakého důvodu de-pedgeované, budou ovlivněni uživatelé půjčovací platformy.

Navzdory rizikům je skladatelnost žádoucí funkcí, protože zlepšuje uživatelskou zkušenost a podporuje inovace.

Cardano umožňuje skládání pro své DApps tím, že jim umožňuje:

  • Sdílení dat a hodnot napříč různými inteligentními smlouvami nebo blockchainy, aniž byste vytvářeli konflikty nebo selhání.
  • Možností zpracovávat více chytrých kontraktů paralelně, aniž by se vzájemně ovlivňovaly.
  • Připojení se se a spolupráce s dalšími platformami nebo protokoly, jako je Ethereum nebo Bitcoin.

Cardano podporuje složitelnost pro své DApps (nebo jen aplikace) na úrovni účetní knihy, konkrétně rozšířeným modelem UTXO, který umožňuje paralelní provádění chytrých kontraktů. Cardano používá dvouvrstvou architekturu, kde vypořádací vrstva zajišťuje převod hodnoty a výpočetní vrstva vykonávání chytrých kontraktů. Funkčnost inteligentních kontraktů lze dále rozdělit na logiku on-chain a off-chain.

Dvouvrstvá architektura Cardano

Abychom správně porozuměli složitelnosti, je důležité porozumět dvouvrstvé architektuře Cardano a způsobu, jakým je výsledek akce chytré smlouvy uložen v účetní knize.

Existuje souvislost mezi provedením smart kontraktu (bez ohledu na to, kde se provádí) a trvalým uložením výsledku do účetní knihy. Téměř každá jednotlivá komponenta blockchainové platformy ovlivňuje celkovou kvalitu skládání (ale také škálovatelnost, bezpečnost atd.).

Cardano si klade za cíl poskytovat větší škálovatelnost, bezpečnost a udržitelnost než jiné platformy, a to pomocí nového designu, který rozděluje základní funkce platformy do dvou odlišných vrstev: Cardano Settlement Layer (CSL) a Cardano Computation Layer (CCL). Tento design má určitý vliv na složitelnost.

CSL je zodpovědný za zpracování převodu hodnoty, jako je ADA nebo jiné nativní tokeny, mezi uživateli nebo smart kontrakty. CSL je založen na rozšířeném modelu UTXO, který zajišťuje, že transakce jsou deterministické a předvídatelné. Důležité je, že umožňuje paralelní provádění smart kontraktů.

V CSL je implementován konsensus Ouroboros Proof-of-Stake.

CCL je zodpovědné za provádění inteligentních kontraktů, jako jsou skripty Plutus nebo Marlowe (skripty validátoru, pravidla ražby atd.), které definují logiku a pravidla aplikací. CCL je založeno na funkcionálním programovacím jazyce zvaném Plutus Core, který běží na Cardano Virtual Machine (CVM).

CCL podporuje více programovacích jazyků, jako je Plutus, Marlowe, Glow, Aiken atd., které lze zkompilovat do Plutus Core a spustit na CVM.

Dvouvrstvá architektura Cardano má několik výhod oproti jiným platformám, které používají jednovrstvou architekturu, jako je Ethereum.

Dvouvrstvá architektura umožňuje větší flexibilitu a inovace, protože každou vrstvu lze aktualizovat a upravovat nezávisle, aniž by to ovlivnilo druhou vrstvu. CSL může například změnit svůj konsenzuální protokol nebo model tokenu, aniž by to ovlivnilo CCL. Podobně může CCL změnit (upgradovat) jazyk nebo exekuční prostředí pro inteligentní smlouvy, aniž by to ovlivnilo CSL.

Na druhou stranu tato architektura přináší složitost a snižuje použitelnost, protože vyžaduje větší koordinaci a synchronizaci mezi různými vrstvami. Například CSL a CCL musí udržovat konzistentní pohled na stav hlavní knihy a zajistit, aby transakce byly platné a kompatibilní napříč oběma vrstvami. Snížená použitelnost vyžaduje více kroků a nástrojů pro uživatele nebo vývojáře pro přístup nebo interakci s různými vrstvami.

Dvouvrstvá architektura zlepšuje škálovatelnost platformy, protože snižuje zatížení blockchainu a umožňuje paralelní provádění chytrých kontraktů. Například CSL musí pouze ověřovat transakce, které zahrnují převod hodnoty, nikoli provádění smart kontraktů. Podobně může CCL exekuovat více chytrých kontraktů paralelně, například na různých postranních řetězcích, aniž by se navzájem rušily.

Dvouvrstvá architektura Cardano umožňuje skládání chytrých kontraktů tím, že jim umožňuje vzájemně ovlivňovat a spolupracovat na blockchainu.

Představte si token A ražený smart kontraktem (minting policy) As a token B ražený prostřednictvím Bs. Další inteligentní smlouva, která implementuje swap, může používat tokeny A i B. V tomto případě smart kontrakty spolu přímo neinteragují (nejsou složeny), ale tokeny jsou sdíleny mezi různými smart kontrakty. Můžeme mluvit o composability na úrovni assets.

Cardano umožňuje skládání především díky modulárnímu přístupu k chytrým kontraktům. Tedy prostřednictvím rozdělení smart kontraktu na on-chain a off-chain logiku. O tom budeme hovořit podrobněji později.

Skripty Plutus (validátory) jsou exekuovány virtuálním strojem Cardano v CCL. CCL interaguje s CSL, což je vrstva, která pouze zpracovává přenos hodnoty, jako je ADA nebo jiné nativní tokeny, mezi uživateli nebo smart kontrakty. CSL ověřuje a ukládá transakce, které zahrnují převod hodnoty na blockchainu.

CSL pracuje pouze s výstupem chytrých kontraktů (logická hodnota True nebo False). Aktiva lze utratit (odemknout) pouze z adresy (adresy skriptu), pokud je návratová hodnota True. CSL neprovádí ani neověřuje samotné smart kontrakty, ale pouze kontroluje, zda byly provedeny a validovány CCL a návratovou hodnotu. CSL přijme nebo odmítne transakci na základě booleovské hodnoty.

Na obrázku níže vidíte CSL a CCL. Dále chytrý kontrakt, který se dělí na on-chain a off-chain logiku. On-chain logiku provádí CVM, zatímco off-chain logiku lze spouštět na serveru nebo na lokálním počítači uživatele. Pokud je návratová hodnota skriptu validátoru True, transakce se zapíše do hlavní knihy v CSL.

Mnoho aplikací (skripty Plutus) může používat CSL paralelně. Model UTXO zajišťuje, že transakce jsou deterministické a předvídatelné a nezávisí na globálním stavu účetní knihy nebo jiných transakcí. Proto mohou být různé transakce nebo chytré smlouvy prováděny paralelně, aniž by se navzájem rušily, pokud neutrácejí stejné UTXO.

Paralelnost modelu UTxO napomáhá komposovatelnosti, protože umožňuje inteligentním kontraktům vzájemně spolupracovat a spolupracovat na blockchainu, aniž by docházelo ke konfliktům nebo selháním. Například chytrou smlouvu, která implementuje token, může použít jiná chytrá smlouva, která implementuje swap, půjčovací platformu nebo aukci. Model UTxO dokáže tyto transakce zpracovávat paralelně, aniž by docházelo ke konfliktům nebo selháním.

Modulární přístup k inteligentním smlouvám

Cardano využívá modulární přístup, kdy se chytré smlouvy skládají ze dvou složek: on-chain kódu a off-chain kódu. Cardano umožňuje skládání aplikací prostřednictvím součástí inteligentních kontraktů on-chain i off-chain.

Pokud se chcete dozvědět víc o tom jak fungují SC na Cardano, přečtěte si náš článek na toto téma. Můžete přeskočit kapitoli týkající se Bitcoinu a Ethereum.

On-chain kód je skript, který běží na blockchainu (CCL) k ověření transakcí, které zahrnují smart kontrakt. Obvykle se jedná o jednoduchý kód, který odemkne prostředky na adrese skriptu.

Off-chain kód může být složitá aplikace, která běží na počítači nebo serveru uživatele a generuje transakce (jak transakce se skripty, tak útratové transakce), které odpovídají logice inteligentní smlouvy.

Modulární přístup umožňuje větší efektivitu a škálovatelnost, protože většina logiky inteligentních kontraktů se provádí mimo řetězec, což snižuje zátěž a náklady na blockchain. Skládání na úrovni skriptu Plutus (validátor) je možné, ale není tak přímočaré jako skládání na úrovni off-chain logiky.

Složitelnost na úrovni skriptu Plutus znamená, že různé on-chain části inteligentních kontraktů mohou vzájemně interagovat a spolupracovat na blockchainu (v CCL) a vytvářet tak nové a složitější funkce. Tomuto přístupu se vývojáři obvykle vyhýbají, protože představuje výzvu. Různé inteligentní smlouvy mohou mít různá rozhraní, datové typy nebo protokoly, díky čemuž mohou být vzájemně nekompatibilní nebo nekonzistentní. Standardizace a sjednocení přístupů by mohly vývojářům pomoci dosáhnout složitelnosti.

Různé inteligentní smlouvy mohou mít různé stavy, závislosti nebo omezení, což může znesnadnit nebo znemožnit jejich vzájemnou koordinaci nebo synchronizaci. Aby bylo dosaženo složitelnosti na úrovni skriptu validátoru, musí inteligentní smlouvy používat některé mechanismy nebo techniky ke komunikaci a sladění svých stavů, závislostí nebo omezení. To by ale velmi pravděpodobně vyžadovalo spolupráci týmů na samém začátku vývoje aplikace nebo pozdější reimplementaci validátorů.

Naštěstí není nutné, aby aplikace (smart kontrakty) interagovaly na úrovni validátorů (on-chain logika). Na úrovni off-chain logiky je to mnohem jednodušší.

Při navrhování off-chain logiky jsou vývojáři jen minimálně omezeni požadavky on-chain logiky. Mohou v podstatě navrhovat funkčnost s ohledem na složitelnost. To přináší obrovskou flexibilitu, ale vyšší složitost představuje rizika. Ta pramení například z toho, že pro vykonání logiky smart kontraktu je nutné použít více exekučních prostředí, například Java Virtual Machine (na serveru) a Cardano Virtual Machine na blockchaunu (v CCL).

Vývojáři mohou k vytvoření off-chain části inteligentní smlouvy použít jakýkoli programovací jazyk, framework nebo existující standardy. Jediné, co musí zajistit, je interakce s rozhraním API uzlu Cardano.

Různé off-chain aplikace mohou vzájemně volně interagovat, aniž by to ovlivnilo jiné off-chain aplikace. Propojení aplikací na této úrovni je velmi snadné a pro průměrného vývojáře nepředstavuje velkou výzvu.

Výsledek interakce off-chain částí aplikace se projeví v on-chain částech. Nakonec je třeba výsledek zaznamenat do účetní knihy prostřednictvím validátorů. Jinými slovy, mimořetězová interakce mezi aplikacemi musí vést k vytvoření platební transakce, která odemkne prostředky, které jsou uzamčeny validátorem.

Dá se říci, že škálovatelnost a výpočetní náročnost aplikací jsou na úrovni off-chain částí smart kontraktů téměř neomezené. Úzkým místem je velikost bloku.

CSL umožňuje paralelní zpracování transakcí (model UTxO). CCL umožňuje paralelní provádění smart kontraktů. Paralelní provádění inteligentních smluv znamená, že různé chytré smlouvy lze provádět paralelně, aniž by se vzájemně ovlivňovaly nebo ovlivňovaly, pokud neinteragují se stejnými UTxO. Pokud je výstup on-chain části smart kontraktu True, je nutné transakci uložit do blockchainu, tedy dostat ji do dalšího bloku.

Na obrázku níže můžete vidět, jak spolu komunikují dvě off-chain části smart kontraktů (zelená šipka). Off-chain část aplikací je na obrázku záměrně větší, což naznačuje, že je tam implementována složitější logika. On-chain části smart kontraktů mohou také mezi sebou komunikovat (červená šipka). Obrázek také ukazuje, jak výsledek interakce mezi smart kontrakty vyústí ve vytvoření dvou útratových transakcí, které se zapisují do účetní knihy (modré šipky). Útratové transakce odemkly prostředky na adresách skriptů (transakce se skripty již byly uloženy v ledgeru).

Tvůrci DeFi mohou na Cardano skládat aplikace. Existují však také některé problémy a omezení, které je třeba vyřešit, aby bylo dosaženo plné složitelnosti.

  • Kompatibilita a standardizace inteligentních smluvních jazyků a rozhraní.
  • Použitelnost a dostupnost aplikací. Uživatelé mohou pro přístup k různým aplikacím potřebovat více peněženek nebo účtů.

Závěr

Monolitický přístup k chytrým kontraktům, který Ethereum používá, má výhody z hlediska bezpečnosti a jednoduchosti, ale nevýhody z hlediska škálovatelnosti a flexibility. Cardano využívá modulární přístup k inteligentním kontraktům. Má výhody z hlediska škálovatelnosti a flexibility, ale nevýhody z hlediska bezpečnosti a složitosti.

Monolitický přístup může vést k vysokým poplatkům a přetížení, což může brzdit výkon a použitelnost chytrých smluv. Funkčnost všech kontraktů spotřebovává výpočetní zdroje distribuované sítě. Část funkcionality není možné provádět mimo řetězec. Aplikace jsou méně flexibilní, protože jsou omezeny tím, co platforma nabízí. Na druhou stranu to může být i výhoda, jelikož aplikace jsou (relativně) jednoduché. Všechny funkce chytrých kontraktů jsou napsány v Solidity (nebo Vyper). To je také výhodné z hlediska bezpečnosti, protože všechny transakce a chytré smlouvy jsou ověřovány stejným mechanismem konsenzu a prováděny stejným virtuálním strojem.

Z mého pohledu je největší nevýhodou Etherea nutnost provádět chytré kontrakty sekvenčně. Toto omezení vyplývá z použití modelu založeného na účtu.

Modulární přístup může dosáhnout vyšší škálovatelnosti, protože různé moduly nebo vrstvy mohou zpracovávat různé úkoly paralelně nebo asynchronně. To může snížit zatížení sítě a uživatelé mohou platit nižší poplatky, protože se spotřebuje méně distribuovaných výpočetních zdrojů. Modulární přístup umožňuje vytvářet složitější a rozmanitější smart kontrakty. Může však představovat bezpečnostní rizika, protože různé moduly nebo vrstvy mohou mít různou úroveň důvěryhodnosti a ověření. Vyšší flexibilita a neomezené možnosti pro vývojáře mohou vést ke složitosti, která může mít za následek zranitelnosti a nekonzistence v datech a logice na blockchainu.

Největší nevýhodou Cardana je asi nízká standardizace a unifikace. V současné době existuje několik CIP souvisejících s implementací norem. Částečně je to dáno tím, že Cardano je stále mladá platforma.

V příštím článku si podrobněji porovnáme složitelnost aplikací na Cardano s Ethereem.

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

Přečtěte si celý článek: https://cexplorer.io/article/understanding-the-composability-of-applications-on-cardano