Cos'è Cosmos EVM e come funziona questa tecnologia all'interno dell'ecosistema Cosmos?

Cos'è Cosmos EVM e come funziona questa tecnologia all'interno dell'ecosistema Cosmos?

Cos'è Cosmos EVM?

Cosmos EVM è un software open source che permette agli sviluppatori di rendere una chain Cosmos SDK compatibile con EVM. Quindi non è una blockchain a sé, non è un token e non è nemmeno la stessa cosa di Cosmos Hub o ATOM.

In parole semplici, Cosmos EVM aggiunge un ambiente in cui le app Ethereum possono girare su una chain Cosmos autonoma. Con questo, uno sviluppatore può costruire una nuova L1 oppure estendere una chain Cosmos SDK esistente con il supporto alla tecnologia Ethereum.

Una chain del genere decide da sola le regole principali. Pensa al proprio set di validator, alla governance, alle fee, ai moduli attivi e alle regole di accesso. Un validator è un partecipante che controlla i nuovi block e aiuta la rete a raggiungere un accordo.

Cosmos EVM è pensato per chain che vogliono fare scelte proprie, ma allo stesso tempo usare il mondo Ethereum già familiare. Nel repository c'è per esempio evmd: un'implementazione di riferimento per avviare una chain compatibile con EVM.

Il software è un fork di evmOS e rientra nella licenza open source Apache-2.0. Una cosa importante da sapere: Cosmos EVM è ancora nella fase v0.x. Questo significa che gli aggiornamenti futuri, prima di una release v1, possono ancora includere cambiamenti tecnici più grandi.


In breve

  • Cosmos EVM è un software per rendere una chain Cosmos SDK compatibile con EVM.
  • Non è una blockchain autonoma e nemmeno un token.
  • Ogni chain sceglie da sola, tra le altre cose, validator, governance, fee e regole di accesso.
  • Le app Ethereum e gli smart contract Solidity possono quindi girare su una chain Cosmos.
  • Cosmos EVM è open source e si trova ancora nella fase v0.x.

Come funziona Cosmos EVM?

Cosmos EVM permette a una chain di elaborare sia normali transazioni Cosmos sia transazioni Ethereum. Il cuore di tutto questo è il modulo x/vm, che gestisce l'esecuzione della EVM, il gas, le fee e la memorizzazione delle modifiche.

Come funziona in pratica? Una transazione Ethereum viene prima impacchettata come MsgEthereumTx. In questo modo la transazione si adatta al modo in cui la Cosmos SDK elabora le transazioni. Poi il modulo estrae la transazione Ethereum da quel pacchetto ed esegue la EVM.

Se la transazione va a buon fine, le modifiche vengono salvate nello store della Cosmos SDK. Se l'esecuzione fallisce, la modifica temporanea può essere annullata. Questo è importante: una transazione fallita non deve lasciare modifiche eseguite solo a metà.

Sotto il cofano, Cosmos EVM ha in grandi linee tre componenti:

  • CometBFT: gestisce il consenso, quindi il modo in cui i validator decidono insieme quale nuovo block è valido.
  • ABCI: il collegamento tecnico tra CometBFT e l'applicazione che gira sulla chain.
  • go-ethereum (geth): fornisce la funzionalità EVM, come l'esecuzione delle transazioni Ethereum.

Cosmos EVM supporta diversi tipi di transazioni Ethereum, tra cui legacy/EIP-155, EIP-2930, EIP-1559 ed EIP-7702. Le transazioni legacy non protette sono disattivate di default. Le funzioni esattamente disponibili possono cambiare da una chain Cosmos EVM all'altra.

Un altro elemento importante sono i precompile. Sono indirizzi fissi su cui uno smart contract può richiamare una funzione nativa. Invece di eseguire normale bytecode EVM, un precompile esegue direttamente codice Go. Così un contratto Solidity può, per esempio, usare funzioni dei moduli Cosmos SDK, se la chain ha attivato questa possibilità.

Esempio: uno smart contract può usare un precompile per eseguire un'azione su un token nativo oppure avviare un trasferimento IBC. Il contratto non deve quindi ricostruire da zero quella funzionalità Cosmos.

Quale ruolo ha la Ethereum Virtual Machine dentro Cosmos EVM?

