­č窭čç░ Porozumenie Cardano Extended-UTXO modelu

Porozumenie Cardano Extended-UTXO modelu

Jednou z inov├íci├ş, s ktorou Cardano pri┼ílo, je roz┼í├şrenie ├║─Źtovn├ęho modelu Bitcoinu. Bitcoin je v podstate jednoduch├Ż, ale to neznamen├í, ┼że jeho jednotliv├ę ─Źasti nemo┼żno vylep┼íi┼ą. V r├ímci projektu Cardano doch├ídza k technologick├ęmu pokroku. Po─Ćte presk├║ma┼ą hist├│riu ├║─Źtovn├Żch modelov a ich v├Żvoj.

Satoshi Nakamoto pri vytv├íran├ş Bitcoinu pou┼żil mnoho technol├│gi├ş. Jednou z nich bol ├║─Źtovn├Ż model vyu┼ż├şvaj├║ci v├Żstup z nespotrebovan├Żch transakci├ş (UTxO). Vitalik Buterin a jeho t├şm sa rozhodli pou┼żi┼ą in├Ż ├║─Źtovn├Ż model zalo┼żen├Ż na ├║─Źtoch, preto┼że sa zdal by┼ą lep┼í├şm rie┼íen├şm na vykon├ívanie inteligentn├Żch kontraktov. V ─Źl├ínku ho budeme naz├Żva┼ą model zalo┼żen├Ż na ├║─Źtoch.

V s├║─Źasnosti mnoh├ę projekty ako Solana, Polkadot a Algorand pou┼ż├şvaj├║ rovnak├Ż ├║─Źtovn├Ż model ako Ethereum. Oba pr├şstupy maj├║ svoje v├Żhody aj nev├Żhody a v├Żvoj├íri ─Źelia r├┤znym v├Żzvam pri budovan├ş nad z├íkladn├Żmi vrstvami. T├şm IOG, ktor├Ż buduje Cardano, sa rozhodol ├şs┼ą inou cestou a roz┼í├şril p├┤vodn├Ż model Bitcoinu, UTXO. Nov├Ż model dostal n├ízov Extended-UTXO.

├Ü─Źtovn├Ż model

├Ü─Źtovn├şctvo je z├íkladom dne┼ín├ęho finan─Źn├ęho sveta. Ka┼żd├Ż finan─Źn├Ż subjekt mus├ş sledova┼ą jednotliv├ę zostatky na ├║─Źtoch a pe┼ła┼żn├ę toky. ├Ü─Źtovn├í kniha je tie┼ż z├íkladom blockchainov├Żch siet├ş, preto┼że jej jadrom je glob├ílna bilancia, ktor├í n├ím d├íva odpove─Ć na ot├ízku, kto a v akom ─Źase vlastn├ş ak├ę akt├şva.

Blockchain zaznamen├íva cel├║ hist├│riu transakci├ş. Z├íznamy v blockchaine sa daj├║ ve─żmi ─żahko kontrolova┼ą. Blockchain prich├ídza s jednou ve─żkou v├Żhodou. Umo┼ż┼łuje n├ím vlastni┼ą akt├şva bez zbyto─Źn├Żch sprostredkovate─żov a zabezpe─Źi┼ą, aby nikto v syst├ęme nemohol podv├ídza┼ą.

Sie┼ą blockchain m├í v podstate dve z├íkladn├ę ├║lohy. Udr┼żiava┼ą ├║─Źtovn├║ knihu a umo┼żni┼ą prevod hodnoty z ├║─Źtu na ├║─Źet prostredn├şctvom transakci├ş. Prv├í gener├ícia blockchainov├Żch siet├ş umo┼ż┼łovala posiela┼ą transakcie len bezpodmiene─Źne (posunut├ę z ├║─Źtu Alice na ├║─Źet Boba). Druh├í gener├ícia pridala programovate─żnos┼ą, t. j. mo┼żnos┼ą posiela┼ą transakcie podmiene─Źne. Pre v├Żvoj├írov tret├şch str├ín s├║ k dispoz├şcii n├ístroje, ktor├ę im umo┼ż┼łuj├║ p├şsa┼ą a nasadzova┼ą programy (inteligentn├ę kontrakty/skripty), ktor├ę m├┤┼że sie┼ą vykon├íva┼ą decentralizovan├Żm sp├┤sobom. Na prv├║ gener├íciu siete blockchain mo┼żno nazera┼ą ako na PayPal. Druh├í gener├ícia umo┼żn├ş vybudovanie komplexn├ęho bankov├ęho syst├ęmu.

V tradi─Źnom svete financi├ş sa ─żudia spoliehaj├║ na ├║─Źtovn├şkov a sofistikovan├ę centralizovan├ę syst├ęmy. Aby ├║─Źtovn├şci nepodv├ídzali, je potrebn├ę monitorova┼ą finan─Źn├ę toky, akt├şvne zav├ídza┼ą opatrenia na prevenciu podvodov a auditova┼ą ├║─Źtovn├ę knihy.

Siete blockchain sa spoliehaj├║ na pravidl├í, ktor├ę s├║ zap├şsan├ę v zdrojovom k├│de. Za predpokladu, ┼że zdrojov├Ż k├│d je spr├ívne implementovan├Ż a spr├íva sa tak, ako v├Ą─Ź┼íina ─żud├ş o─Źak├íva, nie s├║ potrebn├ę ┼żiadne prevent├şvne opatrenia a v┼íetky ├║daje s├║ dostupn├ę v┼íetk├Żm. Ka┼żd├Ż m├┤┼że ma┼ą na svojom po─Ź├şta─Źi glob├ílnu ├║─Źtovn├║ knihu a priamo komunikova┼ą so sie┼ąou. Umo┼ż┼łuje interakciu Peer-to-Peer medzi pou┼ż├şvate─żmi, kde decentralizovan├í sie┼ą je d├┤veryhodn├Żm sprostredkovate─żom.

Ako pochopi┼ą blockchain z poh─żadu blokov

Blockchain je v podstate ┼ípecifick├í datab├íza, ktor├í dok├í┼że zabezpe─Źi┼ą nezmenite─żnos┼ą historick├Żch z├íznamov. Z├íznamy sa t├Żkaj├║ prevodov hodn├┤t medzi pou┼ż├şvate─żmi, ktor├ę sa uskuto─Ź┼łuj├║ prostredn├şctvom transakci├ş. Blockchain v┼żdy pozn├í presn├║ odpove─Ć na ot├ízku, ktor├Ż u┼ż├şvate─ż X vlastnil token Y v ─Źase Z. Ke─Ć┼że blockchain je pseudoanonymn├Ż, namiesto konkr├ętnych pou┼ż├şvate─żov sa pou┼ż├şvaj├║ adresy blockchainu. Blockchain uchov├íva hist├│riu v┼íetk├Żch transakci├ş uskuto─Źnen├Żch od sam├ęho za─Źiatku a┼ż po s├║─Źasnos┼ą. Okrem toho zabezpe─Źuje, ┼że hist├│riu nie je mo┼żn├ę prep├şsa┼ą.

Technicky je blockchain stavov├Ż stroj, preto┼że si pam├Ąt├í predch├ídzaj├║ce udalosti, ktor├ę sa naz├Żvaj├║ stavy syst├ęmu. Tieto udalosti s├║ interakcie medzi pou┼ż├şvate─żmi. Stav je mo┼żn├ę zmeni┼ą za vopred stanoven├Żch podmienok. Ka┼żd├Ż protokol m├í implementovan├║ logiku, ktor├í umo┼ż┼łuje prechod stavu z S-0 do S+1. V pravideln├Żch intervaloch sie┼ą vytv├íra nov├ę bloky, v r├ímci ktor├Żch doch├ídza k takzvan├ęmu prechodu stavu.

Rozdiel medzi modelom UTXO a modelom zalo┼żen├Żm na ├║─Źtovn├şctve spo─Ź├şva v sp├┤sobe spracovania ├║─Źtovn├şctva. Nem├í ni─Ź spolo─Źn├ę s prechodom stavu z h─żadiska prid├ívania nov├Żch blokov. Nov├Ż blok vytv├íra jeden uzol a mus├ş by┼ą rozposlan├Ż do siete. Ka┼żd├Ż nov├Ż blok obsahuje s├║bor transakci├ş a ak ho akceptuje v├Ą─Ź┼íina ├║─Źastn├şkov siete (technicky povedan├ę v┼íetky uzly, ktor├ę sa akt├şvne podie─żaj├║ na konsenze siete), nastane prechod stavu. Ak je blok prijat├Ż, s├║ prijat├ę aj v┼íetky obsiahnut├ę transakcie. Nov├Ż blok bude trvalo ulo┼żen├Ż v blockchaine a s jeho pridan├şm sa vlastn├şci akt├şv zmenia presne tak, ako to diktuj├║ akceptovan├ę transakcie.

├Ülohou siete blockchain je v podstate overova┼ą transakcie, vklada┼ą platn├ę transakcie do nov├Żch blokov, overova┼ą bloky a prid├íva┼ą ich do hist├│rie blockchainu. Dodajme, ┼że tento proces prebieha decentralizovan├Żm sp├┤sobom, tak┼że nov├ę transakcie a bloky musia by┼ą vysielan├ę do celej siete, ktor├í sa star├í o valid├íciu.

Adresy blockchainu

Vlastn├şctvo akt├şv (minc├ş a tokenov) je reprezentovan├ę vlastn├şctvom priv├ítneho kryptografick├ęho k─ż├║─Źa k danej adrese, ktor├Ż je odvoden├Ż od verejn├ęho kryptografick├ęho k─ż├║─Źa. Zvy─Źajne je adresa hashovan├í. Transakciu si m├┤┼żete predstavi┼ą ako ┼ípecifick├║ spr├ívu do siete, v ktorej odosielate─ż d├íva pokyn na prevod vybran├ęho po─Źtu akt├şv z adresy odosielate─ża na adresu pr├şjemcu. Platn├í transakcia mus├ş obsahova┼ą d├┤kaz, ┼że odosielate─ż je skuto─Źn├Żm vlastn├şkom tokenov. Na tento ├║─Źel sa na podp├şsanie transakcie pou┼ż├şva s├║kromn├Ż kryptografick├Ż k─ż├║─Ź. Sie┼ą, resp. ka┼żd├Ż uzol, je schopn├Ż overi┼ą podpis a vyhodnoti┼ą, ─Źi je transakcia platn├í. V pr├şpade jednoduch├Żch transakci├ş je overovanie zalo┼żen├ę na dvojici s├║kromn├ęho a verejn├ęho k─ż├║─Źa.

