Cos’è una Virtual Machine? Una spiegazione semplice

Cos’è una Virtual Machine? Una spiegazione semplice

Cos’è una Virtual Machine?

Una Virtual Machine, spesso abbreviata in VM, è un ambiente software che si comporta come un computer o come un ambiente in cui i programmi possono essere eseguiti. Quale delle due cose sia dipende dal tipo di VM.

In una VM orientata al sistema ottieni in pratica un computer virtuale completo. Può eseguire un proprio sistema operativo, salvare dati e usare una connessione di rete. Il computer fisico reale si chiama host. I computer virtuali che girano sopra di esso si chiamano guest.

Una VM orientata al processo, invece, è un ambiente di esecuzione per il codice dei programmi. La Java Virtual Machine, o JVM, è un esempio molto noto.

Nel mondo crypto, la Ethereum Virtual Machine, spesso abbreviata in EVM, funziona in modo simile. Non è un computer virtuale con un proprio sistema operativo, ma un ambiente che esegue gli smart contract secondo regole fisse.

Puoi quindi vedere una VM come uno strato software che determina come viene eseguito un computer virtuale o il codice di un programma.


In breve

  • Una Virtual Machine è un ambiente software per computer o un ambiente di esecuzione per il codice.
  • Una VM orientata al sistema imita un computer completo.
  • Una VM orientata al processo esegue codice di programma dentro una runtime fissa.
  • La EVM è una blockchain VM per gli smart contract, non un PC virtuale.
  • Le VM possono aiutare a separare gli ambienti e a eseguire il codice secondo regole fisse.

Come funziona una Virtual Machine?

Il funzionamento di una VM cambia in base al tipo.

In una VM orientata al sistema, di solito c’è un hypervisor tra l’hardware fisico e i computer virtuali. Un hypervisor è un software che distribuisce risorse come potenza di calcolo, memoria, archiviazione e capacità di rete dell’host tra diverse macchine virtuali.

Immagina che un server fisico esegua tre macchine virtuali. Ogni VM può allora funzionare come se avesse un proprio computer, mentre in realtà condivide l’hardware dello stesso host. L’hypervisor decide quali risorse può usare ogni VM e mantiene gli ambienti separati il più possibile.

La capacità disponibile dipende comunque dal computer fisico. Se l’host ha poca memoria, poca potenza di calcolo o poco spazio di archiviazione, anche le macchine virtuali ne risentono.

Una VM orientata al processo funziona in modo diverso. Il codice del programma viene eseguito dentro un ambiente software fisso. Per esempio, il codice Java viene convertito in istruzioni che una JVM può eseguire. Così lo stesso codice può girare su diversi sistemi operativi e tipi di hardware, purché sia disponibile una JVM adatta.

Le blockchain VM eseguono il codice dei programmi secondo regole fisse che sono uguali per i node partecipanti. Per questo lo stesso codice, con lo stesso input, dovrebbe dare sempre lo stesso risultato.

Quali tipi di Virtual Machine esistono?

Le Virtual Machine si dividono di solito in due tipi principali: VM orientate al sistema e VM orientate al processo.

Cos’è una Virtual Machine orientata al sistema?

Una Virtual Machine orientata al sistema è un computer virtuale su cui possono girare un proprio sistema operativo e applicazioni.

La VM riceve versioni virtuali dell’hardware, come processore, memoria, archiviazione e connessione di rete. Un hypervisor gestisce poi il modo in cui le diverse macchine virtuali usano l’hardware reale dell’host.

Hyper-V e KVM sono esempi di tecnologie con cui si possono creare queste macchine virtuali.

Un vantaggio è che più sistemi operativi possono girare su un solo server fisico. Così puoi separare applicazioni o ambienti di lavoro diversi senza aver bisogno di un computer fisico separato per ogni ambiente.

Questa separazione può aiutare anche con la sicurezza. Se una macchina virtuale va in crash o viene attaccata, non significa automaticamente che anche le altre macchine virtuali vengano colpite. Però resta importante configurare bene host e hypervisor.

Cos’è una Virtual Machine orientata al processo?

Una Virtual Machine orientata al processo è un ambiente di esecuzione per il codice dei programmi e non un computer virtuale completo con un proprio sistema operativo.

La Java Virtual Machine (JVM) è un esempio noto. Un programma Java viene convertito in un formato intermedio che la JVM può capire. Una JVM adatta può poi eseguire quel codice su diversi sistemi operativi e tipi di hardware.