La Ethereum Virtual Machine, o EVM, dentro Cosmos EVM è l'ambiente che esegue bytecode Ethereum e smart contract Solidity. Puoi vedere la EVM come il livello di compatibilità tra le app Ethereum e l'infrastruttura Cosmos sottostante.

Grazie a questo, gli sviluppatori possono continuare a usare molti workflow Ethereum già noti. Pensa a MetaMask, Hardhat, Foundry, Remix, ethers.js e viem. Gli smart contract Solidity che funzionano su Ethereum possono in linea di principio essere deployati su una chain Cosmos EVM senza modificare il codice del contratto.

Cosmos EVM offre tra le altre cose JSON-RPC compatibile con Ethereum, tipi di transazione, indirizzi e funzionalità account. JSON-RPC, in parole semplici, è il modo standard con cui un wallet o un'app invia richieste tecniche a una blockchain. Il tuo crypto wallet può quindi comunicare con una chain Cosmos EVM adatta in modo familiare.

Una singola chiave sottostante può avere due rappresentazioni di indirizzo: un indirizzo Ethereum esadecimale e un indirizzo Cosmos Bech32. Esadecimale è il formato di indirizzo noto che inizia con 0x. Bech32 è il formato leggibile di Cosmos con un prefisso della chain corrispondente. Sono due forme della stessa chiave sottostante.

Una chain Cosmos EVM usa anche due tipi di chain ID: un chain ID Cosmos e un chain ID EVM numerico separato. Questi aiutano il software a riconoscere l'ambiente giusto e le regole delle transazioni.

La compatibilità è ampia, ma non è letteralmente identica a Ethereum. Cosmos EVM supporta opcode EVM, EIP ed interfacce ERC fino alla hardfork Prague. Le transazioni blob di EIP-4844 e PREVRANDAO di EIP-4399 non sono supportati.

Come supporta Cosmos EVM l'interoperabilità?

Cosmos EVM può supportare l'interoperabilità includendo IBC nella chain. IBC è un protocollo che permette a blockchain indipendenti di inviarsi dati, messaggi e token.

Questo non significa che ogni chain Cosmos EVM sia automaticamente collegata a ogni altra blockchain. Per la comunicazione servono tra le altre cose supporto IBC, una connessione, canali, relayer e una controparte compatibile. Cosmos EVM inoltre non crea da solo una connessione diretta con Ethereum mainnet.

Attraverso i precompile, i contratti EVM possono anche usare funzioni di altri moduli Cosmos SDK. Pensa a staking, distribuzione, governance, funzioni bancarie e trasferimenti IBC. Le possibilità disponibili dipendono da ciò che il builder di quella chain ha aggiunto e attivato.

Come funziona la comunicazione con altre blockchain Cosmos?

La comunicazione con altre blockchain Cosmos passa attraverso i packet IBC. Un packet è semplicemente un pacchetto di dati che deve andare da una blockchain all'altra.

La chain sorgente registra prima che quel packet esiste. Poi un relayer prende il messaggio e lo consegna, insieme alla prova crittografica, all'altra blockchain. Un relayer quindi trasporta i dati, ma non conserva centralmente i tuoi token.

La blockchain ricevente usa un light client IBC per controllare quella prova. Un light client mantiene informazioni compatte sullo stato di consenso dell'altra blockchain. In questo modo può verificare che le informazioni inviate siano davvero presenti sulla chain sorgente.

Dopo aver creato una connessione IBC, due blockchain ottengono ciascuna un collegamento al light client dell'altra parte. Le app usano poi porte e canali per inviare i packet. Una combinazione di portID e channelID indica dove deve andare un packet.

I canali possono essere ordered oppure unordered. Con ordered i packet devono arrivare nello stesso ordine. Con unordered l'ordine di arrivo può cambiare.

Per una chain Cosmos EVM, gli smart contract Solidity possono avviare movimenti di token tramite il precompile ICS-20. ICS-20 è lo standard dentro IBC per inviare token fungibili, cioè token intercambiabili della stessa specie. Gli asset IBC ricevuti possono anche diventare disponibili come precompile ERC-20 dinamici per i contratti EVM tramite il modulo ERC-20.