Pe┼ła┼żenka pom├┤┼że pou┼ż├şvate─żom generova┼ą adresy blockchainu a posiela┼ą podp├şsan├ę transakcie. Sie┼ą over├ş transakciu prostredn├şctvom verejn├ęho k─ż├║─Źa a ak je platn├í, bude zahrnut├í do nov├ęho bloku.

Ak je transakcia prijat├í a je obsiahnut├í v bloku, ktor├Ż bol pridan├Ż do blockchainu, majetok bude vlastni┼ą majite─ż adresy pr├şjemcu. Iba nov├Ż vlastn├şk ich m├┤┼że min├║┼ą, op├Ą┼ą prostredn├şctvom podpisu vykonan├ęho s├║kromn├Żm k─ż├║─Źom. Pou┼ż├şvate─ż m├┤┼że samozrejme posiela┼ą akt├şva aj s├ím sebe.

Tento koncept je rovnak├Ż pre model UTXO aj model zalo┼żen├Ż na ├║─Źtovn├şctve, preto┼że je zalo┼żen├Ż na kryptografii s verejn├Żm k─ż├║─Źom (asymetrickej kryptografii).

Je d├┤le┼żit├ę si uvedomi┼ą, ┼że to, ─Źo pou┼ż├şvatelia vn├şmaj├║ ako mince alebo tokeny, s├║ v skuto─Źnosti len digit├ílne ─Ź├şsla spojen├ę s adresami blockchainu. ├Ü─Źelom transakcie je prenies┼ą ─Ź├şslo z adresy odosielate─ża a priradi┼ą rovnak├║ hodnotu jednej adrese alebo ju rozdeli┼ą medzi viacero adries pr├şjemcu. Ke─Ć┼że sa vy┼żaduj├║ poplatky, hodnota sa zvy─Źajne rozdel├ş na viacero adries. Hodnota na vstupe a v├Żstupe transakcie mus├ş by┼ą v┼żdy t├í ist├í. Hodnota sa nem├┤┼że vytvori┼ą alebo strati┼ą po─Źas spolo─Źnej transakcie. Siete zvy─Źajne definuj├║ pravidl├í pre vytvorenie novej hodnoty.

V┼żdy, ke─Ć ─żudia hovoria o minciach alebo ┼żet├│noch, vr├ítane tohto ─Źl├ínku, v skuto─Źnosti hovoria o ─Ź├şslach. Tokeny s├║ len abstrakciou ─Ź├şsel, ktor├í je pre pou┼ż├şvate─żov ─żahko pochopite─żn├í.

Pou┼ż├şvatelia zaobch├ídzaj├║ so svojimi akt├şvami ako so zostatkom na svojich ├║─Źtoch. Pe┼ła┼żenky generuj├║ v┼íetky s├║kromn├ę a priv├ítne p├íry k─ż├║─Źov, tak┼że poznaj├║ v┼íetky verejn├ę adresy pou┼ż├şvate─żov. V┼íetky vytvoren├ę adresy m├┤┼żu obsahova┼ą akt├şva. Pe┼ła┼żenka spo─Ź├şta v┼íetky tokeny na adres├ích (spo─Ź├şta v┼íetky digit├ílne ─Ź├şsla) a zobraz├ş to pou┼ż├şvate─żovi ako zostatok. Pe┼ła┼żenka by mohla ma┼ą len jednu jedin├║ adresu a v┼íetko by fungovalo ├║plne rovnako.

Rozdiel medzi modelom UTXO a modelom zalo┼żen├Żm na ├║─Źtoch

Rozdiel medzi modelom UTXO a modelom zalo┼żen├Żm na ├║─Źtoch spo─Ź├şva v tom, ako s├║ akt├şva ulo┼żen├ę na adres├ích a ako sa s nimi zaobch├ídza pri transakci├ích. In├Żmi slovami, ako tieto dva r├┤zne modely nar├íbaj├║ so zostatkami a ako sa stav syst├ęmu zaznamen├íva. V ┼íir┼íom kontexte je d├┤le┼żit├ę, ak├ę pravidl├í a podmienky s├║ definovan├ę (a implementovan├ę v zdrojovom k├│de uzlov) pri vytv├íran├ş nov├ęho bloku. Neoddelite─żnou s├║─Źas┼ąou prenosu hodn├┤t je potvrdenie sie┼ąou.

V├Żstup nespotrebovanej transakcie (UTXO) je technick├Ż term├şn pre po─Źet digit├ílnych akt├şv, ktor├ę zostan├║ po spracovanej transakcii. UTXO je digit├ílne ─Ź├şslo, ktor├ę si m├┤┼żete predstavi┼ą ako po─Źet akt├şv. V modeli UTXO m├┤┼żete pojmy UTXO a akt├şvum (minca alebo token) pou┼ż├şva┼ą zamenite─żne.

Cardano pou┼ż├şva roz┼í├şren├Ż model UTXO, ktor├Ż sa naz├Żva Extended-UTXO (EUTXO). V modeli EUTXO sa prevod akt├şv zaznamen├íva ako usmernen├Ż acyklick├Ż graf (DAG) medzi adresami. Aj ke─Ć to znie desivo, netreba sa b├í┼ą. V skuto─Źnosti je to jednoduch├ę na pochopenie.

Pochopenie stakingu v Cardane

V roku 2022 osl├ívi Cardano 2 roky od spustenia Proof-of-Stake. Staking si z├şskal pozornos┼ą od sam├ęho za─Źiatku. V ─Źase p├şsania tohto ─Źl├ínku je zaregistrovan├Żch viac ako 3 100 poolov a viac ako 1,1 mili├│na stakerov. Budeme diskutova┼ą o v├Żzname stakingu z poh─żadu pou┼ż├şvate─żov. Chceme v├ím pon├║knu┼ą r├┤zne uhly poh─żadu na staking a jeho ┼íir┼í├ş v├Żznam pre spolo─Źnos┼ą. Viac inform├íci├ş tu.

Ako sme u┼ż povedali, ka┼żd├ę UTXO je reprezentovan├ę digit├ílnym ─Ź├şslom a je abstrakciou mince alebo tokenu. UTXO si m├┤┼żete predstavi┼ą ako fyzick├ę bankovky alebo mince, ale s t├Żm rozdielom, ┼że nie s├║ ur─Źen├ę nomin├ílne hodnoty, ktor├ę by UTXO museli ma┼ą. Napr├şklad 10 ADA m├┤┼że by┼ą jedna UTXO. 12 ADA m├┤┼że by┼ą tie┼ż jedna UTXO. Dokonca aj 116,85 m├┤┼że by┼ą jedno UTXO.

Teraz si predstavte, ┼że Alica m├í v pe┼ła┼żenke v┼íetky tri UTXO. Nez├íle┼ż├ş na tom, ─Źi m├í v┼íetky tri UTXO na rovnakej adrese, alebo ─Źi je ka┼żd├ę UTXO na vlastnej adrese. Ak chce vedie┼ą svoj zostatok, mus├ş zr├íta┼ą v┼íetky UTXO. Urob├ş to za ┼łu jej pe┼ła┼żenka. Jej zostatok je 10 + 12 + 116,85 = 138,85 ADA.

Rovnak├Ż zostatok v pe┼ła┼żenke m├┤┼że by┼ą reprezentovan├Ż r├┤zne, pokia─ż ide o rozdelenie UTXO na adresy. M├┤┼żete ma┼ą 3 UTXO na jednej adrese alebo 3 UTXO na 3 adres├ích.

Pozrime sa, ─Źo sa stane, ke─Ć sa Alica rozhodne posla┼ą 15 UTXO Bobovi. Bob m├í vo svojej pe┼ła┼żenke 21 ADA na jednej adrese. Rozhodne sa vytvori┼ą nov├║ adresu, na ktor├║ chce od Alice prija┼ą 15 ADA. Alicina pe┼ła┼żenka mus├ş pou┼żi┼ą 2 UTXO. Pe┼ła┼żenka si vyberie UTXO s 10 a 12 ADA. UTXO s 10 ADA sa minie v plnej v├Ż┼íke. Z UTXO s 12 ADA sa vyberie len 5 ADA + 0,2 ADA (transak─Źn├Ż poplatok).

Po prijat├ş transakcie bude ma┼ą Alica len 2 UTXO s 6,8 a 116,85 ADA. Celkovo bude ma┼ą Alica 123,65 ADA. Bob bude ma┼ą 2 UTXO s 21 a 15 UTXO. Celkovo bude ma┼ą Bob 36 ADA. Na adresu poplatku sa prid├í 0,2 ADA.

Prostredn├şctvom transakcie bol vykonan├Ż prechod medzi dvoma stavmi. Transakcia bola vytvoren├í v stave N (blok N) a bola zaraden├í do bloku N+1.

Prostredn├şctvom transakcie bol vykonan├Ż prechod medzi dvomi stavmi (blokmi). Zlo┼żenie transakcie je d├┤le┼żit├ę. Transakcia m├í vstupy a v├Żstupy. V┼íimnite si, ako sa hodnoty na vstupe transformuj├║ na hodnoty na v├Żstupe pod─ża potrieb transakcie, presne tak, ako ju zostavil odosielate─ż (pe┼ła┼żenka). Ka┼żd├Ż UTXO v transakcii sa mus├ş min├║┼ą ako celok, preto┼że z├íznamy v predch├ídzaj├║cich blokoch sa nedaj├║ upravova┼ą. Vstup je s├║bor UTXO, ktor├ę sa maj├║ min├║┼ą, t. j. celkov├í hodnota sa pou┼żije na vytvorenie v├Żstupov transakcie. V├Żstupom transakcie je tie┼ż sada UTXO, ktor├í sa m├í priradi┼ą novej adrese. Alternat├şvne m├┤┼żu by┼ą niektor├ę alebo v┼íetky UTXO priraden├ę tej istej adrese s r├┤znymi hodnotami. Pou┼ż├şvate─ż m├┤┼że ma┼ą na jednej adrese 3 UTXO a ┼żel├í si ma┼ą na tej istej adrese len 1 UTXO. Celkov├í hodnota zost├íva rovnak├í.

V na┼íom pr├şklade sme mali dva vstupy a tri v├Żstupy. Vstupom boli 3 UTXO patriace Alici. V├Żstupom boli 3 UTXO. Konkr├ętne UTXO s 15 ADA pre Boba, UTXO s 0,2 ADA ako transak─Źn├Ż poplatok a UTXO s 6,8 ADA, ─Źo je suma vr├íten├í Alici. Aby bola transakcia platn├í, mus├ş sa po─Źet minc├ş na vstupe zhodova┼ą s po─Źtom minc├ş na v├Żstupe. V na┼íom pr├şklade je to 22 minc├ş ADA.

