Ethereum virtuali mašina (EVM)

Geriausios „Ethereum“ virtualioji mašina (EVM) yra decentralizuota virtuali aplinka, kuri nuosekliai ir saugiai vykdo kodą visuose Ethereum mazguose. Mazgai vykdo EVM, kad vykdytų išmaniąsias sutartis naudodami „dujos„matuoti operacijoms reikalingas skaičiavimo pastangas, užtikrinant efektyvų išteklių paskirstymą ir tinklo saugumą.“

Būtinos sąlygos

Norint suprasti EVM, būtina mokėti įprastas kompiuterių mokslo terminologijas, tokias kaip baitai, atmintis ir stekai. Taip pat naudinga būti susipažinusiam su kriptografija ir blokų grandinės sąvokomis, tokiomis kaip maišos funkcijos ir Merkle medžiai.

Nuo didžiosios knygos iki valstybės mašinos

Tokios blokų grandinės kaip „Bitcoin“ dažnai apibūdinamos kaip „paskirstytosios operacijų knygos“, kuriose saugomi veiklos įrašai, laikantis taisyklių, reglamentuojančių pakeitimus. Pavyzdžiui, „Bitcoin“ adresas negali išleisti daugiau „Bitcoin“, nei gavo. Šios taisyklės yra visų „Bitcoin“ ir daugelio kitų blokų grandinių operacijų pagrindas.

Nors „Ethereum“ turi savo gimtąją kriptovaliutą („Ether“) su panašiomis taisyklėmis, ji taip pat palaiko galingesnę funkciją: protingos sutartysNorint tai suprasti, „Ethereum“ geriau apibūdinama kaip paskirstyta būsenų mašina. „Ethereum“ būsena yra didelė duomenų struktūra, kurioje saugomos ne tik visos sąskaitos ir likučiai, bet ir mašinos būsena, kuri gali keistis nuo bloko iki bloko pagal iš anksto nustatytas taisykles, vykdant savavališką mašininį kodą. EVM apibrėžia šių būsenų pokyčių taisykles.

Kuo skiriasi EVM ir Ethereum?

Ethereum yra platforma, leidžianti žmonėms kurti ir paleisti programas decentralizuotame kompiuterių tinkle. Ji turi savo skaitmeninę valiutą, vadinamą eteriu (ETH), kuri naudojama atsiskaityti už daiktus tinkle. Įsivaizduokite Ethereum kaip milžinišką, bendrą kompiuterį, kurį visi gali naudoti kurdami ir paleisdami savo programas be centrinės institucijos, kuri jį kontroliuotų.

Geriausios „Ethereum“ virtualioji mašina yra tarsi variklis šio milžiniško kompiuterio viduje. Jis užtikrina, kad visos programos ir išmaniosios sutartys (automatizuotos sutartys) veiktų vienodai kiekviename tinklo kompiuteryje. Siekiant užtikrinti sąžiningumą ir efektyvumą, EVM naudoja sistemą, vadinamą „dujomis“, kad matuotų, kiek skaičiavimo galios reikia kiekvienai užduočiai atlikti, užtikrindamas, kad ištekliai nebūtų švaistomi.

Paprastai tariant, „Ethereum“ yra visa platforma, leidžianti kurti ir naudoti decentralizuotas programas ir sutartis, o „Ethereum“ virtualioji mašina yra platformos, kurioje veikia šios programėlės ir sutartys, dalis, užtikrinanti, kad viskas veiktų sklandžiai ir nuosekliai visuose tinklo kompiuteriuose. Tuo skiriasi EVM ir Ethereum.

Ethereum būsenos perėjimo funkcija

EVM elgiasi kaip matematinė funkcija: gavus įvestį, ji sukuria deterministinį išvestį. Formaliai tai galima apibūdinti kaip būsenos perėjimo funkciją:

[Y(S, T) = S']

Turint seną galiojančią būseną \(S \) ir naują galiojančių transakcijų rinkinį \(T \), Ethereum būsenos perėjimo funkcija \(Y(S, T) \) sukuria naują galiojančią išvesties būseną \(S' \).

Valstybės

„Ethereum“ sistemoje būsena yra milžiniška duomenų struktūra, vadinama modifikuotu „Merkle Patricia Trie“, kuri susieja visas paskyras maišos kodais ir supaprastina jas iki vienos šakninės maišos kodai, saugomos blokų grandinėje.

Sandoriai

Operacijos yra kriptografiškai pasirašytos instrukcijos iš paskyrų, skirstomos į du tipus: tas, kurios sukelia pranešimų iškvietimus, ir tas, kurios sukelia sutarties sukūrimą. Sukūrus sutartį, sukuriama nauja sutarties paskyra, kurioje yra sukompiliuotas išmaniosios sutarties baitinis kodas. Kai kita paskyra kreipiasi į šią sutartį, ji vykdo savo baitinį kodą.

EVM instrukcijos

EVM veikia kaip steko mašina, kurios gylis yra 1024 elementai, kiekvienas po 256 bitų žodį, parinktas atsižvelgiant į suderinamumą su 256 bitų kriptografija (pvz., „Keccak-256“ maišos kodais arba „secp256k1“ parašais). Vykdymo metu EVM palaiko laikinąją atmintį (žodžiais adresuojamą baitų masyvą), kuri neišsaugoma tarp operacijų. Sutartys turi „Merkle Patricia“ saugojimo trie kodą (žodžiais adresuojamą žodžių masyvą), susietą su paskyra ir dalimi globalios būsenos.

Sukompiliuotas išmaniosios sutarties baitkodas vykdomas kaip „Ethereum“ virtualioji mašina operacijų kodus, atlikdami standartines steko operacijas, tokias kaip XOR, AND, ADD, SUB ir kt., bei blokų grandinei būdingas operacijas, tokias kaip ADDRESS, BALANCE ir BLOCKHASH.

EVM diegimas

Visos EVM implementacijos turi atitikti „Ethereum“ geltonosios knygos specifikacijas. Per „Ethereum“ istoriją EVM buvo kelis kartus atnaujintas, todėl buvo įdiegta daug įvairių programavimo kalbų, įskaitant:

  • Py-EVM (Python)
  • evmone (C++)
  • ethereumjs-vm (JavaScript)
  • eEVM (C++)
  • apsukų (rūdžių)

Šie diegimai užtikrina, kad EVM išliktų nuoseklus ir saugus skirtingose ​​platformose.