Qu’est-ce que Cosmos EVM et comment cette technologie fonctionne-t-elle au sein de l’écosystème Cosmos ?

Qu’est-ce que Cosmos EVM et comment cette technologie fonctionne-t-elle au sein de l’écosystème Cosmos ?

Qu’est-ce que Cosmos EVM ?

Cosmos EVM est un logiciel open source qui permet aux développeurs de rendre une chaîne Cosmos SDK compatible avec l’EVM. Il ne s’agit donc ni d’une blockchain propre, ni d’un token, ni de la même chose que Cosmos Hub ou ATOM.

En termes simples, Cosmos EVM ajoute à une chaîne Cosmos autonome un environnement dans lequel les applications Ethereum peuvent fonctionner. Un développeur peut ainsi construire une nouvelle L1, ou étendre une chaîne Cosmos SDK existante avec la prise en charge de la technologie Ethereum.

Une telle chaîne définit elle-même ses principales règles. Pensez à son propre ensemble de validateurs, à la gouvernance, aux frais, aux modules actifs et aux règles d’accès. Un validateur est un participant qui vérifie les nouveaux blocks et aide le réseau à parvenir à un accord.

Cosmos EVM est conçu pour les chaînes qui veulent conserver leurs propres choix tout en profitant de l’univers Ethereum bien connu. Le dépôt contient par exemple evmd : une implémentation de référence pour mettre en place une chaîne compatible avec l’EVM.

Le logiciel est un fork d’evmOS et relève de la licence open source Apache-2.0. Point important à retenir : Cosmos EVM en est encore à la phase v0.x. Cela signifie que les futures mises à jour, avant une version v1, peuvent encore inclure des changements techniques majeurs.


À retenir

  • Cosmos EVM est un logiciel permettant de rendre une chaîne Cosmos SDK compatible avec l’EVM.
  • Ce n’est ni une blockchain autonome ni un token.
  • Chaque chaîne choisit elle-même notamment ses validateurs, sa gouvernance, ses frais et ses règles d’accès.
  • Les applications Ethereum et les smart contracts Solidity peuvent ainsi fonctionner sur une chaîne Cosmos.
  • Cosmos EVM est open source et se trouve encore dans la phase v0.x.

Comment fonctionne Cosmos EVM ?

Cosmos EVM permet à une chaîne de traiter à la fois des transactions Cosmos classiques et des transactions Ethereum. Le cœur du système est le module x/vm, qui gère l’exécution de l’EVM, le gas, les frais et le stockage des modifications.

Comment cela fonctionne-t-il en pratique ? Une transaction Ethereum est d’abord encapsulée sous la forme MsgEthereumTx. La transaction s’intègre ainsi dans la manière dont le Cosmos SDK traite les transactions. Ensuite, le module extrait la transaction Ethereum de cette enveloppe et exécute l’EVM.

Si la transaction réussit, les changements sont enregistrés dans le store du Cosmos SDK. Si l’exécution échoue, la modification temporaire peut être annulée. C’est important : une transaction échouée ne doit pas laisser de modifications partiellement exécutées.

Sous le capot, Cosmos EVM repose sur trois éléments principaux :

  • CometBFT : gère le consensus, c’est-à-dire la manière dont les validateurs décident ensemble quel nouveau block est valide.
  • ABCI : la connexion technique entre CometBFT et l’application qui fonctionne sur la chaîne.
  • go-ethereum (geth) : fournit les fonctionnalités EVM, comme l’exécution des transactions Ethereum.

Cosmos EVM prend en charge plusieurs types de transactions Ethereum, notamment legacy/EIP-155, EIP-2930, EIP-1559 et EIP-7702. Les transactions legacy non protégées sont désactivées par défaut. Les fonctionnalités exactement disponibles peuvent varier d’une chaîne Cosmos EVM à l’autre.

Un autre élément important est celui des precompiles. Ce sont des adresses fixes sur lesquelles un smart contract peut appeler une fonction native. Au lieu d’exécuter du bytecode EVM classique, une telle precompile exécute directement du code Go. Cela permet par exemple à un contrat Solidity d’utiliser des fonctions de modules Cosmos SDK, si la chaîne a activé cette possibilité.

Exemple : un smart contract peut, via une precompile, exécuter une action native sur un token ou lancer un transfert IBC. Le contrat n’a alors pas besoin de reconstruire entièrement cette fonctionnalité Cosmos lui-même.

Quel rôle joue l’Ethereum Virtual Machine au sein de Cosmos EVM ?

L’Ethereum Virtual Machine, ou EVM, est dans Cosmos EVM l’environnement qui exécute le bytecode Ethereum et les smart contracts Solidity. On peut voir l’EVM comme la couche de compatibilité entre les applications Ethereum et l’infrastructure Cosmos située en dessous.

