🇨🇿 Pochopení významu Extended V Cardano UTxO Modelu

Bitcoin používá účetní model UTxO. Pro tým IOG tento model pro misi Cardano nestačil, a tak jej rozšířili. Cardano používá model Extended UTxO. V tomto článku vysvětlíme význam slova „rozšířené“ (Extended).

Více než platby

Bitcoinová síť je určena pro platby. UTxO model Bitcoinu má má omezenou expresivitu programovatelnosti. Cardano je platforma pro chytré smlouvy, která umožňuje vývojářům širší škálu operací souvisejících s hodnotou, tj. práci s UTxO.

Rozšíření modelu UTxO se týká následujících vlastností:

  • Schopnost udržovat stav kontraktu.
  • Schopnost znovu použít kód smlouvy pro sekvenci transakcí. Tým tomu říká kontinuita.
  • Schopnost podporovat více aktiv.
  • Schopnost podporovat vyšší expresivitu a programovatelnost smart kontraktů (skriptů).

Bitcoin tyto vlastnosti poskytnout nemůže, nebo jen ve velmi omezené míře. Bitcoin je navržen jako transakční síť, která v podstatě pouze ověřuje klíče k ověření podmínek útraty. Bitcoin není vhodný pro složitější finanční operace, tedy pro realizaci smart kontraktů.

Schopnosti bitcoinových UTxO a skriptů

V Bitcoinu se adresa generuje hašováním veřejného klíče. Tento proces je známý jako „zamykání na veřejný klíč“. Když někdo pošle BTC na adresu, v podstatě ji uzamkne na veřejný klíč spojený s touto adresou.

Chcete-li utratit BTC uzamčené na konkrétní adrese, musí ji vlastník adresy odemknout poskytnutím digitálního podpisu. Tento podpis je generován pomocí soukromého klíče spojeného s veřejným klíčem adresy. Akt podepsání transakce soukromým klíčem účinně odemkne BTC a umožní jej utratit.

V Bitcoinu může být adresa spojena se skriptem, ale specifickým způsobem. Bitcoin má několik různých skriptů, z nichž nejpopulárnější je Pay-to-Public-Key-Hash (P2PKH).

Bitcoinové skripty (kód/malý program) jsou vloženy do vstupní a výstupní části transakcí. Když vytváříte transakci, v podstatě píšete skript (operační kódy - opcodes - určují podmínky výdajů). Chcete-li nasadit skript, měli byste jej začlenit do bitcoinové transakce.

Běžně se setkáte s těmito skripty:

  • scriptPubKey je zamykací skript, který vyžaduje splnění určitých podmínek, aby příjemce mohl utratit BTC
  • scriptSig je odemykací skript, který splňuje podmínky kladené na výstup scriptPubKey a umožňuje utrácet BTC

Skripty jsou psány ve Scriptu. Bitcoin Script je zásobníkový programovací jazyk používaný pro vytváření bitcoinových transakcí. Bitcoin Script postrádá mnoho funkcí běžných programovacích jazyků. Není to Turing-kompletní jazyk, což znamená, že postrádá několik logických funkcí.

Takže zatímco bitcoinové adresy mohou být spojeny se skripty, jsou obvykle uzamčeny na konkrétní veřejný klíč a neobsahují libovolnou logiku ve formě (chytrých) skriptů. Skripty se většinou používají pro ověřování klíčů.

Skripty nejsou uloženy samostatně na blockchainu pro opětovné použití. Místo toho každá transakce obsahuje své vlastní skripty.

I když tedy jistě můžete použít stejný skript ve více transakcích, každá instance skriptu je uložena samostatně jako součást příslušné transakce. Neexistuje mechanismus, který by jednou uložil skript na blockchain a poté na něj odkazoval ve více transakcích.