La JVM stabilisce quali istruzioni sono disponibili e come il codice Java deve comportarsi durante l’esecuzione. L’esecuzione tecnica precisa può cambiare da una JVM all’altra.

Le blockchain VM assomigliano più a questo tipo di VM che a un computer virtuale completo, perché servono soprattutto a eseguire il codice dei programmi secondo regole fisse.

Quale ruolo ha una Virtual Machine nella blockchain?

Dentro una blockchain programmabile, una Virtual Machine stabilisce come vengono eseguiti gli smart contract e altro codice di programma.

La VM definisce quali istruzioni sono possibili e come queste istruzioni possono modificare lo stato della blockchain. In questo modo diversi node possono eseguire e controllare la stessa transazione secondo le stesse regole.

Ethereum usa per questo la Ethereum Virtual Machine (EVM). Ethereum non registra solo le transazioni, ma anche uno stato aggiornato con, tra le altre cose, account, saldi e dati degli smart contract.

Quando uno smart contract viene distribuito su Ethereum, il codice compilato viene salvato come bytecode. Se in seguito qualcuno richiama il contratto, la EVM esegue questo bytecode.

La Virtual Machine e il meccanismo di consenso hanno compiti diversi. La VM stabilisce cosa fa tecnicamente una transazione. Il consenso fa sì che i partecipanti siano d’accordo su quali transazioni e quale nuovo stato vengano accettati dalla rete.

Non tutte le blockchain hanno una VM generale per gli smart contract. Bitcoin, per esempio, usa Bitcoin Script per definire le condizioni per spendere bitcoin. Questo è volutamente più limitato di un ambiente generale per smart contract come la EVM.

Come funziona la Ethereum Virtual Machine (EVM)?

Una transazione Ethereum può, per esempio, inviare ETH, creare un nuovo smart contract o richiamare uno smart contract esistente.

Quando viene creato uno smart contract, il bytecode compilato viene salvato in un account del contratto. Se qualcuno richiama il contratto in seguito, la EVM esegue questo bytecode.

La EVM funziona come una stack machine. Uno stack puoi immaginarlo come una pila di valori. La EVM può mettere valori su questa pila e usarli di nuovo per fare calcoli.

Lo stack della EVM può contenere al massimo 1.024 elementi. Ogni elemento è composto da 256 bit.

Durante l’esecuzione, la EVM usa memoria temporanea per i calcoli. Questa memoria scompare dopo la transazione. Gli smart contract possono inoltre salvare dati in uno storage permanente del contratto, così restano disponibili per transazioni future.

Ogni istruzione della EVM, chiamata anche opcode, ha un certo costo in gas. Il gas indica quanta potenza di calcolo e quante altre risorse di rete usa un’operazione. Il gas limit di una transazione stabilisce quanto gas può consumare al massimo l’esecuzione.

Alla fine paghi per il gas che viene effettivamente usato. Nelle transazioni Ethereum secondo EIP-1559, il prezzo del gas è composto tra le altre cose da una base fee e una priority fee. La base fee viene bruciata. La priority fee va al validator che propone il blocco in cui la transazione viene inclusa.

Esempio: Immagina di inviare una transazione a uno smart contract per trasferire token. La EVM esegue il codice del contratto, controlla le condizioni e aggiorna i saldi salvati se tutto è corretto. Per eseguire queste istruzioni, la transazione usa gas.

Quali altre blockchain Virtual Machine esistono?

Oltre alla EVM esistono altri ambienti blockchain per eseguire programmi e smart contract. Questi possono usare linguaggi di programmazione, modelli di storage e regole di esecuzione diversi.

Solana, per esempio, usa una runtime in cui i programmi vengono eseguiti come bytecode sBPF. I programmi vengono compilati in file ELF con codice sBPF e poi girano in un ambiente isolato.

Invece del gas, Solana usa tra le altre cose le compute units per misurare quanta potenza di calcolo usa una transazione. Le diverse istruzioni dentro una transazione condividono lo stesso compute budget.

Sui usa il linguaggio di programmazione Move per gli smart contract. Gli smart contract vengono pubblicati sulla blockchain come Move package e possono creare e modificare oggetti on-chain.

Sui funziona con un modello a oggetti. Un oggetto on-chain ha tra le altre cose un ID univoco, un proprietario e un numero di versione. Le transazioni possono leggere, modificare, trasferire questi oggetti o crearne di nuovi.