Les développeurs peuvent ainsi continuer à utiliser de nombreux outils Ethereum bien connus. Pensez à MetaMask, Hardhat, Foundry, Remix, ethers.js et viem. Les contrats Solidity qui fonctionnent sur Ethereum peuvent en principe être déployés sur une chaîne Cosmos EVM sans modification du code du contrat.

Cosmos EVM propose notamment une compatibilité Ethereum pour JSON-RPC, les types de transactions, les adresses et les fonctionnalités de compte. En termes simples, JSON-RPC est la manière standard dont un wallet ou une application envoie des requêtes techniques à une blockchain. Votre wallet crypto peut ainsi communiquer avec une chaîne Cosmos EVM adaptée de manière familière.

Une même clé sous-jacente peut avoir deux représentations d’adresse : une adresse Ethereum hexadécimale et une adresse Cosmos Bech32. Hexadécimal est le format d’adresse bien connu qui commence par 0x. Bech32 est le format lisible de Cosmos, avec un préfixe propre à la chaîne concernée. Il s’agit de deux formes d’une même clé sous-jacente.

Une chaîne Cosmos EVM utilise également deux types d’ID de chaîne : un Cosmos chain ID et un EVM chain ID numérique distinct. Ils aident les logiciels à reconnaître le bon environnement et les bonnes règles de transaction.

La compatibilité est large, mais pas strictement identique à Ethereum. Cosmos EVM prend en charge les opcodes EVM, les EIP et les interfaces ERC jusqu’au hardfork Prague. Les transactions blob de EIP-4844 et PREVRANDAO de l’EIP-4399 ne sont pas prises en charge.

Comment Cosmos EVM prend-il en charge l’interopérabilité ?

Cosmos EVM peut prendre en charge l’interopérabilité en intégrant IBC dans la chaîne. IBC est un protocole qui permet à des blockchains indépendantes de s’envoyer des données, des messages et des tokens.

Cela ne signifie pas que chaque chaîne Cosmos EVM est automatiquement reliée à n’importe quelle autre blockchain. Pour communiquer, il faut notamment la prise en charge d’IBC, une connexion, des canaux, des relayers et une contrepartie compatible. Cosmos EVM ne crée pas non plus de lui-même une connexion directe avec Ethereum mainnet.

Grâce aux precompiles, les contrats EVM peuvent aussi utiliser des fonctions d’autres modules Cosmos SDK. Pensez au staking, à la distribution, à la gouvernance, aux fonctions bancaires et aux transferts IBC. Les possibilités exactes dépendent de ce que le constructeur de la chaîne a ajouté et activé.

Comment fonctionne la communication avec d’autres blockchains Cosmos ?

La communication avec d’autres blockchains Cosmos passe par des IBC packets. Un packet est simplement un paquet de données qui doit passer d’une blockchain à une autre.

La chaîne source enregistre d’abord l’existence de ce packet. Ensuite, un relayer récupère le message et le livre à l’autre blockchain, accompagné d’une preuve cryptographique. Un relayer transporte donc les données, mais ne conserve pas vos tokens de manière centralisée.

La blockchain destinataire utilise un client léger IBC pour vérifier cette preuve. Un client léger conserve des informations compactes sur l’état du consensus de l’autre blockchain. Il peut ainsi vérifier que les informations envoyées figurent bien sur la chaîne source.

Une fois la connexion IBC mise en place, les deux blockchains disposent chacune d’un lien vers le client léger de l’autre partie. Les applications utilisent ensuite des ports et des canaux pour envoyer des packets. Une combinaison de portID et channelID indique où un packet doit être envoyé.

Les canaux peuvent être ordered ou unordered. Dans le cas ordered, les packets doivent arriver dans le même ordre. Dans le cas unordered, l’ordre de réception peut varier.

Pour une chaîne Cosmos EVM, les contrats Solidity peuvent lancer des transferts de tokens via la precompile ICS-20. ICS-20 est la norme au sein d’IBC pour l’envoi de fungible tokens, c’est-à-dire des tokens interchangeables d’un même type. Les actifs IBC reçus peuvent aussi devenir disponibles sous forme de precompiles ERC-20 dynamiques pour les contrats EVM via le module ERC-20.

Quel rôle joue IBC au sein de Cosmos EVM ?

IBC est la couche protocolaire qui permet à une chaîne Cosmos EVM d’échanger des messages et des tokens avec d’autres blockchains compatibles IBC. Pour les développeurs Solidity, la precompile ICS-20 est ici un outil important.

Un contrat peut ainsi lancer un transfert cross-chain et y renseigner notamment le port source, le canal, la dénomination du token, le montant, le destinataire et un timeout. Un timeout est le délai maximal ou la hauteur de block limite avant qu’un packet doive être traité.