Bitcoin Script nemá pojem stavu. Všechny potřebné informace jsou obsaženy v zamykacích a odemykacích skriptech. To znamená, že skripty jsou bezstavové a mezi spuštěními neukládají žádné informace. Skripty se používají téměř výhradně k zamykání a odemykání BTC.

V Bitcoinu jsou UTxO použité k ukládání a přenášení hodnoty BTC. Každé UTxO představuje určité množství BTC, které bylo zasláno na konkrétní adresu. Není možné vytvořit nový UTxO, který by (výhradně) představoval vlastní token s vlastní hodnotou.

Možná jste slyšeli, že Bitcoin může mít tokeny na první vrstvě. Poprvé to byly tzv. obarevné mince (colored coins). Jde o spojení konkrétních satoshi s vlastními tokeny. To je efektivně promění v žetony, které lze použít k reprezentaci čehokoli. Nutno podotknout, že se nejednalo o žetony v pravém slova smyslu.

Může existovat UTXO s 1000 satoshi, kde je 10 satoshi označeno jako tokeny X. Pokud byste chtěli poslat pouze jeden token X, musel by být vytvořen nový UTxO. Tento koncept nebyl životaschopný.

Koncept Ordinals je poněkud podobný konceptu barevných mincí, ale s některými klíčovými rozdíly. Ordinály jsou satoshi, které byly objednány a opatřeny určitou informací, jako je text nebo obrázek. Tato informace činí sat jedinečným a mění jej na de-facto nezaměnitelný token (NFT).

Bitcoin lze zjednodušeně popsat jako ledger s jedním aktivem. Bitcoinové skripty jsou bezstavové a používají se hlavně pro ověřování podpisů (klíčů). Skripty jsou přenášeny v transakcích a nelze je uložit do blockchainu a znovu použít.

Extended UTxO Model

V Extended UTxO modelu je pojem „adresa“ zobecněn. Místo omezení zámků na veřejné klíče a klíče na podpisy mohou adresy v modelu EUTxO obsahovat libovolnou logiku ve formě skriptů.

To znamená, že namísto pouhé hashované verze veřejného klíče mohou být adresy v Cardano přidruženy ke skriptům pomocí hash skriptu obsaženého v adrese. To umožňuje složitější transakce a interakce, jako jsou ty potřebné pro chytré smlouvy.

Adresa může obsahovat hash skriptu, který se používá k identifikaci skriptu, který byl uložen v blockchainu.

Takže v Cardano může transakce obsahovat skripty i odkazovat na ně. Bitcoin nemůže odkazovat na skripty. Proto musí být skripty vždy součástí transakce.

Cardano umí odkazovat na skripty. Tyto odkazované skripty jsou připojeny k výstupům a lze je použít ke splnění požadavků na skripty během ověřování. To znamená, že transakce pomocí běžných skriptů mohou být mnohem menší. Transakce, která používá skript, jej nebude muset poskytovat vůbec, pokud odkazuje na výstup, který obsahuje skript.

Koncept referenčních skriptů souvisí s aspektem kontinuity Extended UTXO modelu. Kontinuita smlouvy zajišťuje, že pro sekvenci transakcí lze použít stejný kód smlouvy.

Platforma Plutus umožňuje vývojářům psát aplikace (skripty), které interagují s blockchainem Cardano. Programovací jazyk Plutus se vyvinul z Haskellu. Skripty Plutus jsou části kódu, které implementují čisté funkce s výstupy True nebo False. Používají se k ověřování akcí.

V modelu Extended UTxO jsou skriptům validátoru předávány tři argumenty:

  • Datum: Toto je část dat připojená k výstupnímu UTxO, která skript zamyká. To se obvykle používá k přenášení stavu.
  • Redeemer: Toto je část dat připojená k útratovému vstupu UTxO. To se obvykle používá k poskytnutí vstupu do skriptu od utrácejícího.
  • Kontext: Jedná se o část dat, která představuje informace o útratové transakci. To se používá k tvrzení o způsobu, jakým je utraceno výstupní UTxO.

