Wprowadzenie do Cardano (ADA) i Plutus

Opublikowano: 2023-01-09 10 minut
Kategoria:
web3
▪ Tagi:
blockchain
cardano

Cardano jest zbudowane na Haskellu i wykorzystuje algorytm konsensusu Ouroboros. Plutus to platform smart contractów w Cardano. ADA to kryptowaluta. Jak działa Cardano?

Cardano zostało założone w 2015 przez Charlesa Hoskinsona, współpracującego wcześniej z Vitalikiem Buterinem, czyli głównym twórcą Ethereum.

Za rozwój Cardano odpowiada Cardano Foundation. Rozwojem blockchaina właściwie na wyłączność zajmuje się firma Input Output . To firma rozwijająca technologię blockchain, a także prowadząca badania naukowe w tym zakresie, założona przez Hoskinsona i Jeremiego Wood.

Cardano reklamuje się jako blockchain 3 generacji. Co to oznacza? To stopniowanie jest mniej lub bardziej formalną formą opisu zaawansowania i rozwoju platform blockchain.

Pierwszą generacją blockchain był Bitcoin, gdzie blockchain pełnił pojedynczą funkcję. W przypadku Bitcoina funkcjonalności blockchain skupiają się na dostarczeniu funkcjonalności cyfrowego pieniądza, jakim jest Bitcoin. Drugą generację blockchain zapoczątkował Ethereum, będąc systemem, w którym możemy uruchamiać smart contracty. Blockchain drugiej generacji, to “globalny komputer”, który może oferować wiele funkcjonalności, dzięki możliwości programowania. Trzecia generacja blockchain skupia się na rozwoju blockchaina drugiej generacji, starając się znaleźć optymalne rozwiązanie problemów blockchaina takich, jak szeroko pojęte skalowalność, bezpieczeństwo, możliwość wprowadzania aktualizacji, rozwiązywania sporów, itp.

Kryptowalutą blockchaina Cardano jest ADA. Całkowita podaż ma wynosić 45 miliardów, obecnie na rynku znajduje się ponad 35 miliardów. 57.6% całkowitej podaży zostało sprzedane podczas ICO. Proces tworzenia nowej kryptowaluty w ramach POS deleguje część nowo wytworzonych tokenów na fundusz rozwoju projektu Cardano.

Cardano to ciekawy blockchain przede wszystkim ze względu na swoje naukowe podejście do rozwoju technologii blockchain. Znajdziemy tu dużo opracowań naukowych uzasadniających decyzje projektowe Cardano. IOHK zatrudnia specjalistów z silnym zapleczem akademickim i kompetentnych inżynierów. Celem Cardano jest konkurencja z Ethereum, czyli największym programowalnym blockchain.

Jak zbudowane i jak działa Cardano? Oto najważniejsze cechy Cardano

Cardano zbudowany jest na Haskellu – funkcyjnym i nie ukrywajmy trudnym języku programowania. Paradygmat funkcyjny celuje w zapewnienie łatwości utrzymania oprogramowania i docelowo jego niezawodnym działaniu.

Ouroboros to algorytm konsensusu typu POS użyty w Cardano. Oznacza to, że w Cardano nie ma górników kryptowalut. To specjalistyczny algorytm bazujacy na researchu naukowym, różniący się od Ethereum np. faktem, że w Cardano nie ma “kar” dla nieuczciwych walidatorów (tworzących bloki), a jednak algorytm zapewnia poprawne działanie sieci, jak długo 51% kryptowaluty ADA wykorzystanych do POS jest używane przez uczciwe węzły. Konsensus to kluczowa cecha każdego blockchaina, poświęcę mu osobny wpis.

Cardano podobnie, jak Bitcoin oparty jest u UTXO. To cecha architektury samego “ledgera” – blockchaina, czyli sposobu, w jaki sposób zapisywane i kryptograficznie zabezpieczone są dane w blockchain. Użycie UTXO to bardzo charakterystyczna cecha Cardano. Ma to bardzo duży wpływ na sposób obsługi smart contractów, odczytu danych, ale też skalowania blockchaina. To także temat na osobne wpisy.

Cardano posiada mechanizm technologiczny umożliwiający łatwe hard-forki tzw. hardfork combinator. Umożliwia to wprowadzanie nowy zmian w blockchain, w sposób zapewniający poprawne działanie sieci.

Hydra to rozwiązanie 2 warstwy oparte o kanały tzw. state channels. Idea jest zbliżona do działania Lightning Network. Mithril to tzw. sposób realizacji rozwiązań wielopodpisowych (multi-signature scheme).

