První generace blockchainu je v podstatě jen transakční síť, podobná PayPalu. Hodnota může být bezpodmínečně přeposlána od Alice k Bobovi. Bitcoin se nejčastěji používá pro jednoduchý převod hodnoty. Existuje však možnost napsat script. Cardano a Ethereum jsou chytré smluvní platformy, takže na nich lze vytvářet alternativní bankovní služby. Platformy umožňují vývojářům implementovat složitější programy a pracovat se stavy aplikací. V článku popíšeme možnosti programovatelnosti Bitcoinu, Etherea a Cardana. Krátce se také podíváme na některé rozdíly mezi chytrými smlouvami Ethereum a skripty Plutus.
Schopnosti první generace blockchainu
Bitcoin můžeme zařadit do první generace blockchainu. Bitcoin přišel s konceptem digitální vzácnosti. Obecně blockchain umožňuje vytvoření pevné měnové politiky, která je neměnná nebo může být změněna pouze se souhlasem většiny. Mohou existovat digitální mince (také nazývané nativní mince), které nelze v systému zkopírovat.
Nativní coiny se používají jako součást motivačního modelu sítě (odměny pro ty, kteří decentralizují a zajišťují síť), ale to je pro tento článek irelevantní.
Existence coinů je závislá na distribuované síti a decentralizaci.
Blockchainová síť dokáže zajistit bezpečný převod coinů mezi dvěma účastníky, například od Alice k Bobovi, protože zajišťuje, že stejné coiny nejsou utraceny dvakrát za sebou (ochrana proti dvojímu utracení coinů). Tím se zachovává digitální nedostatek. Dále zajišťuje, že mince může utratit pouze skutečný vlastník a nikdo jiný. V blockchainové síti není možné podvádět, zmrazit účet, bránit někomu v používání sítě nebo utrácení coinů atd.
Na měnovou politiku, digitální nedostatek, spravedlnost, rovnost a převod mincí dohlížejí všichni účastníci konsensu sítě.
Jednoduše řečeno, první generace blockchainu je schopna pouze těchto zásadních funkcí. Vytvoření pevné měnové politiky a bezpodmínečný převod digitální hodnoty mezi dvěma účastníky.
Převod hodnoty je bezpodmínečný. Blockchain síť může pouze ověřit, že Alice je skutečným vlastníkem mincí a že je to ona, kdo prostřednictvím transakce dává pokyn k převodu hodnoty na Bobovu adresu. Pokud je ověření transakce úspěšné, stane se Bob novým vlastníkem hodnoty (coinů), jakmile je transakce zahrnuta do nového bloku a blok je dokončen.
Na obrázku níže můžete vidět, jak bitcoinový uzel ověřuje běžnou transakci. Alice pošle BTC Bobovi. Zdrojový kód pro ověření transakce je definován v bitcoinovém klientovi. Uzel mimo jiné ověřuje, zda má transakce platný digitální podpis, který prokazuje vlastnictví BTC na vstupech, a zda transakce neutrácí BTC, které již byly utraceny jinou transakcí a další konsensuální pravidla.
Ověřování pravidelných transakcí není závislé na programu třetí strany. Veškerá logika je implementována v bitcoinovém klientovi. Pokud je nutné udělat něco složitějšího nad rámec běžné validace, jako je digitální podpis, je nutné, aby logiku naprogramovala třetí strana a aby protokol umožnil provedení programu.
Nabízí se otázka. Má smysl posílat transakce podmíněně? Má smysl mintovat nové tokeny které by měli stejné nebo podobné vlastnosti jako nativní mince, tedy nezměnitelnou monetární politiku? Nebo může být někdy výhodné aby se monetární politiky měnila (pálení a opětovné mintování tokenů)? To by vyžadovalo definovat pravidla a umožnit jejich ověřování decentralizovaným způsobem.
Bitcoinový skript umožňuje implementaci složitější logiky. Je možné vytvářet transakce s více podpisy, časově uzamčené transakce (hodnotu lze utratit pouze po určitém datu nebo výšce bloku) nebo transakce s uzamčením hash (hodnotu lze utratit pouze odhalením tajemství, které odpovídá danému hashu).
Skriptování umožňuje uživatelům přenést hodnotu do stavového kanálu (Lightning Network) nebo definovat podmínku pro utracení hodnoty tak, že transakci musí podepsat definovaný počet účastníků (například dva ze tří).
Bitcoin dokáže definovat podmínky pro utracení BTC.
Skriptování bitcoinů je jednoduchý, zásobníkový a Turingově-nekompletní jazyk, který je navržen tak, aby byl bezpečný, deterministický a snadno ověřitelný. To má pro vývojáře několik zásadních omezení.
Skriptování bitcoinů má omezenou sadu operačních kódů (opcodes) a datových typů, což omezuje funkčnost a efektivitu skriptů. Nepodporuje smyčky, rekurzi ani stavové výpočty, což znemožňuje implementaci některých algoritmů nebo protokolů. Navíc nemá přístup k žádným externím datům nebo událostem, což omezuje interaktivitu a přizpůsobivost skriptů. Skriptování v Bitcoinu nemá formální sémantiku ani typový systém, což ztěžuje uvažování o správnosti a bezpečnosti skriptů.
Většina transakcí v Bitcoinové síti je standardní. V roce 2021 vzrostl počet nestandardních (skriptových) transakcí na 10-18 % (analýzy se navzájem liší).
Je důležité zopakovat, že o přenos hodnot v rámci běžných transakcí se stará zdrojový kód Bitcoinu. Do zpracování běžných transakcí nemůže zasahovat žádná třetí strana, protože vše je pod kontrolou uzlů v distribuované síti (přesněji řečeno pod kontrolou poolů).
Skripty jsou vždy definovány třetí stranou a nejsou součástí zdrojového kódu Bitcoinu. Bitcoin je schopen zpracovávat skripty přes interpret (více o něm později). Skripty představují určitá rizika, protože může být chyba v logice skriptu.
Na obrázcích v článku budou skripty zobrazeny červeně. Interpreter a vituální mašiny budou znázorněny modře.
Každý, kdo vytvoří transakci, může pomocí Bitcoinových skriptů určit, jak lze v budoucnu utratit BTC v transakci. Bitcoinové skripty jsou nasazeny jejich zahrnutím do vstupů a výstupů transakce. Vstupy obsahují skripty, které odemykají BTC z předchozích transakcí, a výstupy obsahují skripty, které uzamknou BTC pro budoucí transakce.
Bitcoinové skripty jsou zpracovávány Bitcoinovými uzly, které ověřují transakce. Když uzel přijme transakci, zkontroluje, zda jsou skripty ve vstupech a výstupech platné a dodržují konsensuální pravidla. Uzel provádí skripty pomocí interpretu založeného na zásobníku.
Interpret založený na zásobníku je program, který může spustit jiný program napsaný ve speciálním jazyce (v případě Bitcoinu se nazývá pouze Script). Interpret je zabudován do Bitcoinového uzlu. Interpret funguje tak, že čte pokyny Bitcoinového skriptu jeden po druhém (zleva doprava) a provádí odpovídající akce. Uzel vyhodnotí skripty, a pokud je konečný výsledek pravdivý, transakce je přijata. Pokud je konečný výsledek nepravdivý nebo pokud dojde k chybě nebo výjimce, transakce je zamítnuta.
Interpret je na každém Bitcoinu nodu a je-li v rámci validace nezbytné exekuovat script, dojde k tomu. Všimněte si, že k validaci transakce dochází decentralizovaně.
Na obrázku níže můžete vidět, jak Bitcoinový uzel ověřuje transakci skriptu. Transakce obsahuje skript (červeně) s logikou pro utracení hodnoty. Toto je logika dodávaná třetí stranou. Překladač skriptů (modrý) se používá pro ověřování skriptů. Výstup vyhodnocení skriptu určuje, zda bude hodnota utracena (to znamená, zda vlastnictví hodnoty přejde na Boba).
Ethereum je první Turing-kompletní blockchain platforma
Ethereum je první decentralizovaná platforma, která podporuje Turingově-kompletní a univerzální programovací jazyk zvaný Solidity. Solidity lze použít k sepsání inteligentních smluv pro jakýkoli druh logiky nebo funkčnosti. Chytré smlouvy jsou samospouštěcí programy, které běží na blockchainu Ethereum a mohou interagovat s jinými chytrými smlouvami, uživateli nebo externími datovými zdroji.
Jednou z funkcí Etherea je, že umožňuje uživatelům vytvářet vlastní tokeny prostřednictvím chytrých smluv. Tokeny jsou digitální aktiva, která mohou představovat cokoli cenného, jako jsou měny, sběratelské předměty nebo práva. První generace blockchainů měla pouze nativní coiny. Protokol ani skripty neumožňovaly vytváření a přenos vlastních tokenů.
Ethereum umožnilo psát složité aplikace, které umí pracovat s nativními coiny a celou řadou dalších tokenů. Díky Ethereu se zrodil průmysl DeFi.
Ethereum EVM je virtuální stroj Ethereum, což je běhové prostředí pro chytré smlouvy v síti Ethereum. EVM je zásobníkový, Turingově kompletní a izolovaný virtuální stroj, který může provádět instrukce bajtového kódu, které jsou generovány z programovacích jazyků vysoké úrovně, jako je Solidity. EVM může přistupovat a manipulovat s daty uloženými na blockchainu, jako jsou zůstatky na účtech, stav smlouvy nebo transakční vstupy a výstupy. EVM také prosazuje konsensuální pravidla a GAS systém sítě, které omezují výpočetní a úložné zdroje používané inteligentními kontrakty.
Jedním z rozdílů mezi Bitcoinem a Ethereem z hlediska složitých operací je to, že transakce Ethereum neobsahují smart kontrakt s logikou pro utracení, ale pouze odkaz na smart kontrakt.
Chytré smlouvy jsou uloženy na blockchainu Ethereum. Inteligentní smlouvy jsou uloženy do blockchainu odesláním speciálního typu transakce, která obsahuje bajtový kód a parametry konstruktoru chytré smlouvy. Transakce vytvoří v síti novou adresu, která představuje smart kontrakt. Pod touto adresou je v blockchainu uložen bajtový kód a stav smart kontraktu.
Pro vyvolání smart kontraktu může uživatel odeslat jiný typ transakce, který odkazuje na adresu smart kontraktu a poskytuje některé parametry, jako je hodnota, GAS limit, cena GASu, data nebo volání funkce. Transakce spustí spuštění kódu inteligentní smlouvy uzly v síti pomocí virtuálního stroje Ethereum (EVM).
Bitcoinové skripty jsou bezstavové, zatímco chytré smlouvy Ethereum mohou udržovat stav v účetní knize. To znamená, že Bitcoinové skripty nemají žádnou paměť nebo úložiště předchozích transakcí nebo událostí a mohou pracovat pouze s daty poskytnutými aktuální transakcí. Na druhé straně chytré smlouvy Ethereum mohou mít trvalý stav, který je uložen na blockchainu a lze jej aktualizovat nebo k němu přistupovat pomocí kódu chytré smlouvy.
Bezstavovost Bitcoinových skriptů je návrhová volba, jejímž cílem je zajistit bezpečnost, determinismus a jednoduchost Bitcoinové sítě. Tím, že Bitcoinové skripty nemají stav, vyhýbají se problémům kdy se stav nějak nečekaně změní, nekonzistenci nebo manipulaci, které mohou vzniknout v důsledku škodlivých aktérů nebo selhání sítě.
Stavovost chytrých kontraktů Ethereum je návrhová volba, jejímž cílem je umožnit větší expresivitu, funkčnost a interaktivitu sítě Ethereum. Díky stavu mohou chytré smlouvy Ethereum implementovat komplexní a dynamickou logiku a funkce pro transakce, jako je vytváření tokenů, provádění výpočtů nebo interakce s jinými inteligentními smlouvami. Inteligentní smlouvy Ethereum také umožňují větší interaktivitu a přizpůsobivost, protože mohou používat orákula a spouštěče pro přístup a reakci na informace mimo řetězec, jako jsou cenové kanály, časová razítka nebo uživatelské vstupy.
Na obrázku níže můžete vidět transakci Ethereum, ve které Alice posílá hodnotu (tokeny) Bobovi. Protože se jedná o vlastní tokeny, je třeba použít inteligentní smlouvu. Alice vloží do transakce odkaz na smart kontrakt. Virtuální stroj Ethereum najde smart kontrakt v blockchainu (včetně jeho aktuálního stavu) a provede požadovanou operaci.
Podívejme se na několik rozdílů mezi Solidy a EVM na rozdíl od Bitcoinového skriptu a interpretu založeného na zásobníku.
Solidnost nabízí vyšší expresivitu. Solidity je vysokoúrovňový, objektově orientovaný a Turingově kompletní programovací jazyk, který dokáže implementovat komplexní a flexibilní logiku a funkce pro chytré kontrakty.
Solidity kód je kompilován do instrukcí bytecode, které jsou prováděny EVM. Kód Bitcoinového skriptu je přímo vložen do vstupů a výstupů transakcí a interpretován uzly v síti.
Solidity code může přistupovat a reagovat na externí data nebo události, jako jsou orákula, spouštěče nebo uživatelské vstupy, pomocí různých mechanismů, jako jsou volání funkcí, události nebo modifikátory. Vysoká interaktivita s okolním světem umožňuje replikovat tradiční bankovní služby. Kód Bitcoinového skriptu nemůže přistupovat ani reagovat na žádná externí data nebo události a může pracovat pouze s daty poskytnutými samotnou transakcí.
Solidity a EVM mohou poskytnout více expresivity a elegance než Bitcoin Script, protože mohou využívat různé funkce, jako jsou smyčky, rekurze, stavové výpočty, funkce vyššího řádu nebo líné vyhodnocování. Ethereum může nabídnout větší bezpečnost a spolehlivost než Bitcoin Script, protože chytré smlouvy mohou využívat formální ověřování a testování k zajištění správnosti a bezpečnosti chytrých smluv (k dispozici jsou různé nástroje a frameworky).
Větší expresivita a stavovost mohou vyžadovat více dovedností a péče než Bitcoin Script k psaní a provádění chytrých smluv, protože mohou zahrnovat větší složitost a potenciální úskalí.
Uskutečnění chytrých smluv může mít na provoz chytrých smluv vyšší náklady než Bitcoin Script, protože mohou spotřebovat více poplatků za GAS za výpočetní a úložné zdroje v síti. Ethereum může čelit větším problémům se škálovatelností než zpracování Bitcoinového skriptu, protože provádění chytrých kontraktů může generovat větší zahlcení sítě a latenci kvůli jejich vyšší poptávce po zdrojích.
Většina transakcí Ethereum souvisí s prováděním smart kontraktů. DeFi, NFT a stablecoiny jsou relevantní blockchainová odvětví, která otevírají nové možnosti. Ethereum překonalo Bitcoin v počtu aktivních uživatelů a transakcí.
Cardano má nativní skripty a skripty Plutus
Cardano je chytrá smluvní platforma podobná Ethereu, ale s mnoha rozdíly. Skriptování na Cardano lze provádět dvěma způsoby: nativními skripty a skripty Plutus.
Nativní skripty jsou jednoduché skripty, které lze použít k uzamčení finančních prostředků, ražení tokenů nebo delegování mincí ADA. Jsou napsány ve formátu podobném JSON a lze je přímo interpretovat podle pravidel Cardano ledgeru. Nativní skripty tedy nevyžadují žádné speciální nástroje nebo virtuální stroje k jejich ověření.
Nativní skripty jsou jedním ze způsobů, jak implementovat transakci s více podpisy. Používají se v delegačních certifikátech. Delegační certifikát je typ transakce, který umožňuje zúčastněným stranám delegovat své ADA coiny do staking poolu.
Na obrázku níže můžete vidět transakci s nativním skriptem. Všimněte si, že uzel Cardano nepotřebuje ke spuštění skriptu žádný virtuální stroj ani interpret (na rozdíl od Bitcoinu a Etherea). Provádějí se nativně. Alice může odeslat transakci s delegačním certifikátem, ve kterém deleguje ADA do Bobova poolu. Případně se může jednat o transakci, která obsahuje ražební skript. Tokeny budou raženy na Bobovu adresu (vydavatel tokenu).
Existují dva způsoby, jak zahrnout nativní skript do transakce:
Za prvé, vložení skriptu jako Datum do transakce. To znamená, že skript je součástí transakčních dat a může jej vidět každý, kdo transakci kontroluje. Tato metoda je vhodná pro skripty, které jsou krátké a jednoduché, nebo které je třeba často měnit.
Za druhé, uložení skriptu na blockchain prostřednictvím transakce a odkazování na něj pomocí hashe. Skript je uložen jako výstup na blockchainu a lze jej identifikovat podle jedinečného hashe. Výstup musí mít adresu, která je odvozena z hash skriptu a musí mít hodnotu alespoň 1 ADA, aby bylo zajištěno, že nebude ořezán sítí. Tato metoda je vhodná pro skripty, které jsou dlouhé a složité, nebo které potřebují být pevné a neměnné.
Na nativní skript, který je uložen na blockchainu, je možné odkazovat mnohokrát za sebou. Dokud není výstup skriptu utracen jinou transakcí, lze jej použít jako vstup pro více transakcí, které používají stejný skript.
Na obrázku níže můžete vidět podobný případ jako výše, s tím rozdílem, že transakce prostřednictvím hashe odkazuje na nativní skript uložený v blockchainu.
Nativní skripty jsou většinou on-chain logika, protože jsou vložené do transakce nebo uložené na blockchainu. Mohou však mít také určitou off-chain logiku, jako je generování transakcí, které používají nativní skripty jako vstupy nebo výstupy. Můžete například použít JavaScript, Python nebo Java k vytvoření aplikací, které generují transakce využívající nativní skripty.
Nyní se podíváme blíže na skripty Plutus.
Skripty Plutus jsou složitější a výraznější skripty, které mohou implementovat libovolnou logiku a interagovat s jinými inteligentními smlouvami. Jsou napsány ve funkčním programovacím jazyce Haskell a zkompilovány do Plutus Core, nízkoúrovňového jazyka, který běží na virtuálním stroji Cardano (CVM).
Jednou z klíčových vlastností skriptování na Cardano je oddělení on-chain kódu a off-chain kódu (logika programu).
On-chain logika je logika, která běží na blockchainu a ověřuje transakce, které zahrnují chytré smlouvy. On-chain logika je napsána v Plutus Core a spuštěna virtuálním strojem Cardano. Logika on-chain je neměnná a transparentnost, což znamená, že ji nelze změnit ani skrýt, jakmile je nasazena na blockchain.
Off-chain logika je logika, která běží mimo blockchain a zpracovává požadavky a interakce aplikace smart contract. Off-chain logika je napsána v Haskell, vysokoúrovňovém jazyce, který může používat Plutus Application Framework (PAF) pro přístup ke službám, jako jsou uzly, peněženky, oracle atd. Lze však použít i jiné programovací jazyky na vysoké úrovni (JavaScript, Python nebo Java).
Off-chain logika je proměnlivá a soukromá, což znamená, že ji lze aktualizovat nebo upravit, aniž by to ovlivnilo logiku v řetězci nebo vyžadovalo hard fork.
Skripty Plutus jsou inteligentní smlouvy, které používají on-chain logiku i mimo něj. On-chain část skriptu Plutus se nazývá validační skript, který rozhoduje, zda je transakce, která vydává výstup, k tomu oprávněna. Off-chain část skriptu Plutus se nazývá backend aplikace Plutus (PAB), který generuje transakce, které odpovídají pravidlům skriptu validátoru.
Oddělení on-chain kódu a off-chain kódu je užitečné z několika důvodů. Za prvé, umožňuje vývojářům psát chytré smlouvy v jazyce na vysoké úrovni, jako je Haskell, Java, Python JavaScript, který se snadněji čte, píše a testuje než jazyky na nízké úrovni, jako je Plutus Core nebo Solidity. Za druhé, snižuje velikost a náklady na transakce, které provozují chytré smlouvy, protože transakce obsahuje pouze základní kód on-chain. Za třetí, zlepšuje bezpečnost a škálovatelnost chytrých kontraktů, protože off-chain kód lze aktualizovat a upravovat, aniž by to ovlivnilo on-chain kód nebo vyžadovalo hard fork.
Oddělení on-chain kódu a off-chain kódu je dobré pro vytváření flexibilních a robustních smart kontraktových aplikací. Pomocí nástrojů jako Plutus Application Framework (PAF) a Plutus Application Backend (PAB) mohou vývojáři snadno vytvářet a nasazovat své aplikace pro inteligentní smlouvy lokálně nebo v živém produkčním prostředí.
Skripty Plutus mohou být součástí transakcí jako vstupy nebo výstupy, v závislosti na způsobu jejich použití. Existují dva hlavní typy skriptů Plutus: validační skripty a skripty pro ražbu tokenů.
Validátorové skripty se používají k uzamčení finančních prostředků na adrese skriptu a ověření útraty těchto prostředků. Skript validátoru může být buď vložený do transakce jako Datum, nebo uložený na blockchainu a odkazovaný jeho hashem. Je to podobné jako u nativních skriptů.
Výhodou uložení skriptu na blockchainu je, že snižuje velikost transakce a poplatky, ale také činí skript veřejným a neměnným.
Skripty pro ražbu tokenů se používají ke kontrole vytváření a ničení vlastních tokenů. Skripty pro ražbu lze uložit pouze na blockchain a odkazovat na ni jeho hash. To zajišťuje, že skripty jsou jedinečné a konzistentní pro všechny tokeny stejného typu.
Validátorové skripty mají větší flexibilitu, zatímco Skripty pro ražbu mají větší konzistenci.
Když se má provést validátorový skript, jsou předány tyto tři informace jako argumenty:
- Datum: Je to část dat připojená k UTxO, která skript zamyká. To se obvykle používá k přenosu stavu (stav aplikace).
- Redeemer: Jedná se o část dat připojená k výdajovému vstupu. To se obvykle používá k poskytnutí vstupu pro skript od toho kdo chce zamčený vstup utratit.
- Kontext: Jedná se o část dat, která představuje informace o útratové transakci.
Na obrázku níže můžete vidět chytrou smlouvu Cardano složenou z off-chain logiky (backend) a on-chain logiky. Jedna aplikace může používat off-chain logiku k vytváření skript transakce a stejný backend k vytváření útratové transakce. Bob vytvořil transakci se skriptem. Transakce skriptu obsahuje skript Plutus (validátor) a také UTxO, který je uzamčen přes validátor. UTxO může obsahovat Datum, což je část dat, která lze použít k uložení stavu smlouvy. Alice chce odemknout UTxO. Aby bylo možné utratit UTxO, musí být v off-chain části smart kontraktu vytvořena útratová transakce, která může obsahovat Redeemer. Redeemer je vstupem pro skript Plutus, který rozhoduje, zda je transakce útraty platná nebo ne.
Aplikační logika definovaná v backendu umožnila Bobovi uzamknout hodnotu a Alici hodnotu odemknout. První transakce uzamkne prostředky na adrese skriptu a druhá spustí vykonání skriptu pro odblokování prostředků.
Všimněte si, že v případě transakce skriptu (Bobova transakce) vede šipka z levé strany backendu přímo k transakci v pravé části obrázku. To znamená, že skript Plutus se při vypořádání transakce nespustí. Skript validátoru uzamkne prostředky na adrese skriptu a provedení je spuštěno transakcí pro utracení (Alice’s transakce). To je důvod, proč šipka vede od transakce pro utracení k virtuálnímu počítači Cardano.
Off-chain logika může generovat transakce skriptu, které uzamknou finanční prostředky na adrese skriptu a k jejich odemknutí vyžadují specifickou hodnotu Redeemeru. Bob může například použít off-chain logiku k vytvoření skriptové transakce, která uzamkne 10 ADA v adrese skriptu a vyžaduje hodnotu Redeemer „Hello“, aby je odemkla. Bob pak může poslat adresu skriptu a hodnotu Redeemer Alici, která může použít off-chain logiku k vytvoření platební transakce, která poskytne správnou hodnotu Redeemer a utratí 10 ADA z adresy skriptu.
Off-chain logika může používat Plutus Application Backend (PAB) ke správě a zpracování požadavků instance aplikace během jejího životního cyklu. PAB funguje jako prostředník mezi aplikacemi Plutus, uzlem, backendem peněženky a koncovými uživateli. PAB také pomáhá s vytvářením transakcí, které spouštějí skripty Plutus na blockchainu.
Skripty Plutus jsou bezstavové v tom smyslu, že nemají přístup k žádnému trvalému úložišti nebo globálním proměnným. Mohou však použít techniku zvanou stavové vlákno k simulaci stavového chování předáváním dat mezi různými instancemi skriptu. Stav je uložen jako Datum připojený k výstupu skriptu a lze k němu přistupovat pomocí dalšího vstupu skriptu, který tento výstup spotřebovává. Datum může být libovolný datový typ, který může skript zakódovat a dekódovat.
Stavové vlákno umožňuje skriptům Plutus implementovat složitou logiku a interakce, jako jsou stavové stroje, věštce a schémata s více podpisy. Vyžaduje však také pečlivý návrh a koordinaci, aby bylo zajištěno, že je stav aktualizován správně a konzistentně. Skript může například potřebovat zkontrolovat, že stav nebyl změněn jinou transakcí od posledního přístupu, nebo že je stav v platném rozsahu hodnot.
Skripty Plutus jsou umožňují vyšší expresivitu než Bitcoinové skripty a chytré smlouvy Ethereum. Haskell je funkcionální programovací jazyk, který dokáže implementovat libovolnou logiku a interagovat s jinými smart kontrakty. Backend lze implementovat v libovolném jazyce na vysoké úrovni. Solidity může také implementovat složitou logiku a interagovat s jinými inteligentními smlouvami, ale ve srovnání s Haskellem má určitá omezení a nevýhody. Například Solidity má vyšší riziko chyb a zranitelnosti díky svému proměnlivému stavu a detailům na nízké úrovni. Solidity má také vyšší náklady na provedení díky svému GAS modelu, který omezuje složitost a škálovatelnost smart contract aplikací na Ethereum.
Haskell je jazyk, který podporuje formální ověřování, protože má jasnou a přesnou syntaxi, silný a statický typový systém a čistou a deterministickou sémantiku. Haskell má také knihovny a nástroje, které mohou pomoci s formálním ověřením, jako je QuickCheck, LiquidHaskell a Coq.
Pokud se podíváte na obsah bloků v síti Cardano, transakční skript je asi 2x více než běžných transakcí. Cardano má totiž nativní tokeny, takže k přenosu tokenů není nutné interagovat se skriptem. Proto je běžných transakcí relativně hodně.
Závěr
Bitcoin není a nebude mít stejné schopnosti jako Cardano nebo Ethereum. Bitcoinové skripty jsou velmi jednoduché a neumožňují vytvoření složité logiky nutné pro vytvoření alternativní finanční služby. Ordinals, Inscriptions a BRC-20 jsou technologie, které nemají potenciál překonat možnosti SC platforem. Bitcoinový protokol v podstatě pouze zapisuje data do blockchainu bez jakékoli validace obsahu. Neexistuje žádné spouštění programu třetí strany.
V článku jsme se zaměřili především na popis možností programovatelnosti a ne příliš na srovnání. Na to se podíváme někdy příště.
Článek připravili Cardanians s podporou Cexplorer.
Přečtěte si článek: https://cexplorer.io/article/development-of-blockchain-programmability