Ethereum virtual machine (EVM) uitgelegd

Wat is de Ethereum Virtual Machine (EVM)?
De Ethereum Virtual Machine (EVM) is een gedecentraliseerd systeem waarmee smart contracts en transacties op de blockchain van Ethereum worden uitgevoerd. De EVM is een virtuele machine, wat betekent dat het een computersysteem is dat niet tastbaar is. Er staat dus niet ergens een computer in een kantoor, maar de EVM wordt digitaal aangestuurd door duizenden nodes (validators) over de hele wereld. Iedereen kan deelnemen en het netwerk onderhouden als node. Dit maakt het decentraal, betrouwbaar en veilig. De Ethereum Virtual Machine is cruciaal voor het netwerk, omdat de EVM het mogelijk maakt om nieuwe gedecentraliseerde applicaties (dApps) te bouwen.
Het handige aan Ethereum's virtuele machine is dat het een Turing-volledige machine is. Een Turingmachine is een theoretisch rekenmodel waarin wordt beschreven wat een computer of algoritme kan berekenen. Een voordeel ten opzichte van een computer is dat een Turingmachine oneindig geheugen heeft en dat iedere computer een Turingmachine kan lezen, waardoor de Ethereum Virtual Machine in principe door iedere computer gebruikt kan worden.
Korte samenvatting
- De Ethereum Virtual Machine (EVM) voert alle smart contracts en transacties uit op het Ethereum-netwerk.
- EVM is een virtuele en gedecentraliseerde computer die door duizenden nodes wereldwijd wordt beheerd.
- Smart contracts worden geschreven in programmeertalen zoals Solidity en vervolgens vertaald naar bytecode, die de EVM begrijpt.
- Doordat EVM Turing-volledig is, kunnen ontwikkelaars er complexe en gedecentraliseerde applicaties mee bouwen (dApps).
- De EVM speelt een centrale rol in het bijhouden van de staat van het netwerk, zoals welke smart contracts bestaan en de resultaten van interacties met die contracts.
Hoe werkt de Ethereum Virtual Machine (EVM)?
De Ethereum Virtual Machine (EVM) werkt door middel van het omzetten van smart contracts naar bytecode. Dit is een computertaal die wordt begrepen door de EVM. Bytecode is een programmeertaal die door de meeste besturingssystemen wordt begrepen en is daardoor erg gebruiksvriendelijk. Hierdoor kunnen nodes over de hele wereld de inhoud van de smart contracts, die in eerste instantie met een moeilijkere programmeertaal zijn geschreven (namelijk Solidity) eenvoudig begrijpen. Alle smart contracts die met de EVM zijn gemaakt, worden opgeslagen op de Ethereum blockchain.
Zo werkt de bytecode: zodra een gebruiker wil communiceren met een smart contract, voert de gebruiker een transactie uit naar het adres van het smart contract. In de transactie is de bytecode verwerkt, samen met de functie die de gebruiker wil gebruiken. De EVM leest vervolgens de bytecode en voert de functie uit.
Alles wat er met de EVM gebeurt kost rekenkracht. Deze rekenkracht wordt geleverd door de nodes van het netwerk die Ethereum hebben ingezet (staking). Zij zorgen ervoor dat transacties worden uitgevoerd. Om misbruik van het netwerk te voorkomen betalen gebruikers gas fees. Dit zijn eigenlijk virtuele brandstofkosten die worden betaald om een transactie uit te voeren. Gas fees worden betaald in Ether (ETH) en uitbetaald aan de validators die transacties verwerken. De hoogte van de gas fees hangt onder andere af van de complexiteit van de transactie. Het versturen van ETH is minder complex dan het creëren van een nieuw smart contract.
Onderhouden van Ethereum's database
Naast het uitvoeren van transacties en smart contracts heeft de Ethereum Virtual Machine nog een functie, namelijk het onderhouden van de database van het Ethereum-netwerk, ook wel het onderhouden van de opgeslagen gegevens (state) genoemd. In de state staat beschreven welke smart contracts er zijn, de verdeling van tokens onder alle ETH-wallets, en alle transacties. De state verandert continu, doordat iedere transactie wordt opgeslagen in de database door de EVM. Dit gebeurt in samenwerking met de nodes, die controleren of de aanpassingen kloppen.
Ethereum Virtual Machine als stack-based machine
Wanneer we dieper in de werking van de Ethereum Virtual Machine kijken, zien we dat de EVM functioneert als een stack-based machine. Dit betekent dat de EVM tijdens het uitvoeren van instructies informatie tijdelijk opslaat op een stapel (de stack).
Deze gegevens worden direct verwerkt tijdens het uitvoeren van de instructies en zijn bedoeld voor kortdurend gebruik. Daarnaast maakt de EVM gebruik van tijdelijk geheugen (memory) om extra gegevens tijdens de uitvoering te onthouden. Deze tijdelijke gegevens worden na afloop van de uitvoering weer verwijderd.
De resultaten van transacties en smart contract-interacties die blijvend zijn, zoals veranderingen in wallets, smart contracts en codes van smart contracts, worden vastgelegd in de permanente opslag van Ethereum. Deze opslag maakt deel uit van de blockchain, die door alle nodes wordt bijgehouden.
Waarom is de EVM belangrijk?
De Ethereum Virtual Machine is erg belangrijk voor de Ethereum blockchain, omdat deze ervoor zorgt dat er consensus tussen nodes wordt bereikt. Zij zijn de validators van het netwerk die de EVM gebruiken om op een decentrale wijze consensus te bereiken, waardoor op een eerlijke en veilige manier wordt besloten of een transactie of smart contract valide en betrouwbaar is.
Daarnaast zorgt de EVM ervoor dat nieuwe gedecentraliseerde applicaties (dApps) gecreëerd kunnen worden dankzij de uitvoering van smart contracts. DApps breiden het ecosysteem van Ethereum uit met onder andere nieuwe DeFi-projecten en NFT-projecten.
Wordt Ethereum Virtual Machine (EVM) ook door andere blockchains gebruikt?
Het Ethereum-netwerk is niet de enige blockchain die gebruik maakt van de Ethereum Virtual Machine. Er zijn andere blockchains die de EVM gebruiken, een variant ervan, of compatibel zijn met de EVM. Hieronder een lijst van blockchains die de EVM gebruiken of ermee compatibel zijn:
- Ethereum: De originele en grootste EVM-blockchain.
- Binance Smart Chain (BSC): Compatibel met de EVM en staat bekend om zijn snelheid en lage transactiekosten (gas fees).
- Polygon (Matic): Een Layer-2-oplossing bovenop Ethereum die gebruikmaakt van de EVM en zich richt op de schaalbaarheid van het Ethereum-ecosysteem.
- Avalanche (C-Chain): Ondersteunt de EVM, waardoor smart contracts van Ethereum eenvoudig kunnen overstappen naar Avalanche.
- Harmony: Ondersteunt de EVM, waardoor Ethereum-smart contracts erop kunnen draaien zoals op Ethereum zelf.
- Arbitrum: Net als Polygon een Layer-2-oplossing gericht op het verbeteren van schaalbaarheid en het verlagen van transactiekosten. Ook Arbitrum maakt gebruik van de EVM.
- Moonbeam / Moonriver: Draaiend op respectievelijk Polkadot en Kusama. Volledig EVM-compatibel, waardoor bestaande Ethereum-smart contracts zonder aanpassing verplaatst kunnen worden.
Toekomst van de Ethereum Virtual Machine (EVM)
De EVM is cruciaal voor Ethereum en voor veel EVM-compatibele blockchains. Layer-2-oplossingen en blockchains gericht op cross-chain interoperabiliteit gebruiken vaak de EVM of een variant daarvan, mede doordat het Ethereum-ecosysteem een zeer belangrijke rol speelt in de cryptomarkt. Zolang Ethereum populair blijft en ontwikkelaars van dApps de EVM gebruiken, omdat ze daarmee makkelijk kunnen bewegen tussen compatibele netwerken, blijft de EVM een belangrijke rol spelen.
Daarnaast staat de ontwikkeling van de EVM niet stil. Ontwikkelaars binnen de Ethereum-community zijn bezig met het verbeteren van de EVM.
Tot slot komen er steeds meer nieuwe Layer-2-oplossingen die de EVM gebruiken, zoals zk-rollups-netwerken, die het Ethereum-ecosysteem schaalbaarder, sneller en goedkoper maken.
De voor- en nadelen van de EVM?
Voordelen van de EVM | Nadelen van de EVM |
---|---|
Decentralisatie: Het decentrale karakter van de EVM zorgt ervoor dat ontwikkelaars veel vrijheid hebben, terwijl het netwerk bestand is tegen manipulatie. | Schaalbaarheid: De EVM op Ethereum maakt gebruik van de transactiesnelheden en schaalbaarheid van Ethereum. Deze staat bekend als traag, wat in drukke tijden op het netwerk kan leiden tot hoge transactiekosten. |
Transparantie: Het Ethereum-netwerk en daarmee ook de EVM is open-source en erg transparant. Iedereen kan de database inzien en zien welke transacties zijn gedaan, welke wallets er zijn en wat ze bezitten, en welke smart contracts er zijn opgeslagen in de blockchain. | Complexiteit: De EVM gebruikt Solidity voor de ontwikkeling van smart contracts. Dit is een nieuwe programmeertaal waar je als developer even aan moet wennen. |
Veiligheid: De Ethereum-blockchain wordt gezien als een veilig platform dankzij het consensusmechanisme, waarbij nodes worden gebruikt voor het valideren van transacties. Smart contracts gecreëerd met de EVM profiteren van deze veiligheid. | Veiligheidsrisico’s: Ondanks dat de EVM veilig is, zitten er wel risico’s verbonden aan de ontwikkeling van smart contracts. Fouten in een contract kunnen leiden tot bugs en exploits. |
Programmeerbaarheid: Aangezien de EVM een Turing-volledige machine is, is het een programma dat door bijna iedere computer te begrijpen is. Hierdoor is het geschikt voor de ontwikkeling van nieuwe dApps. |
Conclusie
De Ethereum Virtual Machine (EVM) is essentieel voor het functioneren van Ethereum en speelt een centrale rol in het uitvoeren van smart contracts en het creëren van gedecentraliseerde applicaties (dApps). Doordat het systeem decentraal wordt aangestuurd door duizenden nodes, is het niet alleen betrouwbaar, maar ook veilig en transparant.
EVM is compatibel met veel andere blockchains en Layer-2-oplossingen, waardoor ontwikkelaars eenvoudig hun projecten kunnen verplaatsen of uitbreiden naar andere netwerken.
Daarnaast blijft de EVM in ontwikkeling. Denk aan de opkomst van ZK-rollups die de schaalbaarheid en snelheid van het netwerk verder verbeteren. Zolang het Ethereum-ecosysteem blijft groeien en ontwikkelaars blijven bouwen met de EVM, zal deze virtuele machine een onmisbare schakel blijven in de wereld van crypto en Web3.