BlockPulseNews
Définition

EIP-2535 : définition

Aussi appelé : Diamond

L'EIP-2535, dite Diamond, est un modèle d'architecture de smart contracts dans lequel un contrat central redirige chaque appel vers plusieurs contrats de logique, appelés facettes, qu'il est possible d'ajouter, remplacer ou retirer.

Thème : Ethereum et smart contracts

EIP-2535 : comment ça marche ?

Sur Ethereum, la taille du code d'un contrat est plafonnée, ce qui gêne les applications très riches en fonctionnalités. Le standard Diamond contourne cette limite : le contrat principal, le diamant, ne contient presque pas de logique. Il possède une table qui associe chaque fonction, identifiée par son sélecteur, à une facette, c'est-à-dire un contrat externe qui contient le code correspondant. Lorsqu'un utilisateur appelle une fonction, le diamant transmet l'appel à la bonne facette grâce à delegatecall.

Comme delegatecall exécute le code de la facette dans le contexte du diamant, toutes les données restent stockées dans le diamant lui-même, à une adresse unique et stable. Une fonction standard, diamondCut, permet de modifier la table de correspondance pour mettre à jour une partie du protocole sans tout redéployer. Des fonctions dites loupe permettent en outre à quiconque de lister les facettes et fonctions actives, ce qui améliore la transparence. Ce modèle est une forme avancée de contrat évolutif (upgradable). Il apporte de la souplesse aux gros projets, mais au prix d'une complexité nettement supérieure à celle d'un proxy classique, notamment dans l'organisation du stockage partagé entre facettes.

Un exemple concret

Imaginons un jeu en ligne dont le contrat gère inventaire, combats et boutique. Avec un diamant, chaque module vit dans sa propre facette. Lorsque les développeurs corrigent un bug dans le système de combat, ils remplacent uniquement la facette des combats via diamondCut, sans toucher à l'inventaire des joueurs ni changer l'adresse du contrat.

Les risques à connaître

La personne ou l'entité qui contrôle diamondCut peut changer tout le comportement du contrat, y compris de manière malveillante. Une mauvaise organisation du stockage peut provoquer des collisions qui corrompent les données. La complexité rend aussi les audits plus difficiles.

À ne pas confondre avec

  • Proxy upgradable : Un proxy classique pointe vers un seul contrat de logique, alors qu'un diamant répartit les fonctions entre plusieurs facettes.
  • EIP-1167 : Le minimal proxy sert à cloner à bas coût un contrat existant et n'est pas conçu pour être mis à jour, contrairement au diamant.

Questions fréquentes sur EIP-2535

À quoi sert un smart contract Diamond ?

Il permet de construire un protocole volumineux et modulaire derrière une seule adresse, en dépassant la limite de taille des contrats et en mettant à jour des fonctions individuellement.

Un contrat Diamond est-il plus risqué qu'un contrat classique ?

Il ajoute un risque de gouvernance, puisque son code peut être modifié, et un risque technique lié à sa complexité. Il convient de vérifier qui détient le droit de mise à jour et si celui-ci est protégé par un timelock ou un multisig.

Dans le même thème : Ethereum et smart contracts

Tous les termes du thème Ethereum et smart contracts →

À lire

L'actualité : Ethereum et smart contracts

Les derniers articles de BlockPulseNews sur ce sujet.

Approfondir avec l'Académie : Ethereum en Profondeur Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en E

← Tout le lexique crypto de A à Z