La precompile ICS-20 possède une adresse fixe : 0x0000000000000000000000000000000000000802. Cette adresse ne fonctionne que si la chaîne concernée a activé cette precompile.

Cosmos EVM ajoute également des callbacks pour les transferts ICS-20. Un callback est une fonction qui peut être appelée automatiquement lorsqu’une étape donnée s’est produite :

  • Sur la chaîne de destination, onRecvPacket peut s’exécuter dès qu’un packet est reçu.
  • Sur la chaîne source, onAcknowledgePacket peut réagir à une confirmation.
  • Sur la chaîne source, onTimeoutPacket peut réagir si le transfert n’a pas été finalisé à temps.

Un smart contract peut ainsi exécuter une logique supplémentaire après réception de tokens, par exemple un swap sur un DEX ou l’ajout de liquidité. Le transfert de tokens et le callback sont exécutés ensemble dans le traitement de ce packet. Ils réussissent donc ensemble ou échouent ensemble.

Il existe toutefois une limite pratique : pour un transfert IBC, le destinataire doit actuellement utiliser une adresse Bech32. Une adresse hexadécimale 0x comme adresse de réception n’est pas encore prise en charge. L’adresse de l’expéditeur, en revanche, est automatiquement convertie de l’hexadécimal vers Bech32.

Les callbacks rendent les applications cross-chain plus puissantes, mais aussi plus complexes. Les développeurs doivent gérer avec soin les timeouts, les acknowledgements, les données memo, les limites de gas et le traitement des erreurs.

À quoi Cosmos EVM peut-il servir ?

Cosmos EVM est surtout utilisé pour construire ou étendre une chaîne Cosmos SDK sur laquelle des smart contracts Solidity existants et des outils Ethereum peuvent fonctionner. C’est utile pour les équipes qui veulent combiner la compatibilité Ethereum avec la liberté d’une L1 autonome.

Un constructeur peut décider lui-même de l’apparence de cette chaîne. Par exemple, quels validateurs participent, comment fonctionne la gouvernance, quels frais s’appliquent, qui peut déployer des contrats et quels modules Cosmos SDK sont disponibles.

Les usages possibles incluent notamment :

  • Construire des applications EVM : des smart contracts Solidity existants peuvent fonctionner sur la chaîne.
  • Utiliser des fonctions natives Cosmos : les smart contracts peuvent appeler le staking, la délégation, la gouvernance et les interactions natives avec les tokens via des precompiles.
  • Exécuter des flux de tokens IBC : les contrats peuvent envoyer des tokens vers une autre blockchain compatible IBC.
  • Automatiser une logique cross-chain : les callbacks peuvent réagir à la réception, à la confirmation ou à un timeout d’un transfert.
  • Offrir un accès de type ERC-20 : les tokens Cosmos natifs et les actifs IBC entrants peuvent être utilisables par les contrats EVM via le module ERC-20.
  • Limiter l’accès : une chaîne peut mettre en place un EVM permissioned, dans lequel certaines adresses peuvent ou non déployer ou appeler des contrats.

Ces possibilités ne sont pas automatiquement disponibles partout. Par exemple, la possibilité pour une application d’utiliser IBC, le staking ou la gouvernance depuis un smart contract dépend des modules et des precompiles actifs sur cette chaîne précise.

Quelle est la différence entre Cosmos EVM et d’autres réseaux EVM ?

Cosmos EVM se distingue des autres réseaux EVM parce qu’il ne s’agit pas d’un réseau séparé, mais d’une pile logicielle pour des chaînes Cosmos SDK autonomes. Il ne faut donc pas le comparer directement à Ethereum, à une L1 EVM spécifique ou à une Layer 2.

La compatibilité Ethereum reste toutefois un élément central. Les développeurs peuvent utiliser les outils Ethereum, JSON-RPC et les smart contracts Solidity. En même temps, l’infrastructure sous-jacente fonctionne différemment : une chaîne Cosmos EVM utilise le consensus CometBFT et son propre ensemble de validateurs.

Avec CometBFT, la finalité peut intervenir après un block validé, généralement en 1 à 2 secondes. La finalité signifie, en termes simples, qu’après cette confirmation, un block ne devrait plus être annulé. Pour cela, au moins deux tiers du stake doivent valider un block.

Cosmos EVM est conçu pour une L1 souveraine. Une telle chaîne gère donc elle-même l’ensemble des validateurs, la gouvernance et l’économie des frais. C’est différent des rollups, qui s’appuient en partie sur une couche de règlement pour leur conception et leur sécurité.

L’économie des frais peut aussi différer de celle d’Ethereum. Cosmos EVM utilise EIP-1559, mais la base fee revient aux validateurs et aux délégateurs au lieu d’être brûlée. Une chaîne peut en outre désactiver la base fee ou définir un prix minimal du gas.

