Aiuta ad aggiornare questa pagina

🌏

C'è una nuova versione di questa pagina, ma al momento è solo in inglese. Aiutaci a tradurre l'ultima versione.

Questa pagina è incompleta. Se conosci bene l'argomento, modificala e condividi un po' del tuo sapere.

Macchina virtuale Ethereum (EVM)

Ultima modifica: , Invalid DateTime
Edit page

La creazione di istanze fisiche dell’EVM non può essere paragonata allo scrivere codice per puntare a un cloud o a un’onda dell'oceano, ma esiste come entità singola gestita da migliaia di computer collegati, che eseguono un client Ethereum.

Il protocollo Ethereum stesso esiste unicamente allo scopo di garantire un funzionamento continuo, ininterrotto e immutabile di questa speciale macchina a stati. È l'ambiente in cui sono presenti tutti gli account Ethereum e gli Smart Contract. In qualsiasi blocco della catena, Ethereum ha uno, e solo uno, stato "canonico", e la EVM è ciò che definisce le regole per calcolare un nuovo stato valido da blocco a blocco.

Prerequisiti

Per comprendere l'EVM, è richiesta una familiarità di base con i termini comuni dell'informatica, come ad esempio byte, memoria e stack. Sarebbe utile, inoltre, conoscere i concetti di crittografia/blockchain, come funzioni hash, Proof of Work e albero di Merkle.

Dal libro mastro alla macchina a stati

Per descrivere blockchain come Bitcoin, viene spesso utilizzata l'analogia con un "libro mastro distribuito", che permette l'esistenza di una valuta decentralizzata utilizzando strumenti base della crittografia. Una criptovaluta si comporta come una "normale" valuta per via delle regole che decidono cosa si può e cosa non si può fare per modificare il libro mastro. Ad esempio, un indirizzo Bitcoin non può spendere più Bitcoin di quanti ne abbia ricevuti in precedenza. Queste regole sono alla base di tutte le transazioni su Bitcoin e di molte altre blockchain.

Mentre Ethereum ha la sua valuta nativa (Ether) che segue quasi esattamente le stesse regole intuitive, consente anche una funzione molto più potente: gli Smart Contract. Per questa caratteristica più complessa, è necessaria un'analogia più complessa. Invece di essere un libro mastro distribuito, Ethereum è una macchina a stati distribuita. Lo stato di Ethereum è una grande enorme struttura di dati che contiene non solo tutti gli account e i saldi, ma una macchina a stati, che puiò cambiare da blocco a blocco in base a un set predefinito di regole, e che può eseguire codice macchina arbitrario. Le regole specifiche di cambio stato da blocco a blocco sono definite dall'EVM.

Ddiagramma che mostra la composizione dell'EVM Diagramma adattato da Ethereum EVM illustrated

La funzione di transizione di stato di Ethereum

L'EVM si comporta come una funzione matematica: dato un input, produce un output deterministico. Quindi è più utile descrivere formalmente Ethereum come avente una funzione di transizione di stato:

1Y(S, T)= S'
2

Dato un vecchio stato valido (S) e un nuovo set di transazioni valide (T), la funzione di transizione di stato di Ethereum Y(S, T) produce un nuovo stato di output valido S'

Stato

Nell'ambito di Ethereum, lo stato è un'enorme struttura di dati chiamata albero di Merkle Patricia modificato, che tiene tutti gli account collegati tramite hash e riducibili a un singolo hash radice memorizzato sulla blockchain.

Transazioni

Le transazioni sono istruzioni provenienti dagli account firmate crittograficamente. Esistono due tipi di transazioni: quelle che danno luogo a chiamate di messaggio e quelle che invece danno luogo alla creazione di contratti.

La creazione di contratti porta alla creazione di nuovo account contratto contenente bytecode di Smart Contract compilato. Quando un altro account fa una chiamata di messaggio a questo contratto, esegue il suo bytecode.

Istruzioni dell'EVM

L'EVM viene eseguita come una macchina a stack con una profondità di 1024 elementi. Ogni elemento è una parola a 256 bit, scelta per avere la massima compatibilità con lo schema di hash SHA-3-256.

Durante l'esecuzione, l' EVM mantiene una memoria transitoria (sotto forma di array di byte con indirizzamento a parola), che non rimane persistente tra le transazioni.

I contratti, invece, contengono un albero di memorizzazione di Merkle Patricia (sotto forma di array di parole con indirizzamento a parola), associato all'account in questione e parte dello stato globale.

Il bytecode compilato dello Smart Contract compilato viene eseguito come numero di opcode dell'EVM, che eseguono operazioni stack standard come XOR, AND, ADD, SUB, ecc. L'EVM implementa anche una serie di operazioni di stack specifiche della blockchain, come ADDRESS, BALANCE, SHA3, BLOCKHASH, ecc.

Diagramma che mostra dove serve il carburante nelle operazioni dell'EVM Diagramma adattato da Ethereum EVM illustrated

Implementazioni dell'EVM

Tutte le implementazioni dell'EVM devono rispettare le specifiche descritte nello Yellowpaper di Ethereum.

Nei 5 anni di storia di Ethereum, l'EVM ha subito diverse revisioni, ed esistono diverse implementazioni dell'EVM in vari linguaggi di programmazione.

Tutti i client Ethereum includono un'implementazione dell'EVM. Inoltre ci sono diverse implementazioni standalone, tra cui:

Letture consigliate

👈
IndietroBlocchi