Virtualni stroj Ethereum (EVM)

Naš Virtualni stroj Ethereum (EVM) je decentralizirano virtualno okolje, ki dosledno in varno izvaja kodo na vseh vozliščih Ethereuma. Vozlišča poganjajo EVM za izvajanje pametnih pogodb z uporabo »plin"za merjenje računalniškega napora, potrebnega za delovanje, zagotavljanje učinkovite dodelitve virov in varnosti omrežja."

Predpogoji

Za razumevanje EVM je potrebno osnovno poznavanje običajne računalniške terminologije, kot so bajti, pomnilnik in skladi. Koristno je tudi poznavanje kriptografije in konceptov veriženja blokov, kot so zgoščevalne funkcije in Merklejeva drevesa.

Od glavne knjige do stroja stanj

Verige blokov, kot je Bitcoin, so pogosto opisane kot »porazdeljene knjige«, ki vodijo evidenco dejavnosti, ki se drži niza pravil, ki urejajo spremembe. Na primer, naslov Bitcoin ne more porabiti več Bitcoinov, kot jih je prejel. Ta pravila so osnova za vse transakcije v Bitcoinu in mnogih drugih verigah blokov.

Čeprav ima Ethereum svojo domačo kriptovaluto (Ether) s podobnimi pravili, podpira tudi zmogljivejšo funkcijo: pametne pogodbeDa bi to razumeli, je Ethereum bolje opisati kot porazdeljeni stroj stanj. Stanje Ethereuma je velika podatkovna struktura, ki vsebuje ne le vse račune in stanja, temveč tudi stanje stroja, ki se lahko spreminja iz bloka v blok v skladu z vnaprej določenimi pravili in izvaja poljubno strojno kodo. EVM določa pravila za te spremembe stanj.

Kakšna je razlika med EVM in Ethereumom?

Ethereum je platforma, ki ljudem omogoča ustvarjanje in zagon aplikacij v decentraliziranem omrežju računalnikov. Ima svojo digitalno valuto, imenovano Ether (ETH), ki se uporablja za plačevanje stvari v omrežju. Predstavljajte si Ethereum kot velikanski, skupni računalnik, ki ga lahko vsi uporabljajo za gradnjo in zagon svojih aplikacij, ne da bi ga nadzoroval centralni organ.

Naš Virtualni stroj Ethereum je kot motor znotraj tega velikanskega računalnika. Zagotavlja, da vse aplikacije in pametne pogodbe (avtomatizirani sporazumi) delujejo na enak način na vsakem računalniku v omrežju. Da bi stvari ostale poštene in učinkovite, EVM uporablja sistem, imenovan »plin«, za merjenje, koliko računalniške moči je potrebne za vsako nalogo, s čimer zagotavlja, da se viri ne zapravljajo.

Preprosto povedano, Ethereum je celotna platforma, ki vam omogoča gradnjo in uporabo decentraliziranih aplikacij in pogodb, medtem ko ... Virtualni stroj Ethereum je del platforme, ki izvaja te aplikacije in pogodbe ter zagotavlja, da vse deluje gladko in dosledno v vseh računalnikih v omrežju. To je razlika med EVM in Ethereumom.

Funkcija prehoda stanja Ethereuma

EVM se obnaša kot matematična funkcija: glede na vhod ustvari determinističen izhod. To lahko formalno opišemo kot funkcijo prehoda stanja:

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

Glede na staro veljavno stanje (S) in nov niz veljavnih transakcij (T), funkcija prehoda stanja Ethereuma (Y(S, T)) ustvari novo veljavno izhodno stanje (S').

Država

V Ethereumu je stanje ogromna podatkovna struktura, imenovana modificirana Merkle Patricia Trie, ki povezuje vse račune s hash vrednostmi in jih reducira na eno samo korensko hash vrednost, shranjeno v verigi blokov.

Transakcije

Transakcije so kriptografsko podpisana navodila iz računov, razdeljena v dve vrsti: tista, ki povzročijo klice sporočil, in tista, ki povzročijo ustvarjanje pogodb. Ustvarjanje pogodbe ustvari nov pogodbeni račun, ki vsebuje prevedeno bajtno kodo pametne pogodbe. Ko drug račun izvede klic sporočila tej pogodbi, izvede svojo bajtno kodo.

Navodila za EVM

EVM deluje kot skladovni stroj z globino 1024 elementov, vsak 256-bitna beseda, izbrana zaradi združljivosti z 256-bitno kriptografijo (kot so zgoščevalne vrednosti Keccak-256 ali podpisi secp256k1). Med izvajanjem EVM vzdržuje prehodni pomnilnik (bajtno polje, naslovljeno z besedami), ki se ne ohrani med transakcijami. Pogodbe imajo shranjevalno verigo Merkle Patricia (besedno naslovljivo polje besed), povezano z računom in delom globalnega stanja.

Prevedena bajtna koda pametne pogodbe se izvede kot Virtualni stroj Ethereum opcode, izvajanje standardnih operacij sklada, kot so XOR, AND, ADD, SUB itd., in operacije, specifične za veriženje blokov, kot so ADDRESS, BALANCE in BLOCKHASH.

Implementacije EVM

Vse implementacije EVM morajo biti v skladu s specifikacijami Ethereum Yellow Paper. Skozi zgodovino Ethereuma je EVM doživel več revizij, kar je povzročilo več implementacij v različnih programskih jezikih, vključno z:

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

Te implementacije zagotavljajo, da EVM ostane dosleden in varen na različnih platformah.