Cosmos EVM ajoute également des possibilités que l’on ne trouve pas par défaut sur chaque réseau EVM : l’accès aux modules Cosmos SDK via des precompiles et l’interopérabilité fondée sur IBC. Mais même entre deux chaînes Cosmos EVM, les différences peuvent être importantes. Chaque chaîne peut ajouter ses propres precompiles et décider quelles fonctions sont actives.

Tous les éléments spécifiques à Ethereum ou aux rollups ne sont pas présents. Ainsi, les transactions blob de l’EIP-4844 et PREVRANDAO de l’EIP-4399 ne sont pas disponibles.

Quels sont les avantages et les limites de Cosmos EVM ?

Cosmos EVM combine les outils Ethereum connus avec la flexibilité d’une chaîne Cosmos SDK autonome. Cela offre des avantages intéressants, mais il faut aussi examiner attentivement la chaîne concrète sur laquelle vous construisez ou que vous utilisez.

Les avantages :

  • Environnement EVM familier : les smart contracts Solidity et de nombreux outils Ethereum peuvent être utilisés.
  • Finalité rapide : les chaînes CometBFT peuvent offrir des temps de block rapides et une finalité après un block validé.
  • Accès aux fonctions Cosmos : les precompiles peuvent permettre aux smart contracts d’interagir avec le staking, la gouvernance, les actifs bancaires natifs et les transferts IBC.
  • Grande liberté de configuration : les constructeurs choisissent eux-mêmes les modules, les precompiles actives, les paramètres de frais et les politiques d’accès.
  • Possibilités cross-chain : IBC et les callbacks rendent possibles des flux de tokens plus complexes entre blockchains compatibles.

Les limites :

  • Pas d’expérience uniforme : les ensembles de validateurs, les endpoints RPC, les canaux IBC, les tokens disponibles, les precompiles et les paramètres varient selon la chaîne.
  • Toutes les fonctions EVM ne sont pas présentes : les transactions blob de l’EIP-4844 et PREVRANDAO de l’EIP-4399 sont absents.
  • Limite d’adresse IBC : les transferts ICS-20 exigent actuellement une adresse Bech32 pour le destinataire, et non une adresse hexadécimale.
  • Technique supplémentaire avec d’autres décimales : un token natif avec 18 décimales est l’option la plus simple et recommandée. Une chaîne existante avec un autre nombre de décimales nécessite x/precisebank, ce qui complique l’intégration.
  • Logiciel encore en développement : les versions v0.x peuvent contenir des breaking changes avant une version v1.

Autre point important : un audit ou la compatibilité EVM ne garantit pas automatiquement que chaque implémentation est sûre. Une configuration spécifique, des smart contracts, des canaux IBC et des intégrations cross-chain peuvent chacun comporter leurs propres risques.

En résumé

Cosmos EVM est une couche de construction flexible pour les développeurs qui souhaitent combiner leur propre chaîne Cosmos SDK avec l’environnement Ethereum bien connu. Il ne s’agit donc pas d’une blockchain ou d’un token distinct, mais d’un logiciel permettant à des smart contracts Solidity, à des outils Ethereum et à JSON-RPC de fonctionner sur une chaîne Cosmos autonome.

Sa grande force réside dans la combinaison : la compatibilité EVM d’un côté, et de l’autre les modules Cosmos SDK, un ensemble de validateurs propre et IBC. Les smart contracts peuvent ainsi, par exemple, utiliser des fonctions natives liées aux tokens ou des transferts cross-chain.

En même temps, Cosmos EVM n’est pas exactement identique partout. Les fonctions, les frais, les connexions IBC, les precompiles et les paramètres techniques varient selon la chaîne. Pour les utilisateurs comme pour les développeurs, il est donc important d’examiner toujours l’implémentation concrète, et pas seulement l’étiquette Cosmos EVM.

A propos de Finst

Finst est l'une des principales plateformes de cryptomonnaies aux Pays-Bas. Elle propose des frais de trading ultra-compétitifs, une sécurité de niveau institutionnel et une offre complète de services crypto incluant le trading, la conservation, le staking ainsi que des solutions de fiat on/off ramp. Fondée par d’anciens cadres de DEGIRO, Finst est autorisée sous MiCAR en tant que prestataire de services sur crypto-actifs par l’Autorité néerlandaise des marchés financiers (AFM). La plateforme est disponible pour les investisseurs particuliers et institutionnels dans 30 pays européens.

La plateforme crypto pour tous les investisseurs

Que vous soyez un trader actif ou un investisseur de long terme, Finst vous offre les outils pour investir dans les crypto-actifs en toute simplicité

Inscription