─Żu─Ćom sa m├┤┼że zda┼ą zvl├í┼ítne, ┼że je potrebn├ę vr├íti┼ą Alici 6,8 ADA. Je to podobn├ę, ako ke─Ć v├ím pokladn├şk v obchode vr├íti peniaze, ak zaplat├şte vy┼í┼íou bankovkou, ako je celkov├í cena n├íkupu. Op├Ą┼ą plat├ş, ┼że ka┼żd├ę UTXO sa mus├ş min├║┼ą v plnej v├Ż┼íke, preto je potrebn├ę zabezpe─Źi┼ą, aby sa zvy┼íok vr├ítil (ak nejak├Ż zvy┼íok existuje) Alici ako s├║─Źas┼ą transakcie.

V┼íimnite si, ┼że model UTXO pracuje s jednotliv├Żmi UTXO po─Źas vytv├írania transakci├ş. Pri v├Żdaji ur─Źit├ęho po─Źtu tokenov sa mus├ş vybra┼ą potrebn├Ż po─Źet vhodn├Żch UTXO. Ak je s├║─Źet tokenov vo vybran├Żch UTXO vy┼í┼í├ş ako po─Źet tokenov, ktor├ę sa maj├║ min├║┼ą, zvy┼íok sa mus├ş vr├íti┼ą ako nov├ę UTXO na adresu odosielate─ża.

S UTXO sa zaobch├ídza rovnako ako so skuto─Źn├Żmi peniazmi. Ak m├íte v obchode zaplati┼ą 85 dol├írov, m├┤┼żete zaplati┼ą 100-dol├írovou bankovkou a pokladn├şk v├ím vr├íti 15 dol├írov (10 a 5-dol├írov├ę bankovky). Zo 100-dol├írovej bankovky nem├┤┼żete nejako odreza┼ą 85 dol├írov a plati┼ą ┼łou. V pe┼ła┼żenke by ste mohli n├íjs┼ą 17 p├Ą┼ądol├írov├Żch bankoviek a zaplati┼ą nimi. Rovnako dobre m├┤┼żete ma┼ą v pe┼ła┼żenke Cardano 17 UTXO s 5 ADA.

Ka┼żd├ę UTXO sa d├í min├║┼ą len jedenkr├ít a v bud├║cnosti u┼ż nikdy viac. Po jeho minut├ş sa vytvor├ş jedno alebo viac nov├Żch UTXO, ktor├ę sa m├┤┼żu n├ísledne min├║┼ą. Tento cyklus sa neust├íle opakuje. Model UTXO je sp├┤sob organiz├ície blockchainu tak, aby sa ┼żiadne akt├şva neutratili dvakr├ít. Blockchain prech├ídza do nov├ęho stavu v pravideln├Żch intervaloch. Pou┼ż├şvatelia m├┤┼żu utr├íca┼ą nespotrebovan├ę UTXO v ktoromko─żvek bud├║com stave. Napr├şklad Bob m├┤┼że dosta┼ą UTXO v stave N a rozhodn├║┼ą sa ich min├║┼ą o 14 dn├ş, ─Źo m├┤┼że by┼ą stav N+60 480. Utrati┼ą UTXO v podstate znamen├í prenos hodnoty na in├║ adresu.

V ka┼żdom bloku je nieko─żko transakci├ş, tak┼że sa minie ve─ża UTXO. V┼íetky transakcie spolu tvoria kolekciu (blok), ktor├Ż predstavuje prechod medzi stavmi. V modeli UTXO predstavuje glob├ílny stav cel├Ż graf v├Żstupov transakci├ş, vydan├Żch aj nevydan├Żch. Je mo┼żn├ę rozli┼íova┼ą medzi aktu├ílnym stavom a v┼íetk├Żmi predch├ídzaj├║cimi stavmi, ─Źo je v podstate cel├í hist├│ria transakci├ş od prv├ęho bloku Genesis.

Ak by v├ís zauj├şmal po─Źet v┼íetk├Żch tokenov, ktor├ę mo┼żno min├║┼ą v aktu├ílnom stave, museli by ste spo─Ź├şta┼ą v┼íetky nespotrebovan├ę v├Żstupy (UTXO). N├íjs┼ą ich v podstate znamen├í prejs┼ą v┼íetky transakcie od bloku Genesis po s├║─Źasnos┼ą. Pln├ę uzly overuj├║ v┼íetky transakcie po─Źas synchroniz├ície so sie┼ąou, tak┼że poznaj├║ aktu├ílnu sadu UTXO.

Poz├şcie UTXOs medzi stavmi. Na obr├ízku je 6 modr├Żch UTXO, ktor├ę s├║ nevyu┼żit├ę.

Pozrime sa teraz na model zalo┼żen├Ż na ├║─Źtoch. Ten je podobn├Ż bankovn├ęmu ├║─Źtu. Rovnako ako pri modeli UTXO s├║ akt├şva digit├ílne ─Ź├şsla, ktor├ę s├║ spojen├ę s adresami blockchainu. V modeli zalo┼żenom na ├║─Źte sa pre dan├Ż typ akt├şva udr┼żiava iba aktu├ílny zostatok na adrese. Transakcia upravuje zostatok na adres├ích tak├Żm sp├┤sobom, ┼że odoberie hodnotu z jednej adresy a pripo─Ź├şta ju k inej adrese.

Ilustrujme si to na pr├şklade. Alica m├í 138,85 ETH a rozhodne sa posla┼ą Bobovi 15 ETH. Bob m├í na svojom ├║─Źte 21 ETH.

Transakcia odoberie 15 ETH z Alicinho zostatku a pripo─Ź├şta ich k Bobovmu zostatku. ─Äalej sa z Alicinho zostatku (GAS) odpo─Ź├şta transak─Źn├Ż poplatok 0,15 ETH.

V modeli zalo┼żenom na ├║─Źtoch mo┼żno glob├ílny stav ch├ípa┼ą ako datab├ízu v┼íetk├Żch ├║─Źtov a ich aktu├ílnych zostatkov r├┤znych akt├şv v sieti. Pri ka┼żdom pridan├ş nov├ęho bloku sa stav syst├ęmu aktualizuje pod─ża v┼íetk├Żch transakci├ş, ktor├ę s├║ v bloku obsiahnut├ę. Po─Źet ├║─Źtov zost├íva kon┼ítantn├Ż a nez├ívisl├Ż od po─Źtu uskuto─Źnen├Żch transakci├ş, pokia─ż zost├íva kon┼ítantn├Ż po─Źet pou┼ż├şvate─żov.

Posledn├Ż stav N+3 je aktu├ílny glob├ílny stav.

V┼íimnite si rozdiely medzi t├Żmito dvoma pojmami. Model UTXO na ├║rovni protokolu nepracuje s ideou pe┼ła┼żenky alebo zostatku. Model je zalo┼żen├Ż len na hist├│rii transakci├ş. Zostatok pou┼ż├şvate─ża sa mus├ş ur─Źi┼ą lok├ílne na z├íklade hist├│rie prevodov UTXO.

Sp├Ą┼ą na bloky

Teraz sa vr├í┼ąme k blokom a vysvetlime si ich v├Żznam pri prechode medzi stavmi. Ka┼żd├í transakcia je v podstate ┼żiados┼ą o zmenu glob├ílneho stavu. V pr├şpade blockchainovej siete by mala po┼żadovan├í v├Ą─Ź┼íina uzlov v sieti s├║hlasi┼ą a prija┼ą nov├Ż stav. Synchroniz├ícia celej siete s ka┼żdou jednotlivou transakciou by bola ve─żmi neefekt├şvna z h─żadiska zdrojov. Glob├ílna synchroniz├ícia uzlov je ─Źasovo n├íro─Źn├Ż proces, preto┼że inform├ície sa musia vysiela┼ą do cel├ęho sveta. S rast├║cim po─Źtom transakci├ş by sie┼ą nebola schopn├í synchronizova┼ą sa v─Źas. Rie┼íen├şm je blok, ktor├Ż obsahuje viacero transakci├ş. Viacer├ę po┼żiadavky pou┼ż├şvate─żov sa sprac├║vaj├║ v r├ímci synchroniz├ície prostredn├şctvom blokov.

Bloky s├║ srdcom siet├ş blockchain. Bitcoin prech├ídza z aktu├ílneho stavu do nov├ęho stavu v priemere ka┼żd├Żch 10 min├║t. Cardano pribli┼żne ka┼żd├Żch 20 sek├║nd.

Ke─Ć┼że ka┼żd├í jednotliv├í transakcia je ┼żiados┼ąou o zmenu stavu, blok so v┼íetk├Żmi transakciami ktor├ę obsahuje, sa st├íva ┼żiados┼ąou o zmenu stavu a je prostriedkom synchroniz├ície siete. Ak sa m├í zmeni┼ą glob├ílny stav, po┼żadovan├í v├Ą─Ź┼íina uzlov v sieti mus├ş akceptova┼ą cel├Ż blok. To znamen├í, ┼że v┼íetky transakcie v bloku musia by┼ą platn├ę jednotlivo a vz├íjomne. Napr├şklad pri overovan├ş nov├ęho bloku mus├ş ka┼żd├Ż uzol zabezpe─Źi┼ą, aby sa ten ist├Ż akt├şv nevynalo┼żil dvakr├ít . Ak cel├Ż blok nezodpoved├í pravidl├ím valid├ície, sie┼ą ho odmietne.

Sie┼ą blockchain sa neust├íle synchronizuje. Prechod medzi stavmi sa uskuto─Ź┼łuje prostredn├şctvom blokov.

Blockchain je v podstate s├║bor blokov, ktor├ę s├║ prepojen├ę tak├Żm sp├┤sobom, ┼że ich poradie nemo┼żno zmeni┼ą. Vo v├Ą─Ź┼íine s├║─Źasn├Żch siet├ş n├íhodne vybran├Ż uzol vytvor├ş nov├Ż blok. Tento blok sa potom rozo┼íle v┼íetk├Żm ostatn├Żm uzlom v sieti. Je d├┤le┼żit├ę, aby sa nov├Ż blok roz┼í├şril v celej sieti d├ívno predt├Żm, ako in├Ż n├íhodne vybran├Ż uzol vytvor├ş ─Ćal┼í├ş nov├Ż blok, aby sa nov├Ż blok mohol prepoji┼ą s predch├ídzaj├║cim blokom. Ak by bolo ┼í├şrenie nov├Żch blokov pr├şli┼í pomal├ę, vznikali by vidlice, ─Źo je ne┼żelan├Ż stav. Pri prid├ívan├ş ─Ćal┼íieho bloku k predch├ídzaj├║cemu bloku by bolo potrebn├ę vybra┼ą jeden z dvoch blokov, ─Źo znamen├í, ┼że jeden z blokov by zostal v blockchaine naveky a druh├Ż by bol osloboden├Ż (so v┼íetk├Żmi transakciami).