Cardano posiada tzw. “natywne tokeny”, czyli wbudowaną w blockchain możliwość tworzenia tokenów typu ERC-20 oraz ERC-721 (NFT). W Ethereum tokeny tworzy się poprzez załadowanie odpowiedniego smart contractu do sieci.

Cardano wspiera budowę łańcuchów bocznych (sidechains). IOHK pracuje nad budową sidechaina EVM, wspierającego uruchamianie kontraktów z Ethereum.

Blok w Cardano ma 88KB i jest tworzony co 20 sekund. Wydajność Cardano możemy mierzyć w setkach tx na sekundę, ale nie jest to blockchain promujący tysiące, a nawet dziesiątki tysięcy tx na sekundę (jak np. Solana).

Średni koszt transakcji w Cardano to około 0.17 ADA (aktualnie 25 groszy).

Smart contracty w Cardano

Cardano to blockchain 3 generacji, programowalna platforma blockchain. Cardano to system analogiczny do Ethereum – programowalny komputer. Jednak architektura danych tworzących blockchain w Cardano, jest analogiczna do… Bitcoina. Co to oznacza?

Architektura danych Cardano oparta jest o EUTXO. Oznacza to rozszerzone (extended) UTXO. Żeby zrozumieć UTXO, musimy poznać klasyczny model danych w blockchainie.

Dane w każdym blockchain zapisywane są w kryptograficznie zabezpieczonych blokach. Bloki posiadają transakcje, czyli opisy zmian, które należy przeprowadzić w blockchainie. Transakcja to np. przesłanie kryptowaluty z jednego adresu do drugiego, ale też realizacja wymiany na zdecentralizowanej giełdzie Uniswap, która wywołuje “smart contract” zapisując na blockchain dane o wykonanym kupnie/sprzedaży. Dane w blokach tworzą historię zmian na blockchain, a algorytm konsensusu i kryptografia są gwarantem ich bezpieczeństwa i niezmienności.

Ethereum, jako programowalny blockchain posiada poza blokami jeszcze inną specjalną przestrzeń opisywaną jako “stan systemu” (world state). Te dane zawsze odzwierciedlają aktualny, najnowszy stan danych. Na przykład wysyłając 3 razy 1 Ether z konta A, do B – w world state finalnie B będzie posiadać 3 Ethery, chociaż w blokach znajdziemy 3 osobne transakcje zmiany stanu. W taki sam sposób zmieniają się dane aktualizowane przez smart contract. Ta struktura danych ułatwia odczyt, dostęp do danych jest szybki (indeksowany). Każdy węzeł w sieci posiada własny, niezależny “world state”, który po przetworzeniu wszystkich transakcji u wszystkich węzłów powinien być taki sam.

Chcąc sprawdzić stan posiadanych Bitcoinów przez adres X, należy… przeskanować każdy blok i każdą transakcję w blockchainie Bitcoin. Dlaczego? Bo Bitcoin nie ma world state. Tak samo, jak Cardano. Najmniejsza struktura danych niosąca informację w Bitcoinie i Cardano to UTXO. W Bitcoinie dane, jakie posiada UTXO to informacja o “ilości Bitcoina”, dostępnych do wydania. Jeśli UTXO z zapisem “1 BTC” jest przypisane do adresu, to adres kontroluje 1 BTC. EUTXO w Cardano oprócz informacji o ilości kryptowaluty, posiada także dane, a nawet samą logikę smart contractów.

EUTXO sprawia, że operacja na danych (i programie w Cardano) jest dosłownie iteracją, przechodzeniem przez łańcuch powiązanych ze sobą UTXO. UTXO można wydać i w momencie wydania oznacza się je jako “nieaktualne”, ale powstaje nowe UTXO, posiadające zaktualizowany stan danych. Działanie smart contractów w Cardano, to właśnie proces tworzenia nowych EUTXO i oznaczania starych, jako nieaktualne.