Quale ruolo ha IBC dentro Cosmos EVM?

IBC è il livello di protocollo che permette a una chain Cosmos EVM di scambiare messaggi e token con altre blockchain compatibili con IBC. Per gli sviluppatori Solidity, il precompile ICS-20 è uno strumento importante in questo contesto.

Un contratto può usarlo per avviare un trasferimento cross-chain e compilare tra le altre cose la porta sorgente, il canale, la denominazione del token, l'importo, il destinatario e un timeout. Un timeout è il tempo massimo o l'altezza del block entro cui un packet deve essere elaborato.

Il precompile ICS-20 ha un indirizzo fisso: 0x0000000000000000000000000000000000000802. Questo indirizzo funziona solo se la chain in questione ha attivato questo precompile.

Cosmos EVM aggiunge anche callback per i trasferimenti ICS-20. Una callback è una funzione che può essere richiamata automaticamente quando è avvenuto un certo passaggio:

  • Sulla chain di destinazione può girare onRecvPacket appena un packet viene ricevuto.
  • Sulla chain sorgente onAcknowledgePacket può reagire a una conferma.
  • Sulla chain sorgente onTimeoutPacket può reagire se il trasferimento non viene completato in tempo.

In questo modo uno smart contract può eseguire logica extra dopo aver ricevuto token, per esempio uno swap su un DEX oppure l'aggiunta di liquidità. Il trasferimento del token e la callback vengono eseguiti insieme all'interno dell'elaborazione di quel packet. Quindi riescono insieme o falliscono insieme.

C'è però una limitazione pratica: per un trasferimento IBC, il destinatario deve attualmente usare un indirizzo Bech32. Un indirizzo 0x esadecimale come destinatario non è ancora supportato. L'indirizzo del mittente invece viene convertito automaticamente da esadecimale a Bech32.

Le callback rendono le app cross-chain più potenti, ma anche più complesse. Gli sviluppatori devono gestire bene timeout, acknowledgement, dati memo, limiti di gas e gestione degli errori.

A cosa può servire Cosmos EVM?

Cosmos EVM viene usato soprattutto per costruire o estendere una chain Cosmos SDK su cui possano girare smart contract Solidity e strumenti Ethereum già esistenti. È utile per i team che vogliono combinare la compatibilità Ethereum con la libertà di una propria L1.

Un builder può decidere da solo come sarà fatta la chain. Per esempio quali validator partecipano, come funziona la governance, quali fee valgono, chi può deployare contratti e quali moduli Cosmos SDK sono disponibili.

Le possibili applicazioni includono tra le altre:

  • Costruire applicazioni EVM: gli smart contract Solidity esistenti possono girare sulla chain.
  • Usare funzioni Cosmos native: gli smart contract possono richiamare staking, delega, governance e interazioni con token nativi tramite i precompile.
  • Eseguire flussi token IBC: i contratti possono inviare token a un'altra blockchain compatibile con IBC.
  • Automatizzare logiche cross-chain: le callback possono reagire alla ricezione, alla conferma o a un timeout di un trasferimento.
  • Offrire accesso simile a ERC-20: i token Cosmos nativi e gli asset IBC in arrivo possono essere resi utilizzabili per i contratti EVM tramite il modulo ERC-20.
  • Limitare l'accesso: una chain può impostare una EVM permissioned, in cui solo certi indirizzi possono deployare o chiamare contratti.

Queste possibilità non sono disponibili automaticamente ovunque. Se un'app può usare, per esempio, IBC, staking o governance da uno smart contract dipende dai moduli e dai precompile attivi su quella chain specifica.

Qual è la differenza tra Cosmos EVM e altre reti EVM?

Cosmos EVM si differenzia dalle altre reti EVM perché non è una rete separata, ma uno stack software per chain autonome basate su Cosmos SDK. Quindi non va confrontato uno a uno con Ethereum, con una specifica EVM-L1 o con una Layer 2.

La compatibilità con Ethereum è comunque una parte importante. Gli sviluppatori possono usare strumenti Ethereum, JSON-RPC e smart contract Solidity. Allo stesso tempo, l'infrastruttura sottostante funziona in modo diverso: una chain Cosmos EVM usa il consenso CometBFT e un proprio set di validator.