Modely UTXO a modely zalo┼żen├ę na ├║─Źtoch sa v koncepcii prechodu do nov├ęho stavu na z├íklade blokov nel├ş┼íia. Z├ísadn├Ż rozdiel je v glob├ílnej aktualiz├ícii stavu. V modeli UTXO sa glob├ílny stav iba roz┼íiruje vytv├íran├şm nov├Żch UTXO, zatia─ż ─Źo v modeli zalo┼żenom na ├║─Źtoch sa glob├ílny stav aktualizuje na ├║rovni zmien zostatkov.

Tieto dva modely sa l├ş┼íia aj v sp├┤sobe spracovania transakci├ş. Model UTXO je overovac├ş model. Transakcie ┼ípecifikuj├║ ┼żiadan├Ż v├Żsledok prechodu stavu. V├Żsledok je definovan├Ż ako nov├ę UTXO, ktor├ę je vytvoren├ę na z├íklade vstupov do transakcie. Uzol overuje, ─Źi s├║ vstupy nevy─Źerpan├ę a ─Źi je digit├ílny podpis transakcie alebo in├ę podmienky ─Źerpania platn├ę. Model zalo┼żen├Ż na ├║─Źte je v├Żpo─Źtov├Ż model. Transakcie in┼ítruuj├║, ako by mal vyzera┼ą prechod stavu**. Uzly vypo─Ź├ştaj├║ nov├Ż stav na z├íklade in┼ítrukci├ş. V oboch pr├şpadoch si zmena stavu m├┤┼że vy┼żadova┼ą vykonanie inteligentnej zmluvy. Inteligentn├ę zmluvy mo┼żno pova┼żova┼ą za roz┼í├şrenie in┼ítrukci├ş prechodu stavu.

Rozdiely v modeloch zalo┼żen├Żch na UTXO a na ├║─Źtoch maj├║ implik├ície, pokia─ż ide o valid├íciu blokov, vykon├ívanie inteligentn├Żch zml├║v a ┼ík├ílovate─żnos┼ą.

Pochopenie základov

Predt├Żm, ako sa pust├şme do roz┼í├şren├ęho UTXO, je potrebn├ę stru─Źne vysvetli┼ą niektor├ę z├íkladn├ę pojmy, ktor├ę s├║ v├Żvoj├írom dobre zn├íme, ale nie ┼íirokej verejnosti.

Za─Źnime s pojmami s├║be┼żnos┼ą a paralelizmus .

S├║be┼żnos┼ą znamen├í, ┼że viacero v├Żpo─Źtov prebieha ÔÇťtakmerÔÇŁ s├║─Źasne. Pou┼ż├şvate─ż m├┤┼że vn├şma┼ą, ┼że ├║lohy sa vykon├ívaj├║ s├║be┼żne, ale na pozad├ş je len jeden akt├ęr, ktor├Ż ve─żmi r├Żchlo prep├şna medzi ├║lohami. To sa st├íva, ak m├íte po─Ź├şta─Ź s jedn├Żm procesorom. S├║be┼żnos┼ą umo┼ż┼łuje, aby textov├Ż editor a prehr├íva─Ź hudby be┼żali s├║─Źasne. Proces venuje ka┼żd├ęmu procesu kr├ítky ─Źas, tak┼że z poh─żadu pou┼ż├şvate─ża sa zd├í, ┼że be┼żia s├║─Źasne. Je to preto, ┼że procesor je ove─ża r├Żchlej┼í├ş ako ─żudsk├ę vn├şmanie. Ak m├í po─Ź├şta─Ź viacero procesorov, m├┤┼że jednotliv├ę ├║lohy delegova┼ą na vyhraden├Ż procesor. ├Ülohy tak m├┤┼żu be┼ża┼ą paralelne .

Na dosiahnutie s├║be┼żnosti v r├ímci jednej ve─żkej ├║lohy alebo skupiny ├║loh (ktor├ę m├┤┼żu, ale nemusia by┼ą pr├şbuzn├ę) mus├ş by┼ą mo┼żn├ę rozdeli┼ą pr├ícu na men┼íie ─Źasti tak, aby bolo mo┼żn├ę nez├ívisle pracova┼ą na pod ├║loh├ích.

Ak m├í jedin├Ż akt├ęr spracova┼ą skupinu ├║loh, m├┤┼że dokon─Źi┼ą jednu ├║lohu pred za─Źat├şm ─Ćal┼íej. V tomto pr├şpade by akt├ęr sprac├║val ├║lohy postupne. Pr├şpadne m├┤┼że jednotliv├Ż akt├ęr vo vhodnom okamihu prep├şna┼ą medzi ├║lohami postupne. Jeden akt├ęr m├┤┼że dokon─Źi┼ą v┼íetky ├║lohy pribli┼żne v rovnakom ─Źase. Ot├ízkou je, ─Źi je prep├şnanie pre dan├ę ├║lohy efekt├şvnej┼íie. V tomto pr├şpade sa ├║lohy sprac├║vaj├║ s├║be┼żne, ale nie paralelne.

M├┤┼że by┼ą efekt├şvnej┼íie, ak je k dispoz├şcii viac agentov, ktor├ş s├║ schopn├ş spracova┼ą p├ír ├║loh. V tomto pr├şpade mus├ş by┼ą viacero agentov schopn├Żch postupova┼ą pri rie┼íen├ş ├║loh s├║─Źasne bez toho, aby si navz├íjom prek├í┼żali. ├Ülohy by sa sprac├║vali s├║be┼żne a tie┼ż paralelne, tak┼że by boli dokon─Źen├ę r├Żchlej┼íie.

Majme viac ├║loh, ktor├ę sa musia spracova┼ą. Jeden akt├ęr m├┤┼że ├║lohy dokon─Źova┼ą postupne, t. j. sekven─Źne. Pr├şpadne m├┤┼że jeden akt├ęr prep├şna┼ą medzi ├║lohami, ktor├ę sa spracov├ívaj├║ s├║be┼żne. Vid├şte, ┼że ├║lohy m├┤┼żu sprac├║va┼ą 3 agenti. V tomto pr├şpade sa ├║lohy sprac├║vaj├║ s├║be┼żne a tie┼ż paralelne.

Niekedy m├┤┼że by┼ą ┼ąa┼żk├ę rozdeli┼ą pr├ícu na viacero ├║loh, ktor├ę by sa dali spracova┼ą samostatne. Z├ívis├ş to od toho, ─Źi je mo┼żn├ę vstupy rozdeli┼ą na samostatn├ę jednotky, alebo ─Źi viacer├ş agenti potrebuj├║ s├║─Źasne pou┼ż├şva┼ą jedin├Ż zdroj. V takom pr├şpade m├┤┼żu agenti poci┼ąova┼ą z├ívadu. Znamen├í to, ┼że viac agentov chce pou┼ż├şva┼ą unik├ítne zdroje v rovnakom ─Źase, ale len jeden z nich m├┤┼że skuto─Źne uspie┼ą. V├ş┼ąaz m├┤┼że zdroj spotrebova┼ą natrvalo alebo ho uvo─żni┼ą pre ostatn├Żch, ke─Ć ho u┼ż nepotrebuje. S├║perenie mo┼żno rie┼íi┼ą ur─Źitou formou synchroniz├ície agentov. Agenti m├┤┼żu by┼ą obmedzen├ş pri spracovan├ş svojich ─Źiastkov├Żch ├║loh.

Vo v┼íeobecnosti je v├Żhodn├ę sna┼żi┼ą sa dosiahnu┼ą maxim├ílnu ├║rove┼ł paraleliz├ície, ke─Ć n├ím ide o r├Żchlos┼ą spracovania ├║lohy alebo skupiny men┼í├şch ├║loh. Z h─żadiska ┼ík├ílovate─żnosti je pre blockchainov├ę siete v┼żdy v├Żhodnej┼íie, ak je mo┼żn├ę dosiahnu┼ą vy┼í┼íiu paraleliz├íciu, t. j. umo┼żni┼ą spracovanie v├Ą─Ź┼íieho po─Źtu transakci├ş s├║─Źasne. M├┤┼że v┼íak by┼ą potrebn├ę rie┼íi┼ą spornos┼ą a mnoh├ę ─Ćal┼íie aspekty.

Ned├í sa jednozna─Źne poveda┼ą, ┼że paraleliz├ícia je v┼żdy najlep┼í├şm mo┼żn├Żm rie┼íen├şm. S├║be┼żnos┼ą m├┤┼że ma┼ą v niektor├Żch ┼ípecifick├Żch pr├şpadoch svoje v├Żhody. Najm├Ą ak je potrebn├í nejak├í forma synchroniz├ície, aby sa predi┼ílo probl├ęmom s kontingenciou. Neexistuje ni─Ź tak├ę ako najlep┼í├ş univerz├ílny n├ívrh. Sk├┤r m├┤┼żeme hovori┼ą o vhodnej┼íom rie┼íen├ş pre konkr├ętny probl├ęm.

Vysvetlime si pojem determinizmus . Deterministick├Ż algoritmus je algoritmus, ktor├Ż pri danom vstupe v┼żdy vytvor├ş tento ist├Ż v├Żstup, pri─Źom z├íkladn├Ż stroj v┼żdy prech├ídza rovnakou postupnos┼ąou stavov.

Z poh─żadu pou┼ż├şvate─żov to znamen├í, ┼że m├┤┼żu odhadn├║┼ą alebo dokonca vopred vedie┼ą, ak├Ż v├Żsledok m├┤┼żu o─Źak├íva┼ą po vlo┼żen├ş konkr├ętnych vstupov. Ak napr├şklad do kalkula─Źky zad├íte oper├íciu 5+5, vopred o─Źak├ívate, ┼że v├Żsledok bude 10. Ak├Żko─żvek in├Ż v├Żsledok by bol chybou. V├Żvoj├íri sa sna┼żia vytv├íra┼ą syst├ęmy tak, aby boli ─Źo najviac deterministick├ę, preto┼że to zaru─Źuje vysok├║ ├║rove┼ł spo─żahlivosti, a t├Żm aj vysok├Ż u┼ż├şvate─żsk├Ż komfort.

