Ethereum Virtual Machine (EVM): Co to jest i jak działa?

Blockchain
21.12.23

Ethereum Virtual Machine (EVM) to element, który czyni z Ethereum zdecentralizowaną platformę zamiast rozproszonej księgi. EVM umożliwia developerom tworzenie smart kontraktów w Solidity, języku programowania, otwierającego drogę do bezpiecznego wykonywania obliczeń wielostronnych. Oznacza to w skrócie, że strony mogą zgodzić się na określony wynik bez polegania na sobie nawzajem.

Od EVM w duże mierze zależy również zdolność Ethereum do tworzenia tokenów. Wiele projektów wystawia swoje własne tokeny jako nagrody za bycie częścią ich ekosystemów.

Czym jednak w zasadzie jest EVM i w jaki sposób działa? W poniższym artykule poznasz tajniki tej imponującej technologii.

Czym jest EVM?

Nawet najzdolniejsi hakerzy mają trudności z dokonaniem cyberataku na zdecentralizowanej sieci, jako że wymagałoby to odłączenia każdego członka sieci z osobna.

Do rozbudowy zdecentralizowanej sieci i tworzenia bezpiecznych produktów developerzy wykorzystują wirtualne maszyny (VM). Stanowią one warstwę abstrakcji między kodem i maszyną, która go wykonuje. Wirtualne maszyny działają dokładnie tak jak te istniejące w rzeczywistości, mając przydzieloną pamięć, miejsce do przechowywania i CPU. Różnica tkwi w tym, że funkcjonują wyłącznie w formie cyfrowej, a nie fizycznej. Działają na różnym sprzęcie i różnych systemach operacyjnych z jakiegokolwiek miejsca.

W teorii, każdy użytkownik może korzystać z wirtualnej maszyny, co czyni ją idealną platformą dla zdecentralizowanej sieci. Ethereum Virtual Machine wykorzystuje zdecentralizowaną sieć do wykonywania smart kontraktów.

EVM to wirtualna maszyna wykonująca smart kontrakty, których kod został skompilowany do zrozumiałego przez nią kodu bajtowego. Odizolowuje to kod maszyny, system plików i procesy na węzłach od pozostałej części sieci. Każdy węzeł w sieci wykonuje instancje z jednakowym zestawem instrukcji.

Smart kontrakty i EVM

Smart kontrakty to samoegzekwuąjące się programy wykorzystujące zasoby cyfrowe do ułatwienia realizacji postanowień umowy i ich weryfikacji. Są one zupełne w sensie Turinga i wykonują każdy kod, w tym skrypty.

Smart kontrakty wykonywane są w przypadku spełnienia szeregu wymogów (na łańcuchu bloków lub poza nim), jak na przykład przelanie funduszy na konkretny adres. Każdy użytkownik może przesłać fundusze na adres smart kontraktowy celem uruchomienia operacji bez angażowania stron trzecich.

Smart kontrakty są tak bezpieczne, ponieważ po wdrożeniu nikt nie może zmienić ich kodu. Od każdego kontraktu oczekuje się deterministycznych rezultatów. Każda jego realizacja zmienia stan EVM.

Maszyna Wirtualna Ethereum jest odpowiedzialna za przetwarzanie zmian stanu w wyniku realizacji smart kontraktów. Utrzymuje ona salda kont Ether, pamięć smart kontraktów i transakcje na poziomie kont i kontraktów. Wszystkie te aktywności zmieniają stan sieci.

Smart kontrakty powstają w języku Solidity, ale nie mogą być bezpośrednio wykonywane przez EVM. Developerzy muszą najpierw skompilować je do niskopoziomowych instrukcji nazywanych opkodami.

EVM illustration

Jak działa EVM?

Zestaw instrukcji maszyny wirtualnej Ethereum pozwala smart kontraktom realizować różne zadania obliczeniowe. Przykładem mogą być tokeny wymienialne dodawane do standardu ERC-20 lub tokeny niewymienialne (NFT) w standardzie ERC-721. NFT wykorzystywane są na potrzeby crowdfundingu, gamingu, zdecentralizowanych marketplace’ów, czy rynków prognostycznych.

Ich możliwości ogranicza jednak pewien problem – tempo uruchamiania niektórych programów pozostawia sporo do życzenia. Naraża to sieć Ethereum na ryzyko zapętlenia. W zapobieganiu takim konsekwencjom pomaga proces zarządzający. Bez takiego wsparcia, program może całkowicie sparaliżować sieć. Ethereum ma swój sposób na radzenie sobie z tym problemem – Ethereum gas.

Czym jest Ethereum gas?

Ethereum Virtual Machine (EVM) ma wbudowany mechanizm, który ma ograniczać konsumpcję energii na potrzeby wykonywania obliczeń. Opłaty za koszty obliczeniowe pobierane przez sieć Ethereum przybierają postać “gasu”. Gdy gas zasilający daną transakcję się wyczerpie, EVM zatrzymuje program.