Con CometBFT, la finalità può arrivare dopo un block confermato, di solito in circa 1 o 2 secondi. Finalità significa, in parole semplici, che dopo quella conferma un block non dovrebbe più essere annullato. Per questo almeno due terzi dello stake devono confermare un block.

Cosmos EVM è progettato per una L1 sovrana. Una chain del genere gestisce quindi da sola il set di validator, la governance e l'economia delle fee. Questo è diverso dalle rollup, che per una parte del loro design e della loro sicurezza si appoggiano a un livello di settlement.

Anche l'economia delle fee può differire da Ethereum. Cosmos EVM usa EIP-1559, ma la base fee va ai validator e ai delegator invece di essere bruciata. Una chain può inoltre disattivare la base fee oppure impostare un prezzo minimo del gas.

In più, Cosmos EVM aggiunge possibilità che non trovi di default su ogni rete EVM: accesso ai moduli Cosmos SDK tramite precompile e interoperabilità basata su IBC. Ma anche tra due chain Cosmos EVM possono esserci grandi differenze. Ogni chain può aggiungere i propri precompile e decidere quali funzioni sono attive.

Non tutti gli elementi specifici di Ethereum o delle rollup sono presenti. Per esempio, le transazioni blob di EIP-4844 e PREVRANDAO di EIP-4399 non sono disponibili.

Quali sono i vantaggi e i limiti di Cosmos EVM?

Cosmos EVM combina gli strumenti Ethereum familiari con la flessibilità di una chain Cosmos SDK autonoma. Questo offre vantaggi interessanti, ma bisogna anche guardare bene alla chain concreta su cui si costruisce o che si usa.

I vantaggi:

  • Ambiente EVM familiare: si possono usare smart contract Solidity e molti strumenti Ethereum.
  • Finalità rapida: le chain CometBFT possono offrire blocktime veloci e finalità dopo un block confermato.
  • Accesso alle funzioni Cosmos: i precompile possono far collaborare gli smart contract con staking, governance, asset bancari nativi e trasferimenti IBC.
  • Molta libertà di configurazione: i builder scelgono moduli, precompile attivi, parametri delle fee e policy di accesso.
  • Possibilità cross-chain: IBC e callback rendono possibili flussi di token più complessi tra blockchain compatibili.

I limiti:

  • Nessuna esperienza uniforme: set di validator, endpoint RPC, canali IBC, token disponibili, precompile e parametri cambiano da chain a chain.
  • Non tutte le funzioni EVM esistono: le transazioni blob di EIP-4844 e PREVRANDAO di EIP-4399 mancano.
  • Limite sugli indirizzi IBC: i trasferimenti ICS-20 richiedono al momento un indirizzo Bech32 del destinatario, non un indirizzo esadecimale.
  • Tecnica extra con decimal diversi: un gas token con 18 decimal è il percorso più semplice e consigliato. Una chain esistente con un numero diverso di decimal ha bisogno di x/precisebank, cosa che rende l'integrazione più complessa.
  • Il software è ancora in sviluppo: le release v0.x possono includere breaking change prima di una versione v1.

Importante anche questo: un audit o la compatibilità EVM non garantiscono automaticamente che ogni implementazione sia sicura. Una configurazione specifica, smart contract, canali IBC e integrazioni cross-chain possono avere ciascuno rischi propri.

Conclusione

Cosmos EVM è un livello di costruzione flessibile per gli sviluppatori che vogliono combinare una propria chain Cosmos SDK con il noto ambiente Ethereum. Quindi non è una blockchain o un token separato, ma un software che permette a smart contract Solidity, strumenti Ethereum e JSON-RPC di funzionare su una chain Cosmos autonoma.

La grande forza sta nella combinazione: compatibilità EVM da una parte, e moduli Cosmos SDK, un proprio set di validator e IBC dall'altra. Così gli smart contract possono per esempio usare funzioni native sui token o trasferimenti cross-chain.

Allo stesso tempo, Cosmos EVM non è identico ovunque. Le funzioni, le fee, le connessioni IBC, i precompile e le impostazioni tecniche cambiano da chain a chain. Per utenti e sviluppatori è quindi importante guardare sempre all'implementazione concreta, non solo all'etichetta Cosmos EVM.

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