Ethereum-virtuaalikone (EVM)

Ethereum-virtuaalikone (EVM) on hajautettu virtuaaliympäristö, joka suorittaa koodia johdonmukaisesti ja turvallisesti kaikissa Ethereum-solmuissa. Solmut käyttävät EVM:ää älysopimusten suorittamiseen käyttämällä "kaasu”mitata toimintojen vaatimaa laskentatehoa, varmistaa tehokas resurssien kohdentaminen ja verkon turvallisuus.”

Edellytykset

Tietojenkäsittelytieteen yleisten termien, kuten tavut, muisti ja pinot, ymmärtäminen on välttämätöntä EVM:n ymmärtämiseksi. On myös hyödyllistä olla perehtynyt kryptografiaan ja lohkoketjun käsitteisiin, kuten hajautusfunktioihin ja Merkle-puihin.

Kirjanpidosta tilakoneeksi

Bitcoinin kaltaisia ​​lohkoketjuja kuvataan usein "hajautetuiksi tilikirjoiksi", jotka ylläpitävät tapahtumarekisteriä, joka noudattaa muutoksia koskevia sääntöjä. Esimerkiksi Bitcoin-osoite ei voi käyttää enempää Bitcoinia kuin se on vastaanottanut. Nämä säännöt ovat kaikkien Bitcoinin ja monien muiden lohkoketjujen tapahtumien perusta.

Vaikka Ethereumilla on oma natiivi kryptovaluuttansa (Ether) samankaltaisilla säännöillä, se tukee myös tehokkaampaa ominaisuutta: älykkäät sopimuksetTämän ymmärtämiseksi Ethereumia voidaan paremmin kuvailla hajautetuksi tilakoneeksi. Ethereumin tila on suuri tietorakenne, joka sisältää paitsi kaikki tilit ja saldot, myös koneen tilan, joka voi muuttua lohkosta toiseen ennalta määritettyjen sääntöjen mukaisesti suorittaen mielivaltaista konekoodia. EVM määrittelee säännöt näille tilamuutoksille.

Mitä eroa on EVM:llä ja Ethereumilla?

Ethereum on alusta, jonka avulla ihmiset voivat luoda ja suorittaa sovelluksia hajautetussa tietokoneverkossa. Sillä on oma digitaalinen valuuttansa nimeltä Ether (ETH), jota käytetään maksamiseen verkossa. Ajattele Ethereumia jättimäisenä, jaettuna tietokoneena, jota kaikki voivat käyttää sovellustensa rakentamiseen ja suorittamiseen ilman keskitettyä tahoa, joka valvoo sitä.

Ethereum-virtuaalikone on kuin moottori tämän jättimäisen tietokoneen sisällä. Se varmistaa, että kaikki sovellukset ja älysopimukset (automatisoidut sopimukset) toimivat samalla tavalla jokaisella verkon tietokoneella. Jotta asiat pysyisivät oikeudenmukaisina ja tehokkaina, EVM käyttää "gas"-nimistä järjestelmää mittaamaan, kuinka paljon laskentatehoa kukin tehtävä tarvitsee, varmistaen, ettei resursseja mene hukkaan.

Yksinkertaisesti sanottuna Ethereum on koko alusta, jonka avulla voit rakentaa ja käyttää hajautettuja sovelluksia ja sopimuksia, kun taas Ethereum-virtuaalikone on osa alustaa, joka suorittaa näitä sovelluksia ja sopimuksia varmistaen, että kaikki toimii sujuvasti ja johdonmukaisesti kaikissa verkon tietokoneissa. Tässä on EVM:n ja Ethereumin välinen ero.

Ethereumin tilasiirtymäfunktio

EVM käyttäytyy kuin matemaattinen funktio: annettuna syöte, se tuottaa deterministisen tulosteen. Tätä voidaan muodollisesti kuvata tilasiirtymäfunktiona:

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

Kun annetaan vanha validi tila \(S \) ja uusi joukko valideja tapahtumia \(T \), Ethereumin tilasiirtymäfunktio \(Y(S, T) \) tuottaa uuden validin lähtötilan \(S' \).

Osavaltio

Ethereumissa tila on valtava tietorakenne, jota kutsutaan muokatuksi Merkle Patricia Trieksi. Se linkittää kaikki tilit tiivisteiden avulla ja pelkistää ne yhdeksi juuritiivisteeksi, joka tallennetaan lohkoketjuun.

Liiketoimet

Transaktiot ovat tileiltä tulevia kryptografisesti allekirjoitettuja ohjeita, jotka luokitellaan kahteen tyyppiin: viestikutsuihin johtavat ja sopimuksen luomiseen johtavat. Sopimuksen luonti luo uuden sopimustilin, joka sisältää käännetyn älysopimuksen tavukoodin. Kun toinen tili tekee viestikutsun tälle sopimukselle, se suorittaa omat tavukoodinsa.

EVM-ohjeet

EVM toimii pinokoneena, jonka syvyys on 1024 alkiota, joista jokainen on 256-bittinen sana. Tämä on valittu yhteensopivuuden vuoksi 256-bittisen kryptografian (kuten Keccak-256-hajautusten tai secp256k1-allekirjoitusten) kanssa. Suorituksen aikana EVM ylläpitää transienttimuistia (sanakohtainen tavutaulukko), joka ei säily tapahtumien välillä. Sopimuksilla on Merkle Patricia -tallennustrie (sanakohtainen sanataulukko), joka on liitetty tiliin ja osaan globaalista tilasta.

Käännetty älysopimuksen tavukoodi suoritetaan seuraavasti Ethereum-virtuaalikone operaatiokoodeja, suorittaen standardipinooperaatioita, kuten XOR, AND, ADD, SUB jne., sekä lohkoketjukohtaisia ​​​​operaatioita, kuten ADDRESS, BALANCE ja BLOCKHASH.

EVM-toteutukset

Kaikkien EVM-toteutusten on noudatettava Ethereumin keltaisen kirjan spesifikaatioita. Ethereumin historian aikana EVM:ään on tehty useita tarkistuksia, joiden tuloksena on julkaistu useita toteutuksia eri ohjelmointikielillä, mukaan lukien:

  • Py-EVM (Python)
  • evmone (C++)
  • ethereumjs-vm (JavaScript)
  • eEVM (C++)
  • kierrosluku (ruoste)

Nämä toteutukset varmistavat, että EVM pysyy yhdenmukaisena ja turvallisena eri alustoilla.