Vai al contenuto principale

Aiuta ad aggiornare questa pagina

🌏

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

Traduci la pagina
Visualizza in inglese

Nessun bug qui!🐛

Questa pagina non è stata tradotta. Per il momento, è stata intenzionalmente lasciata in inglese.

Macchina virtuale Ethereum (EVM)

Ultima modifica: , Invalid DateTime
Modifica la pagina

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 conoscenza di base dei termini comuni dell'informatica, come ad esempio byte, memoria e stack. Sarebbe anche utile conoscere i concetti di crittografia/blockchain, quali le funzioni hash, il proof-of-work e l'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.

Ethereum ha la sua valuta nativa (Ether), che segue quasi esattamente le stesse regole intuitive, ma 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 di stato 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 di 256 bit, scelta per la facilità d'uso con la crittografia a 256 bit (come gli hash Keccak-256 o le firme secp256k1).

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 trie 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 INDIRIZZO, SALDO, BLOCKHASH, etc.

Diagramma che mostra dove occorre 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 7 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, esistono diverse implementazioni standalone, tra cui:

Letture consigliate

Questo articolo è stato utile?

👈

Indietro

Blocchi

Avanti

Codici operativi
👉