La Ethereum Foundation (EF) è un'atipica organizzazione no-profit che si occupa di supportare l’ecosistema di Ethereum comprese tutte le tecnologie ad essa correlate – scopri di più sul sito.
Tra queste tecnologie rientra la Ethereum Virtual Machine (EVM), un ambiente virtuale che consente agli smart contract di interagire tra loro ed avere più funzionalità senza diventare eccessivamente complicati.
In questo articolo vedremo nel dettaglio cos’è e come funziona la EVM, ovvero il cuore dell’ecosistema Ethereum!
Cos’è la Macchina Virtuale Ethereum?
Per capire cos’è la macchina virtuale Ethereum prendiamo il popolare linguaggio di programmazione Java come esempio. In Java, gli sviluppatori scrivono i codici e li traducono in bytecode; questi bytecode sono poi caricati ed eseguiti nella Java Virtual Machine (JVM). La JVM assicura l'interoperabilità dei programmi attraverso diverse implementazioni.
Ethereum adotta un approccio simile, in cui gli sviluppatori codificano gli smart contract in Solidity. Questi contratti sono poi convertiti in bytecode e caricati sulla blockchain per l'esecuzione sulla EVM in funzione su varie piattaforme hardware.
La Ethereum Virtual Machine è una macchina quasi “Turing-completa”. Una macchina di Turing completa è matematicamente in grado di risolvere qualsiasi problema datogli. La Macchina Virtuale Ethereum è invece vista come non completa poiché i calcoli eseguiti dalla macchina sono limitati da Gas Fees, ovvero commissioni che agiscono come un limite di sicurezza quando si tratta del numero di calcoli che la macchina può eseguire.
Come anticipato, la Ethereum Virtual Machine è il cuore dell'ecosistema Ethereum dato che gestisce la distribuzione e l'esecuzione degli smart contract. Le transazioni semplici non hanno bisogno del coinvolgimento della EVM mentre certe operazioni più complesse richiedono un aggiornamento di stato da parte dell'EVM.
La macchina virtuale di Ethereum contiene milioni di elementi eseguibili, con ogni elemento avente il suo negozio di dati, ed utilizza un'architettura a stack, che memorizza i valori in-memory su uno stack. Tutte le operazioni vengono eseguite come definito nel codice EVM o nel bytecode.
La EVM ha anche diversi componenti di dati come: la ROM caricata con il codice byte del contratto che deve essere eseguito, una memoria volatile inizializzata a zero e una memoria permanente che è parte dello stato di Ethereum.
Come funziona la Macchina Virtuale Ethereum?
La funzione primaria della Ethereum Virtual Machine è quella di consentire agli sviluppatori di creare dApps ed eseguire smart contract. Per utilizzare la EVM non è necessario avere una precedente esperienza come sviluppatore o avere una grande esperienza in fatto di codifica. Questo perché la macchina virtuale Ethereum elimina la necessità di un hardware potente e costoso, rendendola così perfetta per i principianti.
I contratti sulla Ethereum Virtual Machine sono scritti in linguaggi come Solidity o Vyper e poi compilati nel bytecode EVM; questo permette al codice di essere completamente isolato dalla rete. Ogni nodo della rete esegue un'istanza EVM, permettendo così di concordare l’esecuzione delle istruzioni.
La Ethereum Virtual Machine permette agli sviluppatori di creare ed eseguire il loro codice in un ambiente trustless. Ogni istruzione che viene implementata sulla EVM è tenuta sotto controllo da un sistema che tiene traccia del costo di esecuzione dell'istruzione. Quindi assegna all'istruzione una Gas Fee. Per avviare un contratto o una transazione, l'utente deve fornire abbastanza Ether per poter pagare le commissioni.
Le Gas Fees risolvono due problemi per l'EVM: i validatori ricevono il loro importo prepagato anche se l'esecuzione fallisce e l'esecuzione non può durare più a lungo di quanto l'importo prepagato possa consentire. Infine, per ogni transazione inviata alla rete il validatore deve garantire che tutte le informazioni riguardanti la transazione siano valide e che il mittente abbia abbastanza fondi per pagare l'esecuzione.