Vad är en Ethereum Virtual Machine (EVM) och hur fungerar den?

Ether (ETH), som är den näst största kryptovalutan när det gäller marknadskapitalisering, är populär bland kryptovalutainvesterare på grund av dess inhemska ETH-token. Men dess inhemska programmeringsspråk Solidity och Ethereum Virtual Machine (EVM) är avgörande för den beundran som den får från utvecklargemenskapen. Faktum är att Ethereum-blockkedjan fortsätter att attrahera utvecklare av decentraliserade tillämpningar (DApp) på grund av dess flexibilitet, det stora utbudet av tillgängliga utvecklarverktyg och plattformens stora användarbas.

Som utgör kärnan i blockkedjans arkitektur är EVM det program som exekverar dess applikationskod eller smarta kontrakt, som de kallas, och som tillhandahåller en körtidsmiljö för dem som körs ovanpå Ethereums nätverk. Dessutom är EVM Turing-komplett och kan därmed köra alla program som är kodade i vilket programmeringsspråk som helst, vilket gör det möjligt för utvecklare att enkelt skapa anpassade smarta kontrakt och DApps för det spirande Web3-utrymmet. 

Förutom dessa viktiga funktioner har EVM tillgång till alla noder i nätverket, hanterar utförandet av smarta kontrakt och hanterar effektivt alla transaktioner på Ethereums blockkedja, vilket gör den till en av de mest kraftfulla virtuella maskinerna som finns idag.

Vad är Ethereum Virtual Machine (EVM) och hur fungerar den?

Etthereumnätverket, som konceptualiserades 2013 av programmeraren Vitalik Buterin, har sin fenomenala framgång som den föredragna blockkedjan för DApp-utvecklare att tacka för Ethereum Virtual Machine (EVM) som utformades av Gavin Wood under hans tid på Ethereum. EVM, som är skriven i C++ och använder kompilatorn LLVM Project, är en speciell tillståndsmaskin som fungerar kontinuerligt och vars oföränderliga operationer bestämmer tillståndet för varje block i Ethereums blockkedja. 

EVM reglerar inte bara vad noder kan eller inte kan göra med den distribuerade huvudbok som upprätthålls av Ethereums blockkedja, utan definierar också de specifika reglerna för att ändra tillstånd från block till block. Den sistnämnda funktionaliteten är det som möjliggör den funktionalitet för smarta kontrakt som Ethereum har blivit känt för.

För att förstå vad en Ethereum Virtual Machine gör måste man titta på var och en av de olika funktionerna som den tjänar för att se till att Ethereum-nätverket fungerar smidigt. För varje input som den tar emot producerar EVM en output som är deterministisk till sin natur och följer en matematisk funktion i den enklaste bemärkelsen. 

Den fungerar som en stackmaskin som skjuter övergående värden till och från en pushdown-stack, och EVM har ett djup på 1024 objekt, där vart och ett av dem är ett 256-bitars ord. Den upprätthåller också ett temporärt minne i form av en byte array, som ändras mellan två transaktioner på Ethereums blockkedja. Koder för smarta kontrakt som har kompilerats utförs av EVM i form av en samling av 140 standardkoder, medan andra blockkedjespecifika stackoperationer också genomförs av den.

Schematics of an Ethereum Virtual Machine

Därmed har EVM ett maskintillstånd som är flyktigt till sin natur under behandlingen av en transaktion och ett globalt tillstånd eller världstillstånd som innehåller information om de olika konton som upprätthålls på Ethereums blockchain. Alla åtgärder styrs av EVM-koden, som i sig själv har genomgått flera iterationer sedan lanseringen av Ethereum-nätverket 2015, vilket har lett till att det finns olika implementeringar av EVM som för närvarande används.

I själva verket är EVM ansvarig för att upprätthålla en abstraktionsnivå mellan tusentals Ethereum-noder och den exekverande koden, och fungerar som en funktion som levererar konsekventa resultat utan att avslöja många detaljer för klienter eller noder.

Vad är syftet med Ethereums virtuella maskin (EVM)?

EVM har på ett tillförlitligt sätt drivit alla tillämpningar som körs på Ethereumnätverket utan att några större driftstopp rapporterats. För utvecklare fungerar EVM som det övergripande programmet som kör mindre exekverbara program som är kända som smarta kontrakt i Ethereum, samtidigt som den ger dem friheten att skriva dessa smarta kontrakt i en mängd olika programmeringsspråk, bland annat Solidity, Vyper, Python och Yul.