Chcąc pozwolić zrozumieć budowę smart contractów (kontraktów) w Cardano, wyjaśnię budowę i działanie klasycznego kontraktu, tzn. jaki możemy implementować w Ethereum, pierwszym i nadal wiodącym na rynku programowalnym blockchainie. Kontrakt w Ethereum to “mały” program komputerowy, czyli zestaw danych i instrukcji przetworzenia tych danych, wykonania na nich pewnych operacji. Taki kontrakt, jako “pakiet”, mamy możliwość załadować do sieci blockchain. Taki program staje się niezmienną częścią blockchaina i od momentu załadowania, blockchain gwarantuje jego niezmienność (nie można zmieniać instrukcji kontraktu). Staje się też globalnie dostępny i widoczny dla całej sieci blockchain. Kontrakt otrzymuje unikalny adres w sieci blockchain. Znając ten adres mamy możliwość interakcji z tym kontraktem, tj. uruchamiania jego funkcji, które mogą np. zapisać nowe dane do blockchaina lub odczytać istniejące (wcześniej zapisane przez kontrakt). W zależności od zabezpieczeń kontraktu (programujemy je), inni użytkownicy blockchaina, a nawet inne kontrakty mogą prowadzić interakcję z naszym kontraktem. Podsumowując: idea jest prosta – kontrakty w Ethereum to programy istniejące w blockchainie.

Kontrakty w Cardano nie są pojedynczymi programami ładowanymi do blockchaina, dostępnymi pod określonym adresem. W Cardano zapisujemy do blockchaina małe bloczki (w postaci EUTXO), które reprezentują albo dane, albo logikę/reguły użycia/prawa własności do tych danych. Wywołanie smart contractu, polega na zapisie w blockchain transakcji, w której wskażemy istniejące w blockchain bloczki z danymi (EUTXO), bloczki z regułami ich przetworzenia (script EUTXO) oraz dane “odblokowujące” istniejące bloczki z danymi. Dane “odblokowujące” dostarczone w transakcji, odblokowują bloczki z danymi (i pozwalają zapisać nowe w blockchain) tylko, jeśli pasują (odblokowują) do bloczków z regułami. Ta separacja danych od reguł, zapis małych, niezależnych bloczków w blockchain (EUTXO) i idea “odblokowywania” to właśnie Cardano.

Plutus, czyli smart contracty w Cardano. Oto podstawy tworzenia rozwiązań web3 na Cardano 💬👇

Plutus to platforma smart contractów w Cardano. Termin dość szeroki, ponieważ nazwa “Plutus” jest przez Cardano częścią kilku ważnych produktów/technologii Cardano m.in. Plutus Core i Plutus Framework.

Rozwiązania web3 dla Cardano tworzymy w Haskellu. Kod programu kompilowany (trudne słowo) jest do Plutus Core, który jest “językiem” rozumianym przez Cardano blockchain. Z perspektywy użytkownika, programisty – o Plutus Core tylko warto wiedzieć, używamy Haskella 😉

Aplikacje web3 dla Cardano mają inną architekturę niż aplikacje dla Ethereum. W web3 Ethereum istnieje smart contract załadowany do sieci oraz klient (np. przeglądarka użytkownika), która prowadzi interakcję z tym kontraktem. W Cardano istnieje klient, aplikacja backendowa oraz kod z danymi (smart contarct) zapisane w blockchain.

Aplikację backendowa w Cardano, można stworzyć używając Plutus Framework, oficjalnego frameworka Cardano. Umożliwi nam w prosty sposób zaprogramować ramy aplikacji backendowej, która pozwoli na interakcję z klientem oraz da mu możliwość konstruowania danych i kontraktów zapisywanych do blockchain.

W Cardano smart contract, jako część tzw. kodu on-chain, przetwarzanego przez węzły blockchain jest bardzo mała. To odróżnia Cardano od innych blockchainów. Kod on-chain to prosty warunek, który po dostarczeniu w transakcji: danych wejściowych (EUTXO reprezentujących dane na blockchain) i danych odblokowujących EUTXO wejściowe, ma zdecydować, czy dane wejściowe faktycznie można odblokować. W Cardano kod on-chain nazywamy “validator script”, dane wejściowe EUTXO nazywamy “datum”, a dane odblokowujące to “reedemer”. Jeśli validator script sprawdzi, że reedemer pasuje do datum, wtedy przetworzenie “smart contractu” jest poprawne i można zapisać nowe dane do blockchain (jako rezultat przetworzenia smart contractu).

W Cardano ważną częścią aplikacji web3 jest część backendowa/serwerowa, uruchamiana przez dostawcę rozwiązania web3. Chociaż nie ma ona możliwości ingerencji w poprawność przetworzenia, to jednak… jest potrzebna i musi działać, aby całość funkcjonowała. Inaczej niż w Ethereum… Tam wystarczy użytkownik i blockchain. W działającym rozwiązaniu web3 Cardano – potrzebna jest też część backendowa.

web3
blockchain
cardano