Définition
Proxy upgradable : définition
Un proxy upgradable est une architecture de smart contract où un contrat proxy conserve l'adresse et les données, tandis que la logique est déléguée à un contrat d'implémentation remplaçable, ce qui permet de mettre à jour un code normalement immuable.
Thème : Ethereum et smart contracts
Un smart contract déployé sur Ethereum ne peut pas être modifié. Pour corriger des bugs ou ajouter des fonctionnalités, les développeurs utilisent un contrat intermédiaire, le proxy. C'est lui que les utilisateurs appellent et c'est lui qui stocke les soldes et paramètres. À chaque appel, il transmet l'exécution au contrat d'implémentation grâce à l'instruction delegatecall, qui exécute le code de l'implémentation dans le contexte de stockage du proxy.
Pour mettre à jour, un administrateur change simplement l'adresse de l'implémentation enregistrée dans le proxy. L'adresse publique et les données restent les mêmes, mais le comportement change. Plusieurs schémas standardisés existent, comme le proxy transparent, le modèle UUPS ou le beacon proxy, qui diffèrent par l'endroit où se trouve la logique de mise à jour. Cette souplesse a un coût en confiance : celui qui contrôle la mise à jour peut modifier les règles du contrat, y compris celles qui protègent les fonds des utilisateurs.
Un exemple concret
Imaginons qu'un protocole de prêt découvre une erreur de calcul des intérêts. Son contrat est un proxy : l'équipe déploie une nouvelle implémentation corrigée, puis la gouvernance vote le changement, appliqué après un délai. Les utilisateurs continuent d'interagir avec la même adresse et conservent leurs positions, mais le calcul suit désormais la nouvelle logique.
Les risques à connaître
Une clé d'administration compromise peut remplacer la logique par un code malveillant et vider les fonds. Une mise à jour mal conçue peut corrompre le stockage si l'ordre des variables change, ou laisser l'implémentation sans initialisation. Un délai de mise à jour et un contrôle multisig ou par DAO réduisent ces risques.
Questions fréquentes sur Proxy upgradable
Comment savoir si un smart contract est upgradable ?
Les explorateurs de blocs signalent souvent qu'un contrat est un proxy et indiquent son implémentation. La documentation et les audits du projet précisent aussi qui détient le droit de mise à jour.
Un contrat upgradable est-il moins sûr ?
Il permet de corriger des failles, mais ajoute un risque lié à ceux qui contrôlent la mise à jour. Tout dépend des garde-fous : multisig, timelock, gouvernance.