Ethereum virtualna mašina (EVM): krvotok Ethereuma

Ethereum virtualna mašina (EVM): krvotok Ethereuma

Ethereum virtualna mašina, ili skraćeno EVM, potpuno je redefinisala blokčejn. EVM je, slobodno se može reći, udahnuo kreativnost i adaptibilnost ovoj tehnologiji i time širom otvorio vrata njenog potencijala.

Šta je Ethereum Virtuelna Mašina i kako funkcioniše?

Najčešći ilustrativan prikaz koji ćete naći na internetu je da EVM ključna komponenta Ethereumovog lanca i predstavlja decentralizovan računar koji služi za bezbedno izvršavanje pametnih ugovora. Da dođemo do tehničkije i preciznije definicije, pogledajmo prvo VM deo EVM-a.

Ideja virtualne mašine je Java i .NET programerima već uveliko poznata. Reč je o međusloju za izvršavanje određenog tipa aplikacija koji olakšava razvoj za više platformi odjednom. Taj sloj zapravo apstrahuje sistem u kom se program izvršava, kreirajući pritom svoj virtualni podsistem koji potrebne funkcionalnosti prevodi na jezik eksternog sistema. Na taj način se dobija podela odgovornosti i olakšava razvoj: aplikativni deo jezika se razvija tako da se kompajlira na međukod za VM, dok se sistemski, infrastrukturni razvoj svodi na implementiranje virtualne mašine za svaki sistem u kom VM gostuje.

Pored lakše portabilnosti programa, ovaj sloj virtuelizacije pruža i bitan bezbednosni aspekat. Sandbox okruženje EVM-a osigurava da izvršavanje koda bude izolovano i sigurno, sprečavajući zlonameran kod da utiče na celu mrežu.

Konceptualno, EVM se može opisati kao skup pravila koje omogućavaju determinističko izvršavanje transakcija. Po tim unapred utvrđenim pravilima EVM interpretira svaku instrukciju kompajliranog Solidity koda (tzv. bajtkod) i menja stanje blokčejna.

Konkretnije, svaki Ethereum klijent (Geth, Nethermind, Erigon, ...), u skladu sa svojom internom arhitekturom i jezikom, implementira i program koji koristi tako što za svaki novi blok uzme trenutno stanje lanca i svaku transakciju kao ulaz tog programa, primeni pravila EVM-a i kao izlaznu vrednost dobije novo stanje lanca.

U praksi, EVM je jezgro koje jedan decentralizovan i osiguran zapisnik pretvara u Tjuring potpunu platformu za izvršavanje proizvoljnih programa.

Iako je EVM prvobitno dizajnirao Gavin Vud tokom svog mandata u Ethereumu, njegova važnost je vremenom prevazišla matičnu mrežu. Danas većina blokčejna teži da bude kompatibilna sa EVM-om, uglavnom zbog njenog rastućeg ekosistema programera i mogućnosti razvijanja decentralizovanih aplikacija.

Sledi kratak pregled najbitnijih osobenosti EVM-a.

Determinističko Izvršavanje

EVM osigurava determinističko izvršenje, što znači da će svaki čvor u Ethereum mreži proizvesti tačno isti rezultat kada izvršava transakciju ili pametni ugovor uz isti ulaz i isto početno stanje. Determinističko izvršenje je ključno za postizanje konsenzusa među svim čvorovima. To garantuje da će svi učesnici na mreži saglasno prihvatiti stanje blokčejna, poboljšavajući poverenje i pouzdanost.

Turing potpunost

Turing potpunost EVM-a znači da može izvršiti bilo koju računsku operaciju koja može biti izražena algoritamski. Ova karakteristika ga razlikuje od jednostavnijih, nesintetičkih blokčejna. Programeri imaju značajnu fleksibilnost pri pisanju pametnih ugovora za EVM. Oni mogu implementirati složene algoritme, kreirati decentralizovane aplikacije sa složenom logikom i dizajnirati inovativna rešenja. Turing potpunost nosi i određene izazove kao što je potencijal za beskonačne petlje. Naredna karakteristika blokčejna služi da taj izazov umanji.

Gas sistem

Da bi se osigurala efikasnu i pravedna alokaciju resursa, EVM koristi gas sistem. Gas predstavlja troškove komputacionih resursa potrebnih za izvršavanje transakcije ili pametnog ugovora. Svaka EVM operacija troši određenu količinu gasa, i korisnici moraju platiti za gas pri slanju transakcija. Cena gasa se određuje od strane korisnika, i rudari često prioritetno obrađuju transakcije sa višim cenama gasa. Gas sistem ima dve osnovne svrhe:

  • da spreči spam i zloupotrebu mreže čineći potrošnju resursa skupom
  • da podstakne rudare i čvorove da obrađuju transakcije nudeći im naknade za transakcije u gasu.

Izolovanost i sigurnost

EVM sprovodi izvršenje koda u sopstvenom sigurnom i izolovanom okruženju – sandboxu. Ova izolacija poboljšava sigurnost time što ograničava potencijalne ranjivosti unutar pojedinačnih ugovora. Čak i ako jedan ugovor ima grešku ili je kompromitovan, to ne utiče na celokupan integritet Ethereum mreže ili drugih ugovora.

Arhitektura EVM-a

EVM arhitektura se sastoji od sledećih komponenti:

Stack: Lista elemenata od 32 bajta koja se koristi za čuvanje inputa i outputa instrukcija pametnog ugovora.

Memorija: Privremeni podaci koji se koriste tokom izvršavanja ugovora

Storage: Trajna memorija pametnih ugovora.

EVM kod: Instrukcije pametnih ugovora smeštene u Storage-u s kojima mogu interagovati drugi pametni ugovori.

Programski brojač (PC): Pokazivač koji upućuje na narednu opcode instrukciju koju EVM treba da se izvrši.

Gas: Svako izvršavanje opkoda zahteva unapred određenu naknadu izraženu u određenoj količini gasa.

U narednom tekstu posvetićemo više pažnje narednoj evolutivnoj stanici EVM-a koja kombinuje zero-knowledge tehnologiju.


Kvalitetu teksta je značajno doprineo Nikola Vuković, Frontend/UX Lead.