Ethereum virtuālā mašīna (EVM)
The Ethereum virtuālā mašīna (EVM) ir decentralizēta virtuāla vide, kas konsekventi un droši izpilda kodu visos Ethereum mezglos. Mezgli darbina EVM, lai izpildītu viedos līgumus, izmantojot “gāze"lai izmērītu darbībai nepieciešamo skaitļošanas piepūli, nodrošinot efektīvu resursu sadali un tīkla drošību."
Priekšzināšanas
Lai izprastu EVM, ir nepieciešamas pamatzināšanas par vispārpieņemto datorzinātnes terminoloģiju, piemēram, baiti, atmiņa un steks. Ir arī noderīgi pārzināt kriptogrāfiju un blokķēdes koncepcijas, piemēram, jaucējfunkcijas un Merkle kokus.
No virsgrāmatas līdz valsts mašīnai
Tādas blokķēdes kā Bitcoin bieži tiek raksturotas kā "izkliedētās virsgrāmatas", kas uztur darbību reģistru, ievērojot noteikumu kopumu, kas regulē izmaiņas. Piemēram, Bitcoin adrese nevar iztērēt vairāk Bitcoin, nekā tā ir saņēmusi. Šie noteikumi ir visu Bitcoin un daudzu citu blokķēžu darījumu pamatā.
Lai gan Ethereum ir sava vietējā kriptovalūta (ēteris) ar līdzīgiem noteikumiem, tā atbalsta arī jaudīgāku funkciju: gudri līgumiLai to saprastu, Ethereum labāk var raksturot kā izkliedētu stāvokļu mašīnu. Ethereum stāvoklis ir liela datu struktūra, kurā ir ne tikai visi konti un atlikumi, bet arī mašīnas stāvoklis, kas var mainīties no bloka uz bloku saskaņā ar iepriekš definētiem noteikumiem, izpildot patvaļīgu mašīnas kodu. EVM definē noteikumus šīm stāvokļu izmaiņām.
Kāda ir atšķirība starp EVM un Ethereum?
Ethereum ir platforma, kas ļauj cilvēkiem veidot un palaist lietojumprogrammas decentralizētā datoru tīklā. Tai ir sava digitālā valūta, ko sauc par Ether (ETH), ko izmanto, lai norēķinātos par lietām tīklā. Iedomājieties Ethereum kā milzīgu, koplietojamu datoru, ko ikviens var izmantot, lai veidotu un palaistu savas lietotnes bez centrālās iestādes kontroles.
The Ethereum virtuālā mašīna ir kā dzinējs šajā milzīgajā datorā. Tas nodrošina, ka visas lietojumprogrammas un viedie līgumi (automatizētas vienošanās) darbojas vienādi katrā tīkla datorā. Lai viss būtu godīgi un efektīvi, EVM izmanto sistēmu, ko sauc par “gāzi”, lai izmērītu, cik daudz skaitļošanas jaudas ir nepieciešams katram uzdevumam, nodrošinot, ka resursi netiek izšķērdēti.
Vienkārši sakot, Ethereum ir visa platforma, kas ļauj veidot un izmantot decentralizētas lietotnes un līgumus, savukārt Ethereum virtuālā mašīna ir daļa no platformas, kas darbina šīs lietotnes un līgumus, nodrošinot, ka viss darbojas nevainojami un konsekventi visos tīkla datoros. Šī ir atšķirība starp EVM un Ethereum.
Ethereum stāvokļa pārejas funkcija
EVM uzvedas kā matemātiska funkcija: ņemot vērā ievadi, tā ģenerē deterministisku izvadi. To var formāli aprakstīt kā stāvokļa pārejas funkciju:
\[Y(S, T) = S' \]
Ņemot vērā vecu derīgu stāvokli \(S \) un jaunu derīgu transakciju kopu \(T \), Ethereum stāvokļa pārejas funkcija \(Y(S, T) \) ģenerē jaunu derīgu izejas stāvokli \(S' \).
Valsts
Ethereum vidē stāvoklis ir milzīga datu struktūra, ko sauc par modificētu Merkle Patricia Trie, kas saista visus kontus ar hešiem un samazina tos līdz vienam saknes hešam, kas tiek glabāts blokķēdē.
Darījumi
Transakcijas ir kriptogrāfiski parakstītas instrukcijas no kontiem, kas tiek iedalītas divos veidos: tās, kas izraisa ziņojumu izsaukumus, un tās, kas izraisa līguma izveidi. Līguma izveide ģenerē jaunu līguma kontu, kas satur kompilētu viedā līguma baitkodu. Kad cits konts veic ziņojuma izsaukumu šim līgumam, tas izpilda savu baitkodu.
EVM instrukcijas
EVM darbojas kā steka mašīna ar 1024 vienību dziļumu, katra 256 bitu vārda garumā, kas izvēlēta saderībai ar 256 bitu kriptogrāfiju (piemēram, Keccak-256 hešiem vai secp256k1 parakstiem). Izpildes laikā EVM uztur pārejošu atmiņu (vārdiem adresētu baitu masīvu), kas nesaglabājas starp darījumiem. Līgumiem ir Merkle Patricia krātuves trie (vārdiem adresējams vārdu masīvs), kas saistīts ar kontu un daļu no globālā stāvokļa.
Kompilētā viedā līguma baitkods tiek izpildīts kā Ethereum virtuālā mašīna opkodus, veicot standarta steka operācijas, piemēram, XOR, AND, ADD, SUB utt., un blokķēdei specifiskas operācijas, piemēram, ADDRESS, BALANCE un BLOCKHASH.
EVM ieviešanas
Visām EVM implementācijām ir jāatbilst Ethereum Yellow Paper specifikācijām. Ethereum pastāvēšanas laikā EVM ir piedzīvojis vairākas pārskatīšanas, kā rezultātā ir izveidotas vairākas implementācijas dažādās programmēšanas valodās, tostarp:
- Py-EVM (Python)
- evmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- apgriezieni (rūsa)
Šīs ieviešanas nodrošina, ka EVM saglabā konsekvenci un drošību dažādās platformās.