Ethereum to sieć blockchain, która jako pierwsza wprowadziła pojęcie programowalności inteligentnych kontraktów. Jak działa sieć i co to w zasadzie jest to całe Ethereum, znajdziecie w naszej poprzedniej lekcji.
Ekosystem sieci zapewnia podstawy do tworzenia, kompilowania i wykonywania tysięcy inteligentnych kontraktów. Jak? Dzięki Ethereum Virtual Machine (EVM). Na dzisiejszej lekcji szerzej omówimy to pojęcie.
Ethereum Virtual Machine – definicja
Ethereum Virtual Machine (EVM) to oprogramowanie, które ma na celu generowanie i kompilowanie inteligentnych kontraktów do czytelnej formy zwaną Bytecode. Równocześnie EVM oblicza stan sieci Ethereum po dodaniu każdego nowego bloku do łańcucha.
Ethereum Virtual Machine zajmuje pozycję na najwyższym poziomie warstwy sprzętowej i sieciowej w ramach Ethereum. Co jeszcze jest interesujące w kontekście EVM? Inteligentne kontrakty wdrożone na innych zgodnych łańcuchach z EVM, takich jak Polygon czy Avalanche, są rozpoznawalne przez węzły Ethereum. W rezultacie deweloperzy mogą stosunkowo łatwo przenieść swoje dApp-y lub tokeny z Ethereum na inne łańcuchy, które są kompatybilne z Ethereum Virtual Machine i programować w języku Solidity.
W branży krypto EVM często nazywane jest „sercem Ethereum”, które napędza cały ekosystem sieci.
Jak działa Ethereum Virtual Machine?
Działanie EVM można podzielić na dwie odrębne sekcje – tworzenie tokenów i inteligentnych kontraktów. Przyjrzyjmy się temu tematowi dokładnie.
Ethereum Virtual Machine ułatwia proces generowania nowych tokenów na blockchainie Ethereum. Jak wspomniano wcześniej, EVM to program, który ułatwia tworzenie skryptów używanych do realizacji operacji na blockchainie Ethereum. Skrypt to zestaw instrukcji lub algorytmów, które mówią „komputerowi”, co zrobić, aby coś działało prawidłowo. EVM wymaga od deweloperów dostępu do dowolnego łańcucha sieci, aby móc wykonać żądane polecenia i utworzyć nowy token na łańcuchu bloków bez żadnych trudności.
Teraz, gdy już wiadomo, jak powstają nowe tokeny przy użyciu EVM, spójrzmy na inteligentne kontrakty. W sieci Ethereum istnieje ich mnóstwo. Mają one zdefiniowany kod, który ułatwia wymianę kryptowalut i informacji. Takie umowy (kody) są zdefiniowane przez twórcę inteligentnego kontraktu i zapewniają określony wynik.
Ethereum Virtual Machine dostarcza deweloperom i twórcom inteligentnych kontraktów środowisko Turing Complete, w którym mogą tworzyć skrypty i kontrakty. Oznacza to, że wszystko, co zaimplementujemy za pomocą komputera, uruchomimy przy użyciu EVM.
Ethereum Virtual Machine zapewnia nas, że wszystkie transakcje i inteligentne kontrakty na blockchainie Ethereum są wykonywane w prawidłowy sposób, zgodny z wcześniej ustalonym kodem inteligentnego kontraktu.
Mówiąc prościej – EVM to platforma, która w dużej mierze ułatwia deweloperom tworzenie dApp’sów i wdrożenie na blockchainie.
EVM – budowa
Ethereum Virtual Machine (EVM) składa się z dwóch głównych elementów. Pierwszy z nich jest odpowiedzialny za uruchamianie kodu źródłowego Solidity. EVM został napisany w języku C++ i korzysta z LLVM jako kompilatora. Ten składnik EVM obsługuje różne języki programowania, zapewnia bezpieczeństwo oraz środowisko uruchomieniowe dla kodów. Ponadto umożliwia programistom pisanie niestandardowego kodu bajtowego EVM.
Drugi element to tzw. “uncles” – niewielkie fragmenty inteligentnych kontraktów lub danych przechowywanych na łańcuchu bloków. Ten składnik pozwala na przechowywanie metadanych, takich jak:
- Informacje dotyczące podstawowych operacji, które można wykonać na aktywach przechowywanych w pamięci (nie na blockchainie!).
- Saldo Etheru posiadane przez kogoś w danym momencie.
- Historia wszystkich działań i transakcji związanych z Ethereum.
- Informacje o hashu danego bloku.
- Dane o tzw. “block number”, czyli liczbie wskazującej, do którego bloku należy konkretny “blockhash”.
- Kod wykonywany przy użyciu EVM, określający, jakie działanie zostanie podjęte w przypadku określonego wejścia (np. przekazywanie środków).
- Rzeczywisty rozmiar kodu w bajtach.
- Informacje o fragmencie EVM, który pozwala użytkownikom określić, ile jednostek gazu są gotowi zużyć w celu wykonania danej operacji.
Kiedy ktoś wspomina o “gazie”, możemy zapytać, jak ma to związek z wydajnością EVM. Otóż, gaz pełni rolę miary mocy obliczeniowej. W skrócie, określa czas, jaki jest potrzebny do wykonania transakcji i kontraktu. Ponieważ w całym ekosystemie istnieje dużo kodu, do jego wykonania “z góry” przypisuje się określoną ilość gazu. Domyślny limit został ustawiony na 250 000 jednostek. Warto pamiętać, że im bardziej skomplikowana transakcja, tym więcej gazu jest potrzebne do jej wykonania.
Zalety EVM
- Zmniejsza ryzyko wykonania niezaufanego kodu: EVM minimalizuje ryzyko uruchomienia kodu pochodzącego od niezaufanych źródeł, jednocześnie chroniąc dane poufne. Gwarantuje deweloperom, że ich obliczenia nie będą interferować z innymi systemami lub danymi osobistymi.
- Umożliwia uruchamianie złożonych inteligentnych kontraktów: Dzięki Ethereum Virtual Machine możemy bez obaw uruchamiać złożone inteligentne kontrakty, nie martwiąc się o to, jak wpłyną one na siebie nawzajem. Kontrakty te można napisać raz i uruchamiać na różnych platformach, co umożliwia stworzenie jednego inteligentnego kontraktu działającego na wielu platformach.
- Przetwarzanie deterministyczne: Inteligentne kontrakty napisane przy użyciu EVM mają dostęp do pełnej sieci Ethereum w danym momencie. To umożliwia przetwarzanie w sposób deterministyczny, co zwiększa pewność co do ich poprawności.
- Konsensus w formie rozproszonej: Ekosystem Ethereum pozwala na uruchamianie tego samego programu przez większość użytkowników na ich własnych komputerach, co sprzyja konsensusowi w formie rozproszonej.
- Łatwość pisania kontraktów stateful: EVM jest dedykowany do pisania inteligentnych kontraktów i tworzenia dApp’ów, zapewniając jednocześnie, że wszyscy użytkownicy widzą tę samą wersję. EVM ułatwia także pisanie kontraktów stateful, które mają dostęp do pamięci trwałej.
Wady EVM
- Bardzo wysoki koszt przechowywania danych: W skrócie – gaz. To, co zużywamy, płacąc opłatę za uruchomienie inteligentnego kontraktu.
- Wysoki koszt przechowywania danych na blockchainie: Może on przekroczyć 3TB, co stanowi znaczący wydatek.
- Wymagana duża wiedza techniczna: Pisanie inteligentnych kontraktów i korzystanie z EVM wymaga zaawansowanej wiedzy technicznej. Środowisko Turing Complete, pozwalające programować w różnych językach, może być zarówno zaletą dla niektórych, jak i przeszkodą dla innych osób z ograniczoną wiedzą i doświadczeniem.
Blockchainy kompatybilne z EVM
Interoperacyjność pomiędzy różnymi łańcuchami bloków w ekosystemie Ethereum stała się znaczącym wyzwaniem dla deweloperów. Wysokie opłaty za gaz i opóźnione transakcje skłoniły twórców Ethereum do poszukiwania alternatywnych rozwiązań na innych blockchainach. Choć pomagało to w zaoferowaniu szybszych transakcji i obniżeniu kosztów, napotykano na problem ograniczeń i braku interoperacyjności między różnymi łańcuchami blokowymi.
Łańcuchy zgodne z Ethereum Virtual Machine (EVM) stanowią skuteczne rozwiązanie dla tego problemu. Deweloperzy nie muszą zaczynać od podstaw, tworząc środowisko podobne do EVM. Zamiast tego mogą skorzystać z kompatybilnych łańcuchów blokowych, które replikują pewne elementy sieci Ethereum, umożliwiając szybkie i łatwe przenoszenie aktywów między różnymi sieciami EVM.
Dzięki tej interoperacyjności, najczęściej używane blockchainy podążają za standardem kompatybilności z EVM. Przykładowe łańcuchy blokowe, które współpracują z EVM, obejmują:
- Binance Smart Chain
- Avalanche
- Fantom
- Cardano
- Polygon
- Tron
Sidechainy tych ekosystemów są zazwyczaj zgodne z EVM, co przynosi korzyści i możliwości charakterystyczne dla blockchaina Ethereum, lecz zdecydowanie większą prędkością, pojemnością i niższymi opłatami transakcyjnymi.
Przypadki użycia EVM
Teraz, gdy już zdobyłeś wiedzę na temat tego, czym jest i jak działa EVM, skoncentrujmy się na tym, jak wszystko to łączy się w ekosystemie EVM oraz jak wspiera inne projekty oparte na Ethereum.
- Tokeny ERC-20: Tokeny ERC-20 pełnią rolę motywatorów dla użytkowników dApp i projektów opartych na Ethereum. Są zaprojektowane specjalnie tak, aby łatwo przenosić je między różnymi sieciami, jednocześnie zachowując ich wartość. Tworzone są przez inteligentne kontrakty, które opierają się na określonych strukturach danych.
- AMM i DEX: DEX-y umożliwiają wymianę tokenów ERC-20, korzystając z inteligentnych kontraktów. To właśnie te kontrakty umożliwiają użytkownikom korzystanie z puli płynności bez konieczności integracji z zewnętrznymi platformami. Te zautomatyzowane animatorzy rynku (AMM), takie jak SushiSwap, Uniswap i inne popularne giełdy, są kluczowymi graczami w tym obszarze.
- Tokeny ERC-271: Kolejnym typem tokena w ekosystemie EVM są tokeny ERC-271, często używane do tworzenia tokenów niemieniących się (NFT). Gry takie jak God Unchainned, Axie Infinity czy Decentraland wykorzystują ERC-271 do generowania kolekcjonerskich przedmiotów w grze.
- DeFi: Projekty, takie jak Cardano i jego zdecentralizowana giełda AMM AdaSwap, współpracują z rozwiązaniami warstwy 2 sidechaina Milkomeda, co zapewnia kompatybilność z blockchainami, takimi jak EVM. To umożliwia użytkownikom przesyłanie aktywów i uruchamianie dAppów Cardano na Ethereum, a także odwrotnie.
- DAO: Warto zaznaczyć, że EVM jest zarządzane przez DAO, czyli zdecentralizowaną organizację autonomiczną. DAO działają w sposób autonomiczny i transparentny, gdzie inteligentne kontrakty ustalają zasady, podejmując decyzje na podstawie kodu. Mimo to użytkownicy systemu mogą brać udział w głosowaniach i zgłaszać propozycje konsensusu. Ciekawostką jest, że nawet sam kod może być poddany publicznemu audytowi, co umożliwia każdemu członkowi społeczności DAO zrozumienie, jak protokół działa na każdym etapie.
Jeśli chcesz przypomnieć sobie, czym było i jakie są najważniejsze cechy DAO, odsyłamy Cię do naszej lekcji.
Jak działa EVM?
Teraz coś dla entuzjastów matematyki i informatyki. Ethereum Virtual Machine działa analogicznie do większości funkcji matematycznych, ponieważ jest w stanie generować deterministyczne wyjście dla dowolnego wejścia.
EVM skupia się głównie na stanie i transakcjach. Stan EVM opisuje strukturę danych, a transakcje to instrukcje działania z różnych kont, podpisane kryptograficznie.
Stan, reprezentowany jako zmodyfikowane drzewo Patricia Merkle, przechowuje zapisy wszystkich kont, powiązanych ze sobą przez różnego rodzaju hasze. Co interesujące, pojęcie “stan” w funkcjach EVM może odnosić się do konkretnego hasha na blockchainie Ethereum.
Warto również zaznaczyć, że Ethereum Virtual Machine obsługuje dwa warianty transakcji. Jednak tylko jeden z nich prowadzi do wywołania wiadomości, a drugi do tworzenia kontraktów. Tworzenie kontraktu skutkuje stworzeniem nowego konta, zawierającego bytecode inteligentnego kontraktu.
Opcody, które wielokrotnie pojawiały się w naszych wcześniejszych lekcjach, stanowią integralną część każdej implementacji EVM. Opcody obsługiwane przez Ethereum Virtual Machine służą do realizacji różnych zadań związanych z inteligentnymi kontraktami, transakcjami kryptowalutowymi, a także do rejestrowania danych i wykonywania operacji arytmetycznych. Ciekawostką jest to, że opcody nie posiadają bezpośredniego skryptu w EVM, co umożliwia programistom tworzenie inteligentnych kontraktów i interakcji z nimi bez nadmiernego wysiłku.
Podsumowanie
Jeżeli kiedykolwiek miałeś styczność z ekosystemem Ethereum, z pewnością nie ominęła Cię informacja o Ethereum Virtual Machine. Jest to wirtualna maszyna, pozbawiona fizycznych ograniczeń, która do swojego działania nie wymaga zaawansowanego sprzętu. EVM stanowi również doskonałe środowisko do łatwego tworzenia i wdrażania inteligentnych kontraktów.