Maszyna wirtualna Ethereum (EVM)
Maszyna wirtualna Ethereum (EVM) to zdecentralizowane środowisko wirtualne, które wykonuje kod spójnie i bezpiecznie we wszystkich węzłach Ethereum. Węzły uruchamiają EVM w celu wykonywania inteligentnych kontraktów, używając „gaz„aby zmierzyć wysiłek obliczeniowy niezbędny do przeprowadzenia operacji, zapewniając efektywne przydzielanie zasobów i bezpieczeństwo sieci.
Wymagania wstępne
Do zrozumienia EVM niezbędna jest podstawowa znajomość terminologii informatycznej, takiej jak bajty, pamięć i stosy. Pomocna jest również znajomość kryptografii i pojęć blockchain, takich jak funkcje skrótu i drzewa Merkle'a.
Od księgi głównej do maszyny stanowej
Łańcuchy bloków, takie jak Bitcoin, są często określane mianem „rozproszonych rejestrów”, które przechowują rejestr aktywności zgodny z zestawem reguł regulujących modyfikacje. Na przykład, adres Bitcoin nie może wydać więcej Bitcoinów, niż otrzymał. Reguły te leżą u podstaw wszystkich transakcji w Bitcoinie i wielu innych blockchainach.
Chociaż Ethereum ma własną natywną kryptowalutę (Ether) z podobnymi zasadami, obsługuje również bardziej zaawansowaną funkcję: inteligentne kontraktyAby to zrozumieć, Ethereum można lepiej opisać jako rozproszoną maszynę stanów. Stan Ethereum to duża struktura danych, która przechowuje nie tylko wszystkie konta i salda, ale także stan maszyny, który może zmieniać się z bloku na blok zgodnie z predefiniowanymi regułami, wykonując dowolny kod maszynowy. EVM definiuje reguły tych zmian stanu.
Jaka jest różnica między EVM a Ethereum?
Ethereum to platforma umożliwiająca użytkownikom tworzenie i uruchamianie aplikacji w zdecentralizowanej sieci komputerów. Posiada własną walutę cyfrową o nazwie Ether (ETH), która służy do płacenia za zakupy w sieci. Wyobraź sobie Ethereum jako gigantyczny, współdzielony komputer, z którego każdy może korzystać do tworzenia i uruchamiania swoich aplikacji bez centralnego nadzoru.
Maszyna wirtualna Ethereum jest jak silnik wewnątrz tego gigantycznego komputera. Dba o to, aby wszystkie aplikacje i inteligentne kontrakty (zautomatyzowane umowy) działały tak samo na każdym komputerze w sieci. Aby zapewnić uczciwość i wydajność, EVM wykorzystuje system zwany „gazem” do pomiaru mocy obliczeniowej potrzebnej do każdego zadania, zapobiegając marnowaniu zasobów.
Mówiąc najprościej, Ethereum to cała platforma, która umożliwia tworzenie i używanie zdecentralizowanych aplikacji i kontraktów, podczas gdy Maszyna wirtualna Ethereum jest częścią platformy, która obsługuje te aplikacje i kontrakty, zapewniając płynne i spójne działanie na wszystkich komputerach w sieci. Na tym właśnie polega różnica między EVM a Ethereum.
Funkcja przejścia stanu Ethereum
EVM zachowuje się jak funkcja matematyczna: na podstawie danych wejściowych generuje deterministyczny wynik. Można to formalnie opisać jako funkcję przejścia stanu:
\[ Y(S, T) = S' \]
Biorąc pod uwagę stary, prawidłowy stan \( S \) i nowy zestaw prawidłowych transakcji \( T \), funkcja przejścia stanu Ethereum \( Y(S, T) \) generuje nowy, prawidłowy stan wyjściowy \( S' \).
Miasto
W Ethereum stanem jest ogromna struktura danych zwana zmodyfikowaną strukturą Merkle Patricia Trie, która łączy wszystkie konta za pomocą skrótów i redukuje je do pojedynczego skrótu głównego przechowywanego w blockchainie.
Transakcje
Transakcje to kryptograficznie podpisane instrukcje z kont, klasyfikowane na dwa typy: te skutkujące wywołaniami komunikatów i te skutkujące utworzeniem kontraktu. Utworzenie kontraktu generuje nowe konto kontraktu zawierające skompilowany bajtkod inteligentnego kontraktu. Gdy inne konto wywołuje komunikat do tego kontraktu, wykonuje jego bajtkod.
Instrukcje dotyczące maszyn do pisania (EVM)
Maszyna EVM działa jako maszyna stosu o głębokości 1024 elementów, z których każdy to 256-bitowe słowo, wybrane ze względu na zgodność z kryptografią 256-bitową (taką jak skróty Keccak-256 lub sygnatury secp256k1). Podczas wykonywania operacji maszyna EVM utrzymuje pamięć przejściową (tablicę bajtów z adresowaniem słów), która nie jest zachowywana między transakcjami. Kontrakty posiadają powiązaną z kontem i częścią stanu globalnego pamięć typu Merkle Patricia (tablicę słów z adresowaniem słów).
Skompilowany kod bajtowy inteligentnego kontraktu wykonuje się jako Maszyna wirtualna Ethereum kody operacji, wykonujące standardowe operacje stosu, takie jak XOR, AND, ADD, SUB itp., a także operacje specyficzne dla blockchain, takie jak ADDRESS, BALANCE i BLOCKHASH.
Wdrożenia EVM
Wszystkie implementacje EVM muszą być zgodne ze specyfikacjami Ethereum Yellow Paper. W historii Ethereum EVM przeszedł szereg rewizji, czego efektem były liczne implementacje w różnych językach programowania, w tym:
- Py-EVM (Python)
- evmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- revm (Rdza)
Dzięki tym wdrożeniom można mieć pewność, że EVM pozostanie spójny i bezpieczny na różnych platformach.