Czyni to z EVM jedyną kompletną maszynę w sensie Turinga. Może ona uruchomić każdy program, ale tylko jeśli ograniczony jest on limitem maksymalnego wykorzystania mocy obliczeniowej. Limit ten nie jest niezmienny – może być zwiększany przez użytkowników tak długo, jak to potrzebne. Ograniczeniem objęta jest jednak ilość mocy obliczeniowej, jaką może pochłonąć kontrakt w konkretnym przypadku. Transakcje, które je przekroczą, zostaną zakończone.

Wyzwania związane z EVM

Maszyna Wirtualna Ethereum (EVM) ma kilka ograniczeń, które wpływają na przepustowość sieci. Przede wszystkim, w specyfikacji opkodów EVM nie wprowadzano zmian od momentu jej powstania ani nie optymalizowano jej pod różne platformy sprzętowe.

Ponadto EVM musi przetwarzać bardzo zróżnicowane operacje, co wpływa na tempo ich realizacji. Przyczynia się to do powstawania „wąskich gardeł”, które mają negatywny wpływ na wydajność sieci blockchain. Od momentu jej powstania, w Maszynie Wirtualnej Ethereum nie wprowadzano większych zmian. W efekcie platforma nie zapewnia dostatecznego wsparcia w zakresie kodowania smart kontraktów.

Ethereum illustration

Zastosowania EVM

Tokeny ERC-20

Tokeny ERC-20 mogą mieć ograniczoną podaż i można przesyłać je z adresu na adres. Ich wartość pozostaje niezmienna na sieci. Do tworzenia takich tokenów wykorzystuje się smart kontrakty oparte o określoną strukturę danych.

Tokeny ERC-20 wykorzystuje się do nagradzania użytkowników. Przykładem może być Livepeer – zdecentralizowana sieć streamingowa – która wykorzystuje swój token LPT do nagradzania osób dostarczających sieci zasoby. Next Mutual, zdecentralizowana platforma ubezpieczeniowa wykorzystująca smart kontrakty, umożliwia z kolei użytkownikom zakup ubezpieczeń i składanie wniosków za pośrednictwem takich tokenów (NXM).

Zdecentralizowana wymiana

Platformy zdecentralizowanej wymiany umożliwiają użytkownikom handlowanie tokenami ERC-20 do wdrażania smart kontraktów określanych mianem Automated Market Makers (AMM). Umożliwiają one użytkownikom dokładanie się do pul niektórych tokenów bez udziału żadnych organów pośredniczących. Do popularnych platform tego typu należą Uniswap i SushiSwap.

Tworzenie smart kontraktów dla Ethereum vs. innych sieci za pośrednictwem EVM

Jako że kompilator i środowisko uruchomieniowe w każdym przypadku pozostają takie same, tworzenie smart kontraktów dla Ethereum, Avalanche C-chain czy Polygon Network wygląda w zasadzie identycznie.

Jedyna różnica tkwi w procedurze wdrożeniowej, która w przypadku sieci innych niż Ethereum trwa przynajmniej kilka godzin lub nawet kilka dni więcej. Ethereum ma kontrakty, które umożliwiają developerom napisanie całej logiki, jednak jest to dość kosztowne. Inne blockchainy oferują podobne możliwości znacznie niższym kosztem. Możesz wdrożyć tę samą logikę na innej sieci, jak np. Polygon, wydając 10x mniej.

Oczywiście, ogromna rozpoznawalność i reputacja Ethereum wiąże się z mniejszym ryzykiem problemów i niepowodzeń, niż w przypadku innych, bardziej przystępnych cenowo sieci. Niemniej jednak Polygon i Avalanche również są dobrze rozpoznawalnymi sieciami blockchain, których wybór zdecydowanie może się opłacić.

Podsumowanie

EVM czyni z Ethereum platformę zamiast zwykłej sieci blockchain. Wprowadza jednak szereg ograniczeń, które nie uchodzą uwadze społeczności developerów. Dzięki wprowadzeniu ulepszeń do EVM, Ethereum będzie w stanie zbliżyć się do realizacji swojej obietnicy zrewolucjonizowania transakcji.
W 4soft tworzymy smart kontrakty z wykorzystaniem Solidity. Aplikacje kompilowane są do kodu bajtowego zrozumiałego dla EVM. Ogromną zaletą tego rozwiązania jest fakt, że kod bajtowy jest zrozumiały również dla innych sieci, jak na przykład Avalanche C-Chain. W ten sposób znika ryzyko, że nie uda nam się dostarczyć smart kontraktu, nawet jeśli nie znamy języka danej sieci.

Skontaktuj się z nami jeśli szukasz ekspertów w obszarze sieci blockchain, którzy potrafią wykorzystać pełen potencjał technologii takich jak EVM.