Tutti nel mondo delle criptovalute conoscono Ethereum. La maggior parte delle persone ha anche sentito parlare di Ethereum Virtual Machine (EVM), ma cos’è esattamente? Sei fortunato, perché è esattamente ciò di cui parleremo oggi.
✔️ La macchina virtuale di Ethereum è una singola entità mantenuta da migliaia di computer che eseguono un client Ethereum.
✔️ Il protocollo Ethereum ha una propria valuta, l'Ether (ETH), che segue quasi le stesse regole del Bitcoin, ma consente anche potenti funzionalità come i contratti intelligenti.
✔️ Tutte le implementazioni dell'EVM devono aderire alle specifiche stabilite nel Libro giallo di Ethereum e sono disponibili client di implementazione per JavaScript, C++ e Python.
La Ethereum Virtual Machine è una singola entità gestita da migliaia di computer connessi che fanno girare un client Ethereum. Chiunque può gestire questa rete diventando un nodo. Viene scaricato un determinato software da eseguire sul proprio PC e voilà. A quel punto non si è ancora un validatore, perciò va a vantaggio solo della rete Ethereum, non si ricevono commissioni di transazione e non si ha il premesso di creare nuovi blocchi con un nodo.
L’unico scopo del protocollo Ethereum è quello di preservare l’operatività continua, ininterrotta e immutabile di questa “macchina a stato speciale”. Al suo interno, "vivono" tutti gli account Ethereum e gli smart contract. Ogni blocco nella blockchain ha solo uno stato canonico e la EVM definisce quali sono le regole per calcolare un nuovo stato valido di blocco in blocco.
L'analogia di un ledger distribuito viene spesso usata per descrivere le blockchain come Bitcoin. Permette a una valuta decentralizzata di usare strumenti fondamentali per la crittografia. Il ledger tiene traccia di cosa qualcuno può fare per cambiarla, per esempio proibire di spendere più di quello che si possiede.
Ethereum ha la sua valuta, Ether, chiamata anche ETH, che segue quasi esattamente le stesse regole, ma permette anche una funzione molto più potente: smart contract. Con Ethereum, è possibile usare l’analogia dello stato macchina distribuita. Lo stato di Ethereum è una grande struttura di dati che contiene non solo tutti i conti e i saldi, ma anche uno stato macchina che può cambiare di blocco in blocco secondo un set di regole predefinito ed eseguire codice macchina casuale. Le regole specifiche per cambiare lo stato di blocco in blocco sono definite dall’EVM.
L’EVM si comporta come una funzione matematica: dandole un determinato input, questa genererà un output deterministico. Ethereum ha una “funzione di transizione di stato”. Se si possiede un vecchio stato valido della rete e un nuovo set di transazioni valide, la funzione di transizione di stato causa la generazione di un nuovo stato di output valido da parte della rete Ethereum.
Con la sua “Merkle Patricia Trie modificata”, Ethereum assicura una forte efficienza nel suo database.
La EVM esegue una “stack machine” con una profondità di 1024 voci. Ognuna di queste voci è una parola a 256-bit con la quale lavorare. Le parole standard possono essere viste nel grafico sottostante, come archivio e gas.
Gli “opcode” della EVM come AND, OR e ADD e simili sono usati in questo caso per aprire possibilità matematiche standard. Inoltre, vengono usate parole specifiche alla blockchain Ethereum, come ADDRESS e BALANCE.
Tutte le implementazioni della Ethereum Virtual Machine devono obbedire alle specifiche descritte dallo Yellow paper di Ethereum. I client di esecuzione di Ethereum sono disponibili per Javascript, C++ e Python.
Gli smart contract per la EVM sono generalmente scritti in Solidity o Vyper.