Questo è diverso da Ethereum, dove gli account e lo storage dei contratti hanno un ruolo centrale. Le blockchain VM possono quindi avere lo stesso obiettivo generale, ma essere costruite in modo molto diverso dal punto di vista tecnico.

A cosa servono le Virtual Machine?

Le VM orientate al sistema si usano molto quando più sistemi operativi o applicazioni devono girare su un solo server fisico. Succede, per esempio, negli ambienti cloud e nei data center.

Si usano anche per separare ambienti di sviluppo, test e produzione. Inoltre, ambienti virtuali completi possono essere salvati come VM image o dischi virtuali e riavviati in seguito.

Le VM orientate al processo servono soprattutto a far eseguire lo stesso codice di programma su sistemi diversi. In questo modo un’applicazione non deve adattarsi direttamente a ogni combinazione di hardware e sistema operativo.

Le blockchain VM rendono possibili transazioni programmabili. Eseguono gli smart contract e possono quindi, per esempio, modificare dati salvati, spostare token o compiere altre azioni secondo le regole di un contratto.

Quali sono i vantaggi e i limiti di una Virtual Machine?

Le Virtual Machine offrono diversi vantaggi, ma hanno anche dei limiti.

Per le VM orientate al sistema, questi sono vantaggi importanti:

  • Uso più efficiente dell’hardware: più computer virtuali possono condividere le risorse di un solo host fisico.

  • Separazione tra ambienti: sistemi operativi e applicazioni diversi possono girare in modo indipendente.

  • I problemi restano più spesso limitati: un errore o un crash in una VM non ha automaticamente conseguenze per tutte le altre VM sullo stesso host.

  • Gli ambienti sono più facili da riutilizzare: con VM image e dischi virtuali si può salvare un intero ambiente software e riavviarlo.

Questa separazione non è però completamente a prova di tutto. In un cosiddetto VM escape, un attaccante può provare a ottenere accesso all’hypervisor o all’host partendo da una macchina virtuale. Anche una configurazione sbagliata può indebolire la separazione tra VM.

Le Virtual Machine usano inoltre risorse proprie. L’hypervisor e i diversi sistemi operativi virtuali richiedono potenza di calcolo, memoria e archiviazione. Se troppe VM usano la stessa macchina fisica, possono competere tra loro per queste risorse.

Per le VM orientate al processo, la portabilità è un vantaggio importante. Dall’altra parte, il codice deve sempre funzionare dentro le regole e le risorse disponibili della runtime.

Per le blockchain VM, il vantaggio principale è l’esecuzione prevedibile degli smart contract. Allo stesso tempo, calcoli e storage su una blockchain sono limitati. Le reti impongono limiti a quanta potenza di calcolo e quanto spazio di archiviazione può usare una transazione o uno smart contract.

Inoltre, calcoli più complessi possono causare costi di transazione più alti. Per questo i calcoli pesanti non sono sempre pratici da eseguire interamente su una blockchain.

Conclusione

Una Virtual Machine può essere un computer virtuale completo, un ambiente per eseguire codice di programma o una runtime specializzata per gli smart contract.

Le VM orientate al sistema rendono possibile eseguire più ambienti informatici separati sullo stesso hardware fisico. Le VM orientate al processo rendono il codice di programma più facile da portare da un sistema all’altro.

Dentro la blockchain, VM come la EVM fanno sì che gli smart contract vengano eseguiti secondo regole fisse. Così le transazioni possono fare più che trasferire solo valore.

Ci sono però anche dei limiti. Le Virtual Machine dipendono sempre dalle risorse disponibili e le blockchain VM impongono inoltre limiti a potenza di calcolo, storage e costi.

Chi è Finst

Finst è una piattaforma di criptovalute leader nei Paesi Bassi che offre commissioni di trading ultra-basse, sicurezza di livello istituzionale e una gamma completa di servizi crypto come trading, custodia, staking e rampe fiat di ingresso e uscita. Fondata dall’ex team core di DEGIRO, Finst è autorizzata come fornitore di servizi di criptoasset dall’Autorità olandese per i mercati finanziari (AFM) e serve clienti retail e istituzionali in 30 paesi europei.

La piattaforma crypto per tutti gli investitori

Che tu sia un trader attivo o un investitore di lungo periodo, Finst ti permette di far crescere il tuo patrimonio in crypto con fiducia e tranquillità.

Registrati