Ethereum virtualni stroj (EVM)

The Virtualni stroj Ethereum (EVM) je decentralizirano virtualno okruženje koje dosljedno i sigurno izvršava kod na svim Ethereum čvorovima. Čvorovi pokreću EVM za izvršavanje pametnih ugovora koristeći „plin"za mjerenje računalnog napora potrebnog za operacije, osiguravajući učinkovitu alokaciju resursa i sigurnost mreže."

Preduvjeti

Osnovno poznavanje uobičajene računalne terminologije, kao što su bajtovi, memorija i stogovi, potrebno je za razumijevanje EVM-a. Također je korisno poznavanje kriptografije i koncepata blockchaina poput hash funkcija i Merkleovih stabala.

Od glavne knjige do stroja stanja

Blockchaini poput Bitcoina često se opisuju kao "distribuirani ledgeri", koji vode evidenciju aktivnosti koja se pridržava skupa pravila koja reguliraju izmjene. Na primjer, Bitcoin adresa ne može potrošiti više Bitcoina nego što je primila. Ta pravila podupiru sve transakcije na Bitcoinu i mnogim drugim blockchainovima.

Iako Ethereum ima svoju vlastitu izvornu kriptovalutu (Ether) sa sličnim pravilima, podržava i moćniju značajku: pametni ugovoriDa bismo to razumjeli, Ethereum se bolje opisuje kao distribuirani stroj stanja. Stanje Ethereuma je velika podatkovna struktura koja sadrži ne samo sve račune i stanja, već i stanje stroja koje se može mijenjati od bloka do bloka prema unaprijed definiranim pravilima, izvršavajući proizvoljni strojni kod. EVM definira pravila za te promjene stanja.

Koja je razlika između EVM-a i Ethereuma?

Ethereum je platforma koja omogućuje ljudima stvaranje i pokretanje aplikacija na decentraliziranoj mreži računala. Ima vlastitu digitalnu valutu pod nazivom Ether (ETH), koja se koristi za plaćanje stvari na mreži. Zamislite Ethereum kao divovsko, dijeljeno računalo koje svatko može koristiti za izgradnju i pokretanje svojih aplikacija bez središnjeg tijela koje ga kontrolira.

The Virtualni stroj Ethereum je poput motora unutar ovog divovskog računala. Osigurava da sve aplikacije i pametni ugovori (automatizirani sporazumi) rade na isti način na svakom računalu u mreži. Kako bi stvari bile poštene i učinkovite, EVM koristi sustav nazvan „plin“ za mjerenje koliko je računalne snage potrebno za svaki zadatak, osiguravajući da se resursi ne troše uzalud.

Jednostavno rečeno, Ethereum je cijela platforma koja vam omogućuje izradu i korištenje decentraliziranih aplikacija i ugovora, dok je Virtualni stroj Ethereum je dio platforme koja pokreće te aplikacije i ugovore, osiguravajući da sve radi glatko i dosljedno na svim računalima u mreži. To je razlika između EVM-a i Ethereuma.

Funkcija prijelaza stanja Ethereuma

EVM se ponaša kao matematička funkcija: zadanim ulazom proizvodi deterministički izlaz. To se formalno može opisati kao funkcija prijelaza stanja:

\[ Y(S, T) = S' \]

S obzirom na staro valjano stanje (S) i novi skup valjanih transakcija (T), funkcija prijelaza stanja Ethereuma (Y(S, T)) proizvodi novo valjano izlazno stanje (S').

Država

U Ethereumu, stanje je ogromna struktura podataka nazvana modificirani Merkle Patricia Trie, koja povezuje sve račune hashovima i svodi ih na jedan korijenski hash pohranjen na blockchainu.

Transakcije

Transakcije su kriptografski potpisane instrukcije s računa, klasificirane u dvije vrste: one koje rezultiraju pozivima poruka i one koje rezultiraju stvaranjem ugovora. Stvaranje ugovora generira novi ugovorni račun koji sadrži kompilirani bajtkod pametnog ugovora. Kada drugi račun uputi poziv poruke ovom ugovoru, izvršava svoj bajtkod.

EVM upute

EVM radi kao stog stroj s dubinom od 1024 stavke, svaka od 256-bitne riječi, odabrane zbog kompatibilnosti s 256-bitnom kriptografijom (kao što su Keccak-256 hashevi ili secp256k1 potpisi). Tijekom izvršavanja, EVM održava privremenu memoriju (niz bajtova adresiran riječima) koja se ne zadržava između transakcija. Ugovori imaju Merkle Patricia trie za pohranu (niz riječi adresiran riječima) povezan s računom i dijelom globalnog stanja.

Kompilirani bajtkod pametnog ugovora izvršava se kao Virtualni stroj Ethereum opkodovi, izvođenje standardnih stog operacija poput XOR, AND, ADD, SUB itd., te operacije specifične za blockchain poput ADDRESS, BALANCE i BLOCKHASH.

Implementacije EVM-a

Sve EVM implementacije moraju se pridržavati specifikacija Ethereum Yellow Paper-a. Tijekom Ethereumove povijesti, EVM je prošao kroz nekoliko revizija, što je rezultiralo višestrukim implementacijama u raznim programskim jezicima, uključujući:

  • Py-EVM (Python)
  • evmone (C++)
  • ethereumjs-vm (JavaScript)
  • eEVM (C++)
  • revm (Rust)

Ove implementacije osiguravaju da EVM ostane konzistentan i siguran na različitim platformama.