V kontexte blockchainu chc├║ ma┼ą pou┼ż├şvatelia mo┼żnos┼ą predv├şda┼ą vopred v├Żsledok predlo┼żenia transakcie. Determinizmus znamen├í, ┼że ke─Ć pou┼ż├şvate─ż vytvor├ş transakciu, chce, aby sa transakcia s nastaven├Żm poplatkom dostala do bloku ─Źo najsk├┤r a mala o─Źak├ívan├Ż v├Żsledok. Rovnak├ę o─Źak├ívania maj├║ pou┼ż├şvatelia aj v pr├şpade overovania skriptov a vykon├ívania inteligentn├Żch kontraktov. Ke─Ć je transakcia odoslan├í, nemala by zlyha┼ą a pou┼ż├şvate─ż by nemal plati┼ą za transakciu, ktor├í zlyhala.

Po─Źas n├ívrhu ├║─Źtovn├ęho modelu spolu so sp├┤sobom, ak├Żm sa maj├║ inteligentn├ę kontrakty spracov├íva┼ą, je d├┤le┼żit├ę predv├şda┼ą podmienky, za ktor├Żch m├┤┼że d├┤js┼ą k indeterminizmu. Je d├┤le┼żit├ę pochopi┼ą d├┤vody, ktor├ę ved├║ k indeterminizmu, a pok├║si┼ą sa navrhn├║┼ą syst├ęm, v ktorom sa mu mo┼żno vyhn├║┼ą alebo sa bude vyskytova┼ą minim├ílne. V├Żvoj├íri decentralizovan├Żch aplik├íci├ş by mali ma┼ą k dispoz├şcii n├ístroje, ktor├ę im pom├┤┼żu vytvori┼ą programy, ktor├ę sa spr├ívaj├║ predv├şdate─żne a s├║ bezpe─Źn├ę.

Jedn├Żm z riz├şk pre aplik├ície je pr├şstup k mutovate─żn├Żm ├║dajom hlavnej knihy, t. j. ├║dajom, ktor├ę sa m├┤┼żu neust├íle meni┼ą. Ak v├Żsledok transakcie alebo inteligentn├ęho kontraktu z├ívis├ş od stavu mutovate─żn├Żch ├║dajov, m├┤┼że po─Źas vykon├ívania d├┤js┼ą k neur─Źitosti. V┼żdy je v├Żhodn├ę, ke─Ć je spracovanie oper├íci├ş ─Źo najviac izolovan├ę od svojho okolia (nepou┼ż├şva┼ą extern├ę mutovate─żn├ę ├║daje) a z├ívis├ş len od lok├ílnych ├║dajov.

Ka┼żd├í oper├ícia je v┼żdy do ur─Źitej miery z├ívisl├í od svojho prostredia. Ot├ízkou je, do akej miery m├┤┼że prostredie ovplyvni┼ą v├Żsledok oper├ície a ako mo┼żno prostredie ovplyvni┼ą. Ak je ├║to─Źn├şk schopn├Ż zmeni┼ą mutovate─żn├ę ├║daje ├║─Źtovnej knihy, m├┤┼że ovplyvni┼ą v├Żsledok transakci├ş a vykon├ívanie inteligentn├Żch kontraktov s cie─żom z├şska┼ą osobn├Ż zisk. N├ívrh syst├ęmu by mal minimalizova┼ą mo┼żnos┼ą ├║tokov.

Stru─Źn├í hist├│ria v├Żvoja ├║─Źtovn├Żch modelov

Za─Źnime najprv modelom Bitcoin, ktor├Ż ako prv├Ż pri┼íiel s modelom UTXO. V├Żhodou UTXO je, ┼że v├Żpo─Źet po─Źas overovania transakci├ş sa vykon├íva mimo re┼ąazca. Transakcie s├║ z├írove┼ł v├Żsledkami v├Żpo─Źtu (lok├ílne overenie) a d├┤kazmi. Transakcie sta─Ź├ş ulo┼żi┼ą do blockchainu a nie je potrebn├ę ─Ćalej rie┼íi┼ą stavy a ich pr├şpadn├ę ukladanie.

Vstupy transakci├ş s├║ v┼żdy existuj├║ce nevyu┼żit├ę UTXO a pre uzol je jednoduch├ę ich overi┼ą. To znamen├í, ┼że t├í ist├í transakcia alebo tie ist├ę vstupy nem├┤┼żu by┼ą pou┼żit├ę dvakr├ít. Overovanie je jednoduch├ę, preto┼że prebieha v r├ímci bloku, ─Źo je priestor s definovanou hranicou. Pokus o druh├ę pou┼żitie toho ist├ęho vstupu sa ─żahko odhal├ş a nebude akceptovan├Ż. Transakcie sa m├┤┼żu sprac├║va┼ą paralelne, preto┼że nez├ívisia od ┼żiadneho vonkaj┼íieho stavu.

Model UTXO v Bitcoine je ve─żmi slab├Ż z h─żadiska programovate─żnosti. Je takmer nemo┼żn├ę vytvori┼ą komplexn├Ż v├Żpo─Źet. Pokus o vytvorenie stavov├ęho kontraktu nad modelom UTXO ─Źasto vedie k vysok├Żm n├írokom na ├║lo┼żisko a n├şzkemu vyu┼żitiu stavu. Ka┼żd├Ż vstup vy┼żaduje jedin├Ż svedeck├Ż skript a ka┼żd├Ż v├Żstup vy┼żaduje jedin├Ż uzamykac├ş skript. Tak┼że s rast├║cim po─Źtom UTXO rastie aj po─Źet s├║visiacich svedeck├Żch skriptov. V├Żpo─Źtov├Ż v├Żkon potrebn├Ż na overovanie skriptov spolu s potrebou uklada┼ą skripty a ├║daje svedkov zvy┼íuje po┼żiadavky na zdroje, a teda aj n├íklady.

Ethereum ako prv├ę pri┼ílo s modelom zalo┼żen├Żm na ├║─Źtoch. Ethereum umo┼żnilo nap├şsa┼ą mal├Ż program s komplexnou logikou naz├Żvan├Ż inteligentn├Ż kontrakt. Transakcie sa interpretuj├║ ako udalosti, ktor├ę menia glob├ílny stav. Ethereum Virtual Machine ( EVM ) vypo─Ź├şta v├Żsledok prechodu stavu t├Żchto udalost├ş na z├íklade predch├ídzaj├║ceho stavu blockchainu.

Toto je d├┤le┼żit├Ż bod, preto┼że predch├ídzaj├║ci stav sa st├íva neoddelite─żnou s├║─Źas┼ąou aktu├ílneho v├Żpo─Źtu nov├ęho glob├ílneho stavu. In├Żmi slovami, spr├ívnos┼ą aktu├ílneho v├Żpo─Źtu je z├ívisl├í od minul├ęho stavu. Transakcie (vstupn├ę ├║daje pre v├Żpo─Źet), ktor├ę ovplyv┼łuj├║ stav blockchainu, s├║ syntakticky oddelen├ę od v├Żsledkov transakci├ş (v├Żstupn├Żch ├║dajov).

Glob├ílny stav je ulo┼żen├Ż lok├ílne v uzloch a nepren├í┼ía sa v blokoch. Uzly dosiahnu v├Ą─Ź┼íinov├Ż konsenzus o novom glob├ílnom stave tak, ┼że lok├ílne vykonaj├║ vlastn├Ż v├Żpo─Źet glob├ílneho stavu na z├íklade transakci├ş (udalost├ş) a potom porovnaj├║ svoj v├Żsledok s prijat├Żm v├Żsledkom (State-Root). In├Żmi slovami, v┼íetky ─Źestn├ę uzly by mali po lok├ílnom v├Żpo─Źte z├şska┼ą rovnak├Ż State-Root ako navrhovan├Ż. Toto je jedin├Ż sp├┤sob prechodu do nov├ęho glob├ílneho stavu v r├ímci celej siete.

Uzol spracoval 3 transakcie (udalosti) a pre┼íiel z glob├ílneho stavu N do stavu N+3. Potom vytvoril nov├Ż blok so stavom Root. V┼íetky uzly v sieti by mali po spracovan├ş transakci├ş vypo─Ź├şta┼ą rovnak├Ż stav Kore┼ł.

V modeli zalo┼żenom na ├║─Źtoch s├║ v┼íetky ├║─Źty stavov├ę . To znamen├í, ┼że v ─Źase v├Żpo─Źtu prechodu do nov├ęho stavu (spracovanie inteligentn├ęho kontraktu) je glob├ílny stav zamknut├Ż, t. j. nezmenite─żn├Ż. V├Żvoj├íri maj├║ k dispoz├şcii ur─Źit├║ abstrakciu, ktor├í u─żah─Źuje v├Żvoj inteligentn├Żch zml├║v. M├┤┼żu pracova┼ą so v┼íetk├Żmi stavmi a interagova┼ą s nimi. Na z├íklade vypo─Ź├ştan├ęho v├Żsledku sa vytvor├ş nov├Ż glob├ílny stav, ktor├Ż sa pred ─Ćal┼í├şm v├Żpo─Źtom, ktor├ęho v├Żsledkom bude ─Ćal┼í├ş nov├Ż stav, op├Ą┼ą zamkne. Medzi jednotliv├Żmi stavmi existuje s├║slednos┼ą prechodov.

V├Żhodou je, ┼że v├Żvoj├íri m├┤┼żu pracova┼ą s ─żubovo─żn├Żm ├║─Źtom (zostatkom), ke─Ć je glob├ílny stav uzamknut├Ż. To znamen├í, ┼że s konkr├ętnym ├║─Źtom je mo┼żn├ę pracova┼ą v r├ímci jedn├ęho bloku viackr├ít. Je to mo┼żn├ę v─Ćaka sekven─Źn├ęmu spracovaniu transakci├ş a zml├║v. In├Żmi slovami, Ethereum je dobr├ę v s├║be┼żnosti.

Tento dizajn je vhodn├Ż pre v├Żvoj├írov, preto┼że sa s n├şm ─żahko pracuje. Na druhej strane v├Żvoj├íri nem├┤┼żu kontrolova┼ą postupnos┼ą spracovania transakci├ş a kontraktov, preto┼że to je v ruk├ích v├Żrobcov blokov a pou┼ż├şvate─żov, ktor├ş stanovuj├║ poplatky. V├Żvoj├íri tak musia po─Ź├şta┼ą s mnoh├Żmi mo┼żn├Żmi v├Żsledkami a pokusmi o ├║tok. To m├┤┼że by┼ą v├Żzvou.

