Je hebt de term misschien wel eens voorbij horen komen, de Ethereum Virtual Machine (EVM). Het is de uitvinding van Vitalik Buterin en een belangrijk onderdeel van Ethereum en de smart contract functionaliteit. In dit artikel proberen we deze techniek zo duidelijk mogelijk uit te leggen zodat je begrijpt hoe Ethereum werkt op de achtergrond.
Wat is Ethereum Virtual Machine?
De Ethereum Virtual Machine is een systeem dat op een gedecentraliseerde manier de wijzigingen op de Ethereum blockchain bijhoudt. Het houdt de ‘State’ / de laatste versie van de blockchain bij. Gebruikers kunnen de Ethereum Virtual Machine draaien op een computer en hiermee zelf programma’s maken (smart contracts) en deze onderdeel laten zijn van Ethereum.
De state van de blockchain wordt aangepast door transacties. Iedere transactie is een wijziging in de blockchain en alle deelnemers van deze blockchain moeten hier van op de hoogte zijn. Een verandering kan voortkomen uit bijvoorbeeld een gebeurtenis op een smart contract.
Hoe werkt het precies?
Het is een ingewikkeld concept en het is daarom goed om bij het begin te beginnen. Een computerprogramma wordt geschreven in een computercode / programmeertaal. Inmiddels zijn er veel tools die programmeurs helpen met het schrijven van code waardoor er veel Engels in de code zit.
Een computer (CPU) kan alleen geen Engels lezen / begrijpen. Er bestaan daarom compilers die de computercode voor je vertalen naar ‘bytes’ die de computer wel kan begrijpen en uitvoeren. Je geschreven code zijn instructies voor de computer en door deze te vertalen naar bytes kan je computer deze instructies lezen en uitvoeren.
Ethereum is geen computer. Het is een gedistribueerd netwerk en draait op talloze machines over de hele wereld. Om toch met de code aan de slag te kunnen, bestaat de Ethereum Virtual Machine. Dit kun je wel zien als een CPU die draait in een computer door middel van een programma ‘Geth’. Iedereen die Geth draait op een Windows, Unbuntu of Mac is hiermee met elkaar verbonden.
Ethereum Virtual Machine werkt hetzelfde als een normale CPU / computer. Het voert geschreven code uit volgens de instructies die geschreven zijn middels de programmeertaal Solidity. De code (bytes) die uitgevoerd worden door de EVM zijn de smart contracts van Ethereum. EVM is een virtuele CPU / computer oftewel software. Het bestaat niet in de fysieke wereld zoals je wel een computer kunt kopen in de winkel. De EVM zit ‘in’ de Geth software.
Op de EVM kunnen smart contracts gemaakt worden, oftewel applicaties. Projecten die gemaakt worden op de Ethereum blockchain zijn gemaakt in de EVM. Hierdoor zijn ze onderdeel van de Ethereum blockchain al is de applicatie een die op zichzelf draait. Transacties gedaan op deze applicatie worden door middel van Geth gedistribueerd aan alle andere deelnemers van het netwerk en daarmee onderdeel van het grote geheel.
Geth
Geth is de software waarin de EVM zit. Op het moment dat je Geth draait op je computer ben je daadwerkelijk onderdeel van het Ethereum netwerk. Je bent hierdoor met ieder ander die Geth draait in verbinding. Het Ethereum netwerk is niets anders dan een hoop computers die allemaal Geth draaien.
Zodra je een smart contract maakt krijgt iedereen met Geth een kopie van deze code. Op het moment dat een smart contract daadwerkelijk aangeroepen wordt zal iedereen binnen het Ethereum netwerk de kopie van de smart contract ook uitvoeren. Hierdoor blijft iedere machine up-to-date met de laatste wijziging gemaakt door een smart contract.
Je kunt je voorstellen dat er inmiddels behoorlijk wat smart contracts ‘deployed’ zijn. In totaal kunnen er op dit moment 1,5 miljoen smart contracts uitstaan. Iedere kleine wijziging gemaakt door een smart contract kan voor een verandering in de ‘state’ van de blockchain zorgen. Na een wijziging ontvangt iedereen met Geth hiervan een teken en zal dezelfde code uitvoeren waardoor iedere Node op het netwerk (computer met Geth) altijd de juiste versie heeft.
De state is de laatste status van de blockchain. Dit bevat het kasboek van hoeveel Ethereum iedereen heeft, welke wallets er zijn en welke smart contracts er allemaal gemaakt zijn. Iedere kleine wijziging door een smart contract moet door alle computers met Geth bijgehouden worden.
Gwei
Op het Ethereum netwerk en binnen smart contracts worden transacties gedaan. Dit zijn de wijzigingen die gemaakt worden op de blockchain. Iedere transactie moet betaald worden en dit gebeurt aan de hand van GAS. Op het Ethereum netwerk worden de kosten hiervoor uitgedrukt in Gwei. Dit is de kleinste unit van Ethereum zoals Satoshi dat is voor 0,00000001 Bitcoin.
Kort samengevat. Iedereen kan een computer kopen (windows, ubuntu, Mac) en hierop Geth software draaien. Door Geth software te draaien beschik je over de Ethereum Virtual Machine. In de EVM kan code geschreven en uitgevoerd worden in de programmeertaal Solidity. Deze code oftewel het geschreven programma noemen we Smart Contracts. De wijzigingen / gebeurtenissen op de smart contracts worden uitgevoerd op de blockchain en bij het uitvoeren van een Smart Contract krijgt iedereen met Geth automatisch de laatste wijzigingen door. Iedereen met Geth houdt de laatste ‘state’ van deze blockchain bij.
Het artikel Ethereum Virtual Machine uitleg verscheen als eerst op CurrentCrypto.nl.