Cardanoův model EUTXO umožňuje napsat stavové skripty pomocí těchto primitiv.

Datum lze použít ke sledování stavu skriptu. Datum hraje klíčovou roli při použití výstupního UTxO z adresy skriptu a při jeho odesílání na adresu skriptu. Takže v Cardano můžete přiřadit stav ke skriptu pomocí Datum.

Výraznost a programovatelnost skriptů Plutus umožňuje vývojářům implementovat širokou škálu logiky. Jednoduchý validátorový skript by například mohl zkontrolovat, zda konkrétní klíč podepsal platební transakci (toto je podobné bitcoinovým skriptům). S trochou opatrného rozšíření však mohou vývojáři použít skripty k vyjádření složitější logiky.

Použití Datum a Redeemer dále vylepšuje schopnosti těchto skriptů a umožňuje jim přenášet stav a přijímat vstupy od utrácejících. Skript může převzít hodnoty Datum a Redeemer, provést výpočty nebo srovnání a poté vygenerovat booleovskou hodnotu (která determinuje možnost utracení).

Cardano’s ledger je navržen tak, aby podporoval více aktiv. Říká se tomu účetní kniha více aktiv. Umožňuje Cardano vést účetnictví nebo transakce s více než jedním typem aktiv (nativní ADA coiny).

Když se razí tokeny, vytvoří se nové UTxO. Když uživatelé razí tokeny, v podstatě vytvářejí nové UTxO, které tyto tokeny drží. Tyto UTxO pak lze utratit v transakcích, stejně jako UTxO s ADA coiny.

Skripty Plutus mohou pracovat s tokeny úplně stejně jako s ADA.

Cardano lze zjednodušeně popsat jako knihu s více aktivy. Ražené tokeny jsou nové UTxO, které mají podobné vlastnosti jako ADA coiny. Skripty Plutus jsou stavové. Skripty pracují s Datum, Redeemer a transakčním kontextem, což umožňuje vývojářům vytvářet složitější logiku nad rámec ověřování klíčů. Skripty lze ukládat do hlavní knihy a opakovaně na ně odkazovat.

Závěr

Model UTxO má ještě jeden důležitý význam, který v článku není zmíněn. A sice na možnost vyšší škálovatelnosti. UTxO jsou v podstatě objekty, které jsou nezávislé na svém okolí. Transakce s UTxO lze validovat bez ohledu na ostatní UTxO (tj. v podstatě bez ohledu na transakce ostatních uživatelů). Jinými slovy, další funkcí, kterou model UTxO podporuje, je paralelismus. Tuto funkci využije vylepšení nazvané Input Endorsers.

Asi největším rozdílem mezi bitcoinovými UTxO a Cardano UTxO je možnost přidat Datum, tedy libovolná data. Přestože mnohé z popsaných rozdílů do jisté míry souvisí s UTxO, liší se především díky odlišné filozofii a designu obou projektů. Pokud by bylo možné přidat data (Datum) do bitcoinových UTxO, bylo by nutné dále rozšířit bitcoinový skript. Uložená data jsou užitečnější, pokud je lze k něčemu přirovnat, ideálně nějaký transakční vstup (Redeemer). Možnost razit nové UTxO je funkce, kterou Bitcoin záměrně nemá. V takových úvahách by se dalo pokračovat.

Blockchain se skládá z více komponent, jejichž vlastnosti tvoří celek. UTxO je pouze jednou z těchto součástí. Využití potenciálu účetního modelu je závislé na dalších komponentách. Potenciál Extended UTxO souvisí s platformou Plutus, transakcemi a schopnostmi účetní knihy, atd.

Článek napsali Cardanians s podporou od Cexplorer.

Přečtěte si celý článek: https://cexplorer.io/article/understanding-the-meaning-of-extended-in-cardano-s-utxo-model