På grund av denna flexibilitet som erbjuds av EVM har Ethereum-blockkedjan gett upphov till tusentals DApps inom decentraliserad finans (DeFi) och icke-fungibla token (NFT). Var och en av dessa DApps och de smarta kontrakt som de består av omvandlas till bytekod som matas in i EVM och distribueras bland alla noder i Ethereum-nätverket. När ett smart kontrakt används ansvarar EVM för att kommunicera med alla noder och genomföra tillståndsändringar när konsensus har uppnåtts.

Det kan sägas att EVM är insatt i varje Ethereum-nod för att utföra smarta kontrakt med hjälp av bytecode i stället för det grundläggande programmeringsspråket, vilket isolerar den fysiska värddatorn från den maskinkod som Ethereum körs på.

Fördelar med Ethereums virtuella maskin (EVM)

På grund av hur EVM fungerar kan utvecklare utföra kod utan att oroa sig för dess inverkan på resten av nätverket eller möjligheten att den kan leka med data eller personliga filer som finns på någon av nodens datorer. 

Och dessutom kan de köra komplexa smarta kontrakt på olika datormiljöer med distribuerad konsensus. Detta säkerställer att felet på en enskild nod inte har någon negativ inverkan på driften av DAappen eller det smarta kontraktet, eftersom EVM-koden förblir densamma i alla noder. Eftersom kontodata upprätthålls på global nivå i EVM finner utvecklare den dessutom perfekt för att skriva anpassad kod för smarta kontrakt och skapa olika DApps som kan få tillgång till denna globala datamängd och producera tillförlitliga resultat. 

Det heliga resultatet är det som gör EVM, i synnerhet, och Ethereum-blockkedjan i allmänhet väl lämpad för en hållbar expansion av DApps och smarta kontrakt i Ethereums ekosystem. Lägg därtill biblioteket med standardkoder som finns tillgängliga för utvecklare att välja mellan, ett ökande antal EVM-kompatibla lager-2-blockkedjor och ett stort antal möjliga potentiella EVM-användningsfall, och det är lätt att se varför EVM är den föredragna plattformen för Web3-utveckling.

Nackdelar med Ethereum Virtual Machine (EVM)

Trots de många fördelar som EVM erbjuder finns det vissa nackdelar som måste beaktas av utvecklare och entreprenörer som bygger på Ethereum. Den viktigaste av dessa är de höga transaktionsavgifterna eller gaskostnader som är förknippade med att köra ett smart kontrakt på Ethereums nätverk. 

Dessa avgifter betalas i ETH och varierar beroende på kontraktets komplexitet och nätverksöverbelastningen vid tidpunkten för utförandet, vilket gör det nödvändigt för utvecklare och entreprenörer att prissätta sina tjänster i enlighet med detta. Eftersom Solidity är det mest föredragna språket för kodning på EVM innebär det dessutom att utvecklare måste ha tillräcklig erfarenhet av det och besitta ett minimum av teknisk expertis för att skapa effektiva smarta kontrakt genom att använda det. 

Det sistnämnda är viktigt eftersom alla ytterligare beräkningskrav leder till högre gaskostnader och i slutändan visar sig vara till nackdel för projektets framgång. Om utvecklarna väljer att koda med andra språk måste de vara försiktiga med att lösa eventuella inneboende upprepningar i koden eftersom EVM kommer att fortsätta att kompilera dem ändå. Uppgradering av smarta kontrakt är möjlig i ett senare skede, men det kommer med säkerhetsrisker i samband med att man skapar ett mellanliggande smart kontrakt som hänvisar till adressen för det ursprungliga smarta kontraktet.

Framtiden för EVM

Trots de revolutionära förändringar som EVM medfört för blockkedjeekosystemet, förbättras denna teknik för att läsa och exekvera kod av ett antal blockkedjeprojekt. 

Med tanke på att driftskompatibilitet mellan kedjor är den viktigaste aspekten för utvecklare har många EVM-kompatibla blockkedjor dykt upp, där de flesta erbjuder lägre gas och snabbare transaktionshastigheter än Ethereum-protokollet. Som ett resultat av detta kan dessa blockkedjor nu interagera sömlöst med Ethereum-användare och underlättar fondöverföringar till sina egna nätverk med hjälp av blockkedjebryggor.

Men eftersom Ethereum-protokollet framgångsrikt genomför sammanslagningen i september 2022 är nästa mål att övergå från EVM till Ethereum WebAssembly (eWASM). EWASM, som är utformad för att vara mycket modulär och plattformsoberoende, framhålls som nästa spelförändring för Ethereum-protokollet och skulle kunna motivera andra blockkedjor att också använda denna körtidsmiljö för smarta kontrakt. Huruvida eWASM kommer att ersätta EVM som den mest betrodda mekanismen för smarta kontrakt är dock en fråga som endast tiden kan ge svar på.