Przejdź do głównej zawartości

Pomóż nam zaktualizować tę stronę

🌏

Dostępna jest nowsza wersja tej strony, ale tylko w języku angielskim. Pomóż nam przetłumaczyć najnowszą wersję.

Przetłumacz stronę
Zobacz wersję po angielsku

Brak błędów!🐛

Ta strona nie jest tłumaczona. Na razie celowo zostawiliśmy tę stronę w języku angielskim.

Maszyna Wirtualna Ethereum (EVM)

Ostatnia edycja: , Invalid DateTime
Edytuj stronę

Maszyna Wirtualna Ethereum (EVM) jest fizyczną instancją, która nie może być opisana w taki sam sposób, jak moglibyśmy wskazać na chmurę lub fale oceanu, ale istnieje jako pojedynczy byt utrzymywany przez miliony połączonych komputerów, na których działa klient Ethereum.

Protokół Ethereum istnieje wyłącznie w celu utrzymania niezakłóconej ciągłości i niezmienności operacji tej specjalnej maszyny stanów; jest to środowisko, w którym działają wszystkie konta oraz inteligentne kontrakty Ethereum. Każdy blok łańcucha Ethereum posiada jeden i tylko jeden stan „kanoniczny”, a EVM jest tym co definiuje zasady obliczeń nowego poprawnego stanu dla kolejnych bloków.

Wymagania wstępne

Do zrozumienia EVM konieczna jest znajomość podstawowej terminologii informatycznej, takiej jak bajty, pamięć i stos. Równie pomocne może się okazać zaznajomienie się z takimi pojęciami, jak kryptografia, blockchain funkcja haszująca, Proof-of-Work, drzewo Merkle.

Od księgi głównej do maszyny stanowej

Analogia „księgi głównej” jest często używana w celu opisania blockchainów np. takich jak Bitcoin, które umożliwiają zdecentralizowanym walutom używanie fundamentalnych narzędzi kryptograficznych. Kryptowaluta zachowuje się, jak „normalna“ waluta poprzez zasady jakimi jest zarządzana, co ktoś może, a czego nie może robić, aby zmodyfikować księgę główną. Dla przykładu, adres Bitcoina nie może wydać więcej Bitcoinów, niż wcześniej otrzymał. Zasady te są podstawą wszystkich transakcji na Bitcoinie i wielu innych blockchainach.

Choć Ethereum ma swoją własną kryptowalutę (Ether), która działa niemal dokładnie według tych samych intuicyjnych zasad, pozwala również stosować znacznie bardziej rozbudowaną funkcję: inteligentne kontrakty. Dla tej skomplikowanej funkcji wymagana jest bardziej wyszukana analogia. W odróżnieniu od rozproszonej księgi główne, Ethereum jest rozproszoną maszyną stanową. Stany Ethereum są wielkimi strukturami danych, które przechowują nie tylko wszystkie konta i ich salda, ale też stan maszyny, który może zmieniać się od bloku do bloku zgodnie z predefiniowanymi zasadami, i który może wykonywać dowolny kod maszynowy. Konkretne zasady zmiany stanu od bloku do bloku są zdefiniowane przez EVM.

Schemat przedstawiający strukturę EVM Schemat zaadaptowany z Ethereum EVM illustrated

Funkcja przejścia stanów Ethereum

EVM zachowuje się jak funkcja matematyczna: biorąc pod uwagę dane wejściowe, wytwarza deterministyczne dane wyjściowe. Dlatego bardziej pomocne jest bardziej formalne opisanie Ethereum jako posiadającego funkcję zmiany stanu:

1Y(S, T)= S'
2

Uwzględniając stary ważny stan (S) oraz nowy zestaw ważnych transakcji (T), funkcja zmiany stanu Ethereum Y(S, T) tworzy nowy prawidłowy stan wyjściowy S'

Stan

W odniesieniu do Ethereum, stan jest olbrzymią strukturą danych nazywaną zmodyfikowanym drzewem Merkle Patricia, która zachowuje wszystkie konta połączone haszami i zredukowane do pojedynczego haszu źródłowego przechowywanego na blockchainie.

Transakcje

Transakcje są to pojedyncze kryptograficznie podpisane instrukcję pochodzące z kont użytkowników. Możemy wyróżnić dwa typy transakcji: te, których wynikiem są wywołania komunikatów, oraz te, których wynikiem jest utworzenie kontraktu.

Rezultatem stworzenia nowego kontraktu jest stworzenie nowego konta kontaktu zawierającego skompilowany kod bitowy inteligentnego kontraktu. Ilekroć inne konto wysyła wywołania komunikatów do tego kontraktu, wykonuje on kod bitowy.

Instrukcje EVM

EVM działa jako maszyna stosu, która posiada 1024 elementy. Każdy element jest 256-bitowym słowem, które zostało wybrane dla zmaksymalizowania kompatybilności z algorytmem SHA-3-256.

A diagram showing the make up of the stack Diagram adapted from Ethereum EVM illustrated

Removed as we should probably show memory and account storage too if showing stack-->

Podczas wykonywania EVM przechowuje pamięć przejściową (w postaci tablicy bajtów z adresami słów), która jednak nie jest trwała między transakcjami.

Kontrakty jednak zawierają drzewo pamięciowe Merkle Patricia (jako adresowalną tablicę słów), powiązane w wiadomości z odpowiednim kontem i częścią stanu globalnego.

Skompilowany kod bitowy inteligentnego kontraktu wykonywany jest jako szereg kodów operacyjnych EVM, które przeprowadzają standardowe operacje na stosie, takie jak XOR, AND, ADD, SUB itp. EVM implementuje również szereg operacji stosu specyficznych dla blockchaina, takich jak ADDRESS, BALANDCE, SHA3, BLOCKHASH itp.

Schemat pokazujący, gdzie potrzebny jest gaz dla operacji EVM Schemat zaadaptowany z Ethereum EVM illustrated

Implementacja EVM

Wszystkie implementacje EVM muszą być zgodne ze specyfikacją opisaną w Yellowpaper Ethereum.

W ponad pięcioletniej historii Ethereum, EVM przeszło kilka gruntownych weryfikacji, w ciągu tego czasu znajdziemy również kilka implementacji EVM w różnych językach programowania.

Wszyscy klienci Ethereum posiadają implementacje EVM. Dodatkowo jest tu kilka samodzielnych implementacji, włącznie z:

Dalsza lektura

Czy ten artykuł był pomocny?