BlockPulseNews
Définition

EIP-1167 : définition

Aussi appelé : minimal proxy

L'EIP-1167, ou minimal proxy, est un standard Ethereum qui définit un contrat clone très court dont le seul rôle est de rediriger tous les appels, via delegatecall, vers un contrat d'implémentation unique. Il réduit fortement le coût de déploiement.

Thème : Ethereum et smart contracts

EIP-1167 : comment ça marche ?

Déployer un smart contract complet coûte cher en gas, proportionnellement à la taille de son code. Quand une application doit créer de nombreux contrats identiques, comme un portefeuille par utilisateur ou un coffre par collection, recopier le même code à chaque fois serait un gaspillage. L'EIP-1167 propose une solution : un bytecode standardisé de quelques dizaines d'octets, qui contient seulement l'adresse du contrat d'implémentation et lui transmet chaque appel via delegatecall. Chaque clone dispose de son propre stockage et de son propre solde, mais partage la logique de l'implémentation.

Ce modèle est souvent déployé par un contrat fabrique (factory), qui crée les clones à la demande, éventuellement à une adresse prévisible grâce à l'instruction CREATE2. Comme un clone ne peut pas utiliser de constructeur pour s'initialiser, il expose généralement une fonction d'initialisation à appeler une seule fois, juste après sa création. Contrairement à un proxy évolutif, le minimal proxy n'est pas modifiable : l'adresse de l'implémentation est écrite en dur dans son bytecode. Les explorateurs de blocs reconnaissent ce format et affichent le code de l'implémentation correspondante.

Un exemple concret

Imaginons une plateforme qui crée un contrat de séquestre pour chaque vente entre un acheteur et un vendeur. Au lieu de déployer à chaque fois un contrat complet, elle déploie une seule implémentation, puis une fabrique crée un clone EIP-1167 par séquestre. Chaque clone garde ses propres fonds et paramètres, mais exécute le code commun. Le coût de création de chaque séquestre est ainsi nettement réduit.

Les risques à connaître

Si la fonction d'initialisation n'est pas protégée ou n'est pas appelée dans la même transaction que la création, un attaquant peut initialiser le clone à sa place et en prendre le contrôle. Une faille dans l'implémentation affecte tous les clones à la fois. L'implémentation elle-même doit aussi être protégée contre une initialisation ou une destruction malveillante.

À ne pas confondre avec

  • Proxy upgradable : Un proxy upgradable peut changer de contrat de logique, alors qu'un clone EIP-1167 pointe définitivement vers la même implémentation.
  • EIP-2535 : Le modèle Diamond répartit la logique entre plusieurs contrats et peut évoluer, tandis que le minimal proxy redirige tout vers une seule implémentation figée.

Questions fréquentes sur EIP-1167

Un clone EIP-1167 peut-il être mis à jour ?

Non. L'adresse de l'implémentation est inscrite dans son bytecode et ne peut pas être changée. Pour un contrat modifiable, il faut un proxy évolutif.

Pourquoi utiliser des minimal proxies ?

Pour déployer à moindre coût de nombreux contrats partageant la même logique, chacun avec son propre stockage, par exemple un portefeuille ou un coffre par utilisateur.

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