Dodr┼żiavanie postupnosti je d├┤le┼żit├ę, preto┼że je s├║─Źas┼ąou obrany proti ├║toku dvojit├Żch v├Żdavkom. Ka┼żd├Ż ├║─Źet m├í hodnotu ÔÇťnonceÔÇŁ, ktor├í je obsiahnut├í v ka┼żdej transakcii. Pri ka┼żdej novej transakcii z dan├ęho ├║─Źtu sa hodnota ÔÇťnonceÔÇŁ zvy┼íuje. Tento mechanizmus zabra┼łuje paraleln├ęmu spracovaniu transakci├ş. Ak prv├í z nieko─żk├Żch transakci├ş ur─Źit├ęho ├║─Źtu zlyh├í a nie je zahrnut├í do bloku, zlyhaj├║ aj nasleduj├║ce transakcie.

Je d├┤le┼żit├ę pochopi┼ą, ┼że transakcie (udalosti) s├║ na sebe z├ívisl├ę a na ich porad├ş v bloku z├íle┼ż├ş. Ke─Ć uzol dostane nov├Ż blok, prijme ho len vtedy, ak vypo─Ź├şta rovnak├Ż State-Root, ktor├Ż je navrhnut├Ż v bloku. To sa stane len vtedy, ak sa dodr┼ż├ş poradie spracov├ívan├Żch udalost├ş, t. j. rovnak├í postupnos┼ą prechodov.

Jednoduch├║ transakciu v modeli zalo┼żenom na ├║─Źtoch mo┼żno pova┼żova┼ą za ┼żiados┼ą o zmenu zostatkov dvoch pou┼ż├şvate─żov. Transakcia je udalos┼ą, ktor├í men├ş glob├ílny stav, nie konkr├ętny vstup a v├Żstup. Preto sa transakcia mus├ş vyhodnoti┼ą z h─żadiska spr├ívnosti v kontexte predch├ídzaj├║ceho stavu. To plat├ş aj pre v┼íetky ostatn├ę aplik├ície a protokoly, ktor├ę s├║ postaven├ę nad EVM.

Pou┼ż├şvatelia pri zad├ívan├ş nov├Żch transakci├ş reaguj├║ na ur─Źit├Ż stav, napr├şklad na cenu akt├şva. To, ─Źo pou┼ż├şvatelia nem├┤┼żu ve─żmi ovplyvni┼ą, je o─Źak├ívan├ę umiestnenie transakcie v r├ímci postupnosti prechodov v bloku. To m├┤┼że by┼ą probl├ęm pri zlo┼żitej┼í├şch transakci├ích, ktor├ę pracuj├║ s vopred definovan├Żmi podmienkami, preto┼że sa ned├í vopred zaru─Źi┼ą, ┼że navrhovan├Ż prechod stavu bude v ─Źase pokusu o zaradenie st├íle platn├Ż. Pou┼ż├şvate─ż si nikdy nie je ist├Ż a nem├┤┼że si lok├ílne vopred overi┼ą, ┼że jeho transakcia bude do bloku pridan├í. V d├┤sledku toho sa m├┤┼że sta┼ą, ┼że transakcia neuskuto─Źn├ş napriek zaplaten├ęmu transak─Źn├ęmu poplatku. V├Żsledok transakci├ş m├í vy┼í┼íiu neistotu a nie je deterministick├Ż.

Ne├║spe┼ín├ę transakcie s├║ v├Żsledkom glob├ílneho stavu (mutovate─żn├ę zdie─żan├ę ├║daje). Viacero str├ín m├┤┼że chcie┼ą predlo┼żi┼ą transakcie, ktor├ę zmenia glob├ílny stav ur─Źit├Żm sp├┤sobom. Av┼íak zmenen├Ż glob├ílny stav m├┤┼że znemo┼żni┼ą spracovanie in├Żch predlo┼żen├Żch transakci├ş. In├Żmi slovami, spracovan├í by mohla by┼ą len prv├í predlo┼żen├í transakcia v danom ─Źase alebo za ur─Źit├Żch podmienok. Ostatn├ę transakcie by mohli zlyha┼ą. To komplikuje vytv├íranie inteligentn├Żch kontraktov a mo┼żno to pova┼żova┼ą za povrchov├║ oblas┼ą pre ├║toky.

Uve─Ćme si konkr├ętny pr├şklad. Pou┼ż├şvate─ż Bob m├┤┼że zostavi┼ą transakciu na z├íklade stavu konkr├ętnych zostatkov, ktor├ę v danom okamihu vid├ş. Tieto zostatky v┼íak mohli by┼ą zmenen├ę Alicinou transakciou, ktor├í bola neo─Źak├ívane umiestnen├í pred Bobovou transakciou (Alica mohla pou┼żi┼ą vy┼í┼í├ş poplatok alebo sa ban├şk rozhodol umiestni┼ą Alicinu transakciu pred Bobovu, ke─Ć┼że poplatky boli rovnak├ę). V okamihu, ke─Ć je vlo┼żen├í Bobova transakcia, je glob├ílny stav in├Ż ako ten, ktor├Ż vzal do ├║vahy Bob. T├íto zmena glob├ílneho stavu m├┤┼że sp├┤sobi┼ą zlyhanie transakcie alebo v hor┼íom pr├şpade m├┤┼że vies┼ą k nepredv├şdate─żn├ęmu stavu.

Zhr┼łme si to. Model zalo┼żen├Ż na ├║─Źtoch, ako ho implementuje Ethereum, m├í pre v├Żvoj├írov aplik├íci├ş t├║ v├Żhodu, ┼że sa nemusia stara┼ą o konverziu. V├Żvoj├íri m├┤┼żu vo─żne pracova┼ą s pou┼ż├şvate─żsk├Żmi ├║─Źtami a meni┼ą ich zostatok. Je zabezpe─Źen├ę, ┼że zostatky s├║ pr├şstupn├ę jednotlivo pod─ża udalost├ş, tak┼że je men┼íie riziko, ┼że dvaja agenti bud├║ ma┼ą pr├şstup k rovnak├ęmu zostatku v rovnakom ─Źase. N├ívrh aplik├ície je teda pomerne jednoduch├Ż. Model zalo┼żen├Ż na ├║─Źtoch umo┼ż┼łuje pou┼ż├şvate─żom pristupova┼ą k jedn├ęmu ├║─Źtu viacn├ísobne v r├ímci jedn├ęho bloku. To znamen├í, ┼że Alica m├┤┼że v r├ímci jednej transakcie posla┼ą ETH zo svojho ├║─Źtu Bobovi a v r├ímci inej transakcie posla┼ą ETH aj Carlovi. Obe transakcie m├┤┼żu by┼ą v tom istom bloku.

Nev├Żhodou je u┼ż spom├şnan├í zlo┼żitos┼ą paraleliz├ície, ─Źast├ę ne├║spe┼ín├ę transakcie a nutnos┼ą plati┼ą poplatok aj za transakcie, ktor├ę neuspej├║. Okrem toho sa v d├┤sledku poradia transakci├ş vyskytuje probl├ęm zn├ímy ako Miner Extractable Value (MEV).

V├Żhody E-UTXO

Spolo─Źnos┼ą Cardano pou┼ż├şva model Extended UTXO, skr├ítene EUTXO. Cie─żom modelu EUTXO je podporova┼ą vy┼í┼íiu expresivitu programovate─żnosti a z├írove┼ł zachova┼ą v┼íetky v├Żhody modelu UTXO Bitcoinu. Roz┼í├şren├Ż model UTXO je pre Cardano d├┤le┼żit├Ż, preto┼że chce by┼ą viac ne┼ż len transak─Źnou sie┼ąou. Cardano je platforma, preto je d├┤le┼żit├ę umo┼żni┼ą v├Żvoj├írom vytv├íra┼ą zlo┼żitej┼íie funkcie. To sa dosahuje prostredn├şctvom inteligentn├Żch kontraktov. V pr├şpade Cardano je presnej┼íie hovori┼ą o valid├ítoroch skriptov. V texte m├┤┼żeme tieto pojmy pou┼ż├şva┼ą zamenite─żne, ale ide o to ist├ę.

EUTXO pon├║ka niektor├ę v├Żhody oproti modelu zalo┼żen├ęmu na ├║─Źtoch. Najm├Ą v├Ą─Ź┼íiu bezpe─Źnos┼ą pri vykon├ívan├ş inteligentn├Żch kontraktov, predv├şdate─żnos┼ą poplatkov, lok├ílne overovanie zabezpe─Źuj├║ce, ┼że transakcie bud├║ po predlo┼żen├ş akceptovan├ę, a vlastne fragmentovan├Ż stav blockchainu. To umo┼ż┼łuje paraleliz├íciu pri spracovan├ş transakci├ş, ─Źo m├í pozit├şvny vplyv na ┼ík├ílovate─żnos┼ą na re┼ąazci. Paraleliz├ícia je d├┤le┼żit├í aj pre vykon├ívanie inteligentn├Żch kontraktov. Podobne ako transakcie, aj inteligentn├ę zmluvy sa m├┤┼żu vykon├íva┼ą nez├ívisle, t. j. paralelne.

Pri spracovan├ş inteligentn├Żch zml├║v nez├íle┼ż├ş na porad├ş v bloku, nie je potrebn├ę bra┼ą do ├║vahy v├Żsledky vykon├ívania in├Żch zml├║v v bloku, tak┼że samotn├ę vykon├ívanie mo┼żno pova┼żova┼ą za bezpe─Źnej┼íie. In├Żmi slovami, ke─Ć┼że v├Żsledky vykon├ívania jednotliv├Żch inteligentn├Żch zml├║v s├║ navz├íjom nez├ívisl├ę a neexistuje spolo─Źn├Ż mutovate─żn├Ż (glob├ílny) stav, je men┼í├ş priestor pre ├║toky.

Je d├┤le┼żit├ę poznamena┼ą, ┼że ┼ík├ílovate─żnos┼ą decentralizovan├Żch aplik├íci├ş je zalo┼żen├í na mo┼żnostiach ├║─Źtovn├ęho modelu. Vo v┼íeobecnosti mo┼żno inteligentn├ę zmluvy a ich vykon├ívanie pova┼żova┼ą za vrstvu, ktor├í z├ívis├ş od mo┼żnost├ş blockchainu.

Mo┼żnosti paraleliz├ície vych├ídzaj├║ z p├┤vodn├ęho n├ívrhu UTXO, kde ka┼żd├Ż existuj├║ci nespotrebovan├Ż UTXO pozost├íva zo sekvencie predch├ídzaj├║cich transakci├ş. S ka┼żd├Żm UTXO sa d├í pracova┼ą nez├ívisle. Neexistuje ┼żiadna tak├í vec ako glob├ílny stav, ktor├║ by bolo potrebn├ę zoh─żadni┼ą pri spracovan├ş a valid├ícii EUTXO. D├┤le┼żit├Ż je len lok├ílny stav. To znamen├í, ┼że v├Żsledok transakcie z├ívis├ş len od pou┼żitia UTXO, ktor├ę s├║ nezmenite─żn├ę, objekty na jedno pou┼żitie, ktor├ę sl├║┼żia ako vstupy transakci├ş, ktor├ę vytvoria v├Żstupy.

Uzol Cardano spracoval 3 be┼żn├ę transakcie a 3 skriptov├ę transakcie. Potom vytvoril nov├Ż blok. Transakcie s├║ na sebe nez├ívisl├ę a m├┤┼żu by┼ą spracovan├ę a overen├ę paralelne.

Ka┼żd├í transakcia m├┤┼że spotrebova┼ą jeden alebo viac EUTXO, ─Ź├şm sa vytvoria nov├ę EUTXO, ktor├ę bud├║ ma┼ą t├║ ist├║ celkov├║ hodnotu. Jedin├Ż sp├┤sob, ako m├┤┼że transakcia ovplyvni┼ą ├║─Źinok inej transakcie aplikovanej na ├║─Źtovn├║ knihu, je spotrebova┼ą rovnak├ę EUTXO, ak├ę sa pok├║┼ía min├║┼ą neskor┼íia transakcia, ─Ź├şm uzol sp├┤sob├ş jej odmietnutie.

Ak transakcia prejde lok├ílnym overen├şm, pou┼ż├şvate─ż si m├┤┼że by┼ą takmer ist├Ż, ┼że sa transakcia dostane do nov├ęho bloku. Transakcie v modeli EUTXO s├║ navz├íjom nez├ívisl├ę a s├║ deterministick├ę, ─Źo znamen├í, ┼że transakcia s ve─żkou pravdepodobnos┼ąou nezlyh├í. Plat├ş to aj pre overovanie skriptov Plutus. Pou┼ż├şvatelia m├┤┼żu lok├ílne skontrolova┼ą, ─Źi je mo┼żn├ę skript Plutus odosla┼ą a spusti┼ą v re┼ąazci. Zabezpe─Źuje to, ┼że poplatky sa nikdy nestratia. Je v┼íak potrebn├ę dodr┼żiava┼ą jedno pravidlo, a to, ┼że ka┼żd├ę EUTXO mo┼żno min├║┼ą len raz a ako celok v r├ímci bloku.

V├Żdaj UTXO mus├ş akceptova┼ą cel├í sie┼ą v r├ímci pridania nov├ęho bloku. To znamen├í, ┼że pr├şjemca UTXO ho m├┤┼że min├║┼ą len v ─Ćal┼íom bloku. Nie v tom istom bloku, v ktorom bolo UTXO prijat├ę. Pridanie nov├ęho bloku mo┼żno pova┼żova┼ą za prechod stavu blockchainu Cardano. V samotn├Żch blokoch s├║ v┼íak jednotliv├ę transakcie a EUTXO **na sebe nez├ívisl├ę.

Model EUTXO je deterministickej┼í├ş ako model zalo┼żen├Ż na ├║─Źtoch, ale transakcia m├┤┼że by┼ą st├íle odmietnut├í. Odmietnutie znamen├í, ┼że napriek tomu, ┼że transakcia je spr├ívne zostaven├í, nem├┤┼że by┼ą pou┼żit├í v blockchaine. Ak sa tak stane, transakcia nem├í ┼żiadny vplyv na stav blockchainu, tak┼że sa neplatia ┼żiadne poplatky. K zamietnutiu transakcie doch├ídza v pr├şpade sporu. To znamen├í, ┼że stav blockchainu sa zmenil v pribli┼żne rovnakom ─Źase, ke─Ć pou┼ż├şvate─ż lok├ílne skon┼ítruoval transakciu. Lok├ílne overenie prebehlo, ale stav blockchainu je v okamihu predlo┼żenia transakcie u┼ż in├Ż. Determinizmus zabezpe─Źuje, ┼że v┼żdy, ke─Ć je transakcia prijat├í, bude ma┼ą len predv├şdate─żn├ę ├║─Źinky na stav hlavnej knihy. In├Żmi slovami, bude ma┼ą rovnak├Ż vplyv na stav ├║─Źtovnej knihy ako po─Źas kon┼ítrukcie a lok├ílneho overovania.

Pre v├Żvoj├íra m├┤┼że by┼ą zlo┼żitej┼íie vytvori┼ą skript valid├ítora, preto┼że sa mus├ş s├ím vysporiada┼ą s konkurzom. Transakcie sa m├┤┼żu dosta┼ą do kontaktu, ak z├ívisia od toho ist├ęho EUTXO v rovnakom ─Źase. Ak by napr├şklad nieko─żko EUTXO bolo uzamknut├Żch inteligentn├Żm kontraktom, potom s nimi m├┤┼że v r├ímci jedn├ęho bloku komunikova┼ą len jeden agent. V┼íimnite si, ┼że toto obmedzenie sa vz┼ąahuje len na EUTXO. R├┤zni agenti m├┤┼żu interagova┼ą s in├Żmi inteligentn├Żmi zmluvami bez ak├ęhoko─żvek zlyhania s├║be┼żnosti. Inteligentn├Ż kontrakt m├┤┼że obsluhova┼ą mno┼żstvo r├┤znych UTXO, ktor├ę tvoria jeho aktu├ílny stav a metad├íta mimo re┼ąazca, ktor├ę umo┼ż┼łuj├║ interpret├íciu t├Żchto UTXO.

S├║be┼żn├ę a paraleln├ę spracovanie. Agenti m├┤┼żu s├║─Źasne spotrebov├íva┼ą viacero UTXO. Ke─Ć chc├║ spotrebova┼ą to ist├ę EUTXO, m├┤┼że u nich d├┤js┼ą k s├║pereniu.

Paraleliz├ícia alebo schopnos┼ą vykon├íva┼ą viacero nez├ívisl├Żch oper├íci├ş s├║be┼żne, je d├┤le┼żitou vlastnos┼ąou z h─żadiska celkov├ęho v├Żkonu a ┼ík├ílovate─żnosti siete. Glob├ílny stav modelu zalo┼żen├ęho na ├║─Źtoch obmedzuje mo┼żnosti ┼ík├ílovate─żnosti, preto┼że je mimoriadne ┼ąa┼żk├ę dosiahnu┼ą paraleliz├íciu pri spracovan├ş transakci├ş a tie┼ż pri vykon├ívan├ş inteligentn├Żch kontraktov. S modelom EUTXO je mo┼żn├ę dosiahnu┼ą vy┼í┼íiu ├║rove┼ł konkurencie, ─Źo otv├íra dvere zv├Ż┼íenej ┼ík├ílovate─żnosti.

Pozrime sa, ─Źo je nov├ę na modeli EUTXO v porovnan├ş s modelom UTXO, ktor├Ż vyu┼ż├şva Bitcoin. Spracovanie transakcie v sieti Cardano zah┼Ľ┼ła overenie po┼żadovanej akcie. Uzol overuje, ─Źi je schopn├Ż vykona┼ą po┼żadovan├║ akciu a ─Źi autor transakcie poskytol pr├şslu┼ín├ę ├║daje/vstupy.

Be┼żn├í akcia sa t├Żka be┼żn├Żch transakci├ş, ktor├ę maj├║ v ├║mysle min├║┼ą EUTXO, ktor├ę s├║ zamknut├ę verejn├Żm k─ż├║─Źom. Uzol over├ş, ─Źi autor transakcie poskytol digit├ílny podpis s pr├şslu┼ín├Żm priv├ítnym k─ż├║─Źom. Ak je overenie ├║spe┼ín├ę, vykon├í sa akcia, t. j. spotreba EUTXO. V porovnan├ş s Bitcoinom tu zatia─ż nie je ni─Ź nov├ę.

─Äal┼íou akciou je valid├ícia transakci├ş, ktor├ę maj├║ v ├║mysle min├║┼ą EUTXO, ktor├ę s├║ zablokovan├ę adresou skriptu.

Skript je program (─Źas┼ą k├│du), ktor├Ż rozhoduje o tom, ─Źi transakcia, ktor├í m├ş┼ła EUTXO, je alebo nie je opr├ívnen├í tak urobi┼ą. Skript obsahuje ─Źist├ę funkcie, ktor├Żch v├Żsledkom je bu─Ć Pravda, alebo Lo┼ż. Na overenie transakcie uzol vyvol├í preklada─Ź skriptov, ─Źo je program, ktor├Ż dok├í┼że prelo┼żi┼ą a vykona┼ą k├│d skriptu Plutus. Interpret vykon├í skript, ktor├ęho hash bol vytvoren├Ż adresou, na ktorej s├║ uzamknut├ę UTXO. In├Żmi slovami, ke─Ć je EUTXO uzamknut├ę skriptom Plutus, k├│d skriptu tohto EUTXO je spojen├Ż s jeho adresou.

Uzol dostane transakciu s akciou na v├Żdaj EUTXO, ktor├í je uzamknut├í adresou skriptu.

Pozrime sa, ─Źo je na EUTXO v porovnan├ş s Bitcoinom skuto─Źne inovat├şvne okrem vy┼í┼íej expresivity programovate─żnosti, ktor├║ umo┼ż┼łuje Plutus.

Roz┼í├şren├ę UTXO umo┼ż┼łuje pou┼ż├şvate─żom volite─żne prid├íva┼ą do UTXO ─żubovo─żn├ę pou┼ż├şvate─żsk├ę ├║daje vo form├íte podobnom JSON. Tieto ├║daje sa naz├Żvaj├║ Datum. Datum umo┼żn├ş v├Żvoj├írom poskytn├║┼ą skriptom funk─Źnos┼ą podobn├║ stavom. Pou┼ż├şvate─żsk├ę ├║daje mo┼żno pova┼żova┼ą za lok├ílny stav skriptu. Tento stav m├í len lok├ílnu platnos┼ą, preto┼że je spojen├Ż s konkr├ętnym UTXO. Vyu┼żitie cel├ęho potenci├ílu Datum je na v├Żvoj├íroch.

Transakcie m├┤┼żu nies┼ą pou┼ż├şvate─żsk├ę argumenty, ktor├ę sa naz├Żvaj├║ Prevodn├şk. Redeemer mo┼żno ch├ípa┼ą ako z├ímer autora transakcie o tom, ako min├║┼ą UTXO. Redeemer m├┤┼żu v├Żvoj├íri decentralizovan├Żch aplik├íci├ş pou┼ż├şva┼ą na r├┤zne ├║─Źely.

Medzi Datom a Redeemerom zvy─Źajne existuje v├Ązba, ktor├í z├ívis├ş od konkr├ętnej funk─Źnosti konkr├ętnej aplik├ície. Pri overovan├ş transakcie overovac├ş skript pracuje s Datum, Redeemer a kontextom, ktor├Ż obsahuje ├║daje o transakcii. Skript obsahuje podmienky, ktor├ę po ich splnen├ş umo┼ż┼łuj├║ spotrebova┼ą UTXO. Datum, Redeemer a kontext transakcie s├║ ├║daje, ktor├ę s├║ vstupom do skriptu.

Na z├íklade vstupn├Żch ├║dajov (Datum, Redeemer a kontext transakcie) skript rozhodne, ─Źi je mo┼żn├ę spotrebova┼ą EUTXO.

Aby bolo mo┼żn├ę min├║┼ą EUTXO, ktor├ę s├║ uzamknut├ę skriptom, je potrebn├ę najsk├┤r dosta┼ą skript do blockchainu. Odomknutie UTXO bude z├ívisie┼ą od skriptu, tak┼że transakcia bude obsahova┼ą skript a tie┼ż UTXO, ktor├ę sa maj├║ zamkn├║┼ą.

V├Żvoj├íri (alebo ich aplik├ície) nap├ş┼íu k├│d Plutus na re┼ąazci a zabalia ho do ┼ípeci├ílneho form├ítu. Potom sa mus├ş vytvori┼ą transakcia, do ktorej bude skript Plutus vlo┼żen├Ż. Po ulo┼żen├ş transakcie do blockchainu mo┼żno odosla┼ą ─Ćal┼íiu transakciu na za─Źatie vykon├ívania skriptu. Transakciu mo┼żno pova┼żova┼ą za spr├ívu pre skriptu.

V├Żvoj├íri rozde─żuj├║ aplik├ície na k├│d v re┼ąazci a k├│d mimo re┼ąazca. K├│d mimo re┼ąazca m├┤┼że by┼ą s├║─Źas┼ąou pe┼ła┼żenky alebo m├┤┼że ├şs┼ą o decentralizovan├║ aplik├íciu (DEX). Off-chain ─Źas┼ą aplik├ície m├┤┼że vytvori┼ą transakciu, ktor├í obsahuje on-chain skript a EUTXO, ktor├ę sa maj├║ uzamkn├║┼ą. Pre ka┼żd├ę EUTXO je potrebn├ę uvies┼ą hash Datum. Pou┼ż├şvate─ż mus├ş transakciu podp├şsa┼ą. Po odoslan├ş transakcie a jej prijat├ş sie┼ąou bud├║ EUTXO uzamknut├ę skriptom.

Transakcia Plutus obsahuje skript valid├ítora a prid├íva d├ítum do EUTXO. Po zaraden├ş transakcie do bloku bude EUTXO uzamknut├ę skriptom.

Valid├ícia skriptu je ove─ża n├íro─Źnej┼íia na zdroje ako valid├ícia be┼żnej transakcie. Jedn├Żm zo zdrojov neur─Źitosti m├┤┼że by┼ą ve─żkos┼ą poplatkov za vykonanie inteligentn├ęho kontraktu/skriptu. V pr├şpade Cardano je rozpo─Źet na vykonanie skriptu s├║─Źas┼ąou transakcie a presn├Ż poplatok je mo┼żn├ę vypo─Ź├şta┼ą lok├ílne vopred. Interpret skriptov sleduje spotrebu zdrojov po─Źas vykon├ívania skriptu v kontexte rozpo─Źtu. Ak je rozpo─Źet na vykonanie vy─Źerpan├Ż, vyhodnocovanie skriptu sa zastav├ş a v├Żsledkom je False. Hodnota false znamen├í, ┼że EUTXO sa nespotrebuje.

Upozor┼łujeme, ┼że skript Plutus pracuje len so stavom, ktor├Ż je spojen├Ż s EUTXO, a ─Ćalej s ├║dajmi, ktor├ę dostane v transakcii. Vykon├ívanie skriptu nie je z├ívisl├ę od ni─Źoho in├ęho. Jedin├í vec, ktor├í sa z poh─żadu ├║─Źtovnej knihy na glob├ílnej ├║rovni zmen├ş, je presun EUTXO z adries na in├ę adresy pri ka┼żdom novo pridanom bloku.

Na uzamknutie minc├ş Alice a Boba mo┼żno pou┼żi┼ą ten ist├Ż kontrakt. Vykonanie skriptu pre Alicine mince nem├í ┼żiadny vplyv na vykonanie skriptu pre Bobove mince, preto┼że ide o dve nez├ívisl├ę vykonania pre samostatn├ę EUTXO. V├Żsledok t├Żchto dvoch samostatn├Żch vykonan├ş z├ívis├ş od lok├ílnych stavov.

Na interakciu so skriptom sa vytv├íra transakcia v├Żdavkov (transakcia spr├ív). Vstupom transakcie m├┤┼że by┼ą EUTXO, ktor├ę je uzamknut├ę skriptom. V├Żdajov├í transakcia vyvol├í interpreter skriptu s cie─żom overi┼ą skript a odomkn├║┼ą EUTXO, ak s├║ splnen├ę podmienky. Odomknut├ę EUTXO sa tak prenesie na nov├║ adresu.

Aby bolo mo┼żn├ę spotrebova┼ą EUTXO zo zostatku aplik├ície, mus├ş interpret Plutus vykona┼ą skript Plutus spojen├Ż s EUTXO. Skript pou┼ż├şva ako vstupn├ę ├║daje Datum, Redem├ítor a kontext transakcie. V├Żsledkom vykonania je hodnota True (Pravda), tak┼że EUTXO sa m├┤┼że spotrebova┼ą. 12 ADA sa odo┼íle na Bobovu adresu.

Niektor├ę aplik├ície m├┤┼żu potrebova┼ą pracova┼ą s glob├ílnym stavom vo viacer├Żch EUTXO a m├┤┼żu na to pou┼żi┼ą Datum. Druh glob├ílneho stavu je dosiahnute─żn├Ż v r├ímci konkr├ętneho n├ívrhu protokolu. N├ívrh├íri protokolov si musia by┼ą vedom├ş, ┼że ak s├║ EUTXO uzamknut├ę skriptom, m├┤┼że s nimi komunikova┼ą iba jedin├Ż agent v r├ímci jedn├ęho bloku. M├┤┼że to vy┼żadova┼ą ur─Źit├Ż druh synchroniz├ície medzi agentmi.

Ilustrujme si to na pr├şklade. Pooly likvidity, ktor├ę pou┼ż├şva AMM DEX, s├║ zdie─żan├ę zdroje, preto┼że pou┼ż├şvatelia ich chc├║ pou┼ż├şva┼ą v rovnakom ─Źase (v r├ímci toho ist├ęho bloku). Ka┼żd├Ż fond likvidity obsahuje sadu EUTXO. Dostupn├ę EUTXO s├║ preto tie┼ż zdie─żan├ę zdroje, preto┼że ak si agent nejak├Żm dohodnut├Żm sp├┤sobom nevyhrad├ş konkr├ętne EUTXO pre seba, s├║ k dispoz├şcii v┼íetk├Żm ostatn├Żm.

Aplika─Źn├Ż algoritmus mus├ş zabezpe─Źi┼ą, aby pri vytv├íran├ş transakci├ş jednotliv├ş agenti nes├║perili o EUTXO v poole. Transakcie, ktor├ę chc├║ spotrebova┼ą konkr├ętne EUTXO, s├║ z h─żadiska valid├ície navz├íjom nez├ívisl├ę. Z├ívislos┼ą v┼íak existuje, preto┼że viacer├ş agenti m├┤┼żu chcie┼ą spotrebova┼ą ten ist├Ż zdroj (to ist├ę EUTXO) v rovnakom ─Źase na vytvorenie transakcie. In├Żmi slovami, agenti chc├║ pracova┼ą s├║be┼żne. Jedn├Żm z rie┼íen├ş, ktor├ę sa v s├║─Źasnosti pou┼ż├şva, s├║ hromadn├ę transakcie. Agenti vyh─żad├ívaj├║ vhodn├ę po┼żiadavky UTXO, ktor├ę chc├║ komunikova┼ą s konkr├ętnym fondom likvidity s cie─żom splni┼ą po┼żadovan├║ v├Żmenu. Agenti to robia s oh─żadom na v┼íetky ostatn├ę dostupn├ę po┼żiadavky na swap a vybran├ę swapy vkladaj├║ do jednej ve─żkej hromadnej transakcie. Pri vytv├íran├ş d├ívkovej transakcie agenti vedia, ktor├ę UTXO u┼ż boli pou┼żit├ę. M├┤┼żu zabezpe─Źi┼ą, aby sa konkr├ętne EUTXO nepou┼żilo v r├ímci d├ívkovej transakcie dvakr├ít.

Záver

Najlep┼íie na Cardane je, ┼że ho t├şm neust├íle aktualizuje, ─Ź├şm sa postupne zvy┼íuj├║ jeho mo┼żnosti. V ─Źase p├şsania tohto ─Źl├ínku je pred nami hard-fork Vasil, ktor├Ż do Cardana prinesie mnoho vylep┼íen├ş v oblasti skriptovania. Konkr├ętne ide o Referen─Źn├ę vstupy (CIP-31), Inline Datums (CIP-32), Referen─Źn├ę skripty (CIP-33) a Ved─żaj┼íie v├Żstupy (CIP-40). V┼íetky tieto vylep┼íenia poskytn├║ v├Żvoj├írom viac mo┼żnost├ş pri navrhovan├ş ich aplik├íci├ş.


(Nap├şsal @Cardanians.io) - preklad @Martin.M
P├┤vodn├Ż ─Źl├ínok: Understanding Cardano Extended-UTXO