Capitalisation boursière: $3.744T 0.790%
Volume(24h): $296.7333B 142.120%
Indice de peur et de cupidité:

70 - Avidité

  • Capitalisation boursière: $3.744T 0.790%
  • Volume(24h): $296.7333B 142.120%
  • Indice de peur et de cupidité:
  • Capitalisation boursière: $3.744T 0.790%
Cryptos
Les sujets
Cryptospedia
Nouvelles
Cryptosopique
Vidéos
Top Cryptospedia

Choisir la langue

Choisir la langue

Sélectionnez la devise

Cryptos
Les sujets
Cryptospedia
Nouvelles
Cryptosopique
Vidéos

Qu'est-ce qu'un contrat de proxy minimal (EIP-1167)?

Un contrat de proxy minimal transfère efficacement les appels vers un contrat de mise en œuvre à l'aide de DelegateCall, permettant des déploiements rentables et une logique partagée sur plusieurs instances.

Jul 15, 2025 at 05:00 am

Comprendre le contrat de proxy minimal

Un contrat de proxy minimal est un contrat intelligent léger conçu pour transmettre tous les appels vers un autre contrat tout en maintenant des frais généraux minimaux. Il joue un rôle crucial dans les systèmes basés sur Ethereum, en particulier lors du déploiement de plusieurs instances d'un contrat avec une logique partagée. Le concept a été formalisé via EIP-1167 , qui décrit une norme pour créer des clones de contrats existants en utilisant une quantité minimale de bytecode.

L'idée principale derrière ce mécanisme est la réutilisation du code . Au lieu de déployer un nouveau contrat avec une logique identique à chaque fois, les développeurs peuvent déployer un proxy qui délègue tous les appels de fonction à un contrat de mise en œuvre préexistant. Cela réduit considérablement les coûts de déploiement et simplifie les mises à niveau.

Concept clé: un contrat de proxy minimal ne contient que le code nécessaire pour rediriger l'exécution vers un contrat cible.

Comment fonctionne EIP-1167?

L'EIP-1167 exploite l'opcode DelegateCall dans la solidité pour réaliser sa fonctionnalité. DelegateCall permet à un contrat d'exécuter du code à partir d'un autre contrat tout en préservant le contexte (tel que MSG.Sender et le stockage) du contrat d'appel. Dans le cas d'un indicateur minimal, cela signifie que le proxy transmet tous les appels entrants vers un contrat de mise en œuvre sans modifier le contexte de l'appelant.

Voici comment cela fonctionne:

  • Le contrat de proxy contient un seul emplacement de stockage qui contient l'adresse du contrat de mise en œuvre.
  • Lorsqu'un utilisateur interagit avec le proxy, la fonction de secours est déclenchée.
  • Cette fonction de secours utilise DelegateCall pour transmettre l'appel à l'adresse d'implémentation stockée.

En raison de sa simplicité, le contrat de proxy nécessite très peu de gaz pour le déploiement - souvent moins de 50 000 gaz. Cette efficacité le rend idéal pour les scénarios où de nombreux contrats similaires doivent être déployés rapidement et à moindre coût.

Structure d'un contrat de proxy minimal

Un contrat de proxy minimal suit généralement une structure stricte définie par l'EIP-1167. Voici ce que cela comprend:

  • Une variable d'adresse constante pointant vers le contrat de mise en œuvre.
  • Une fonction de secours qui effectue un délégation de cette adresse d'implémentation.
  • Aucun constructeur ou variable d'état au-delà de l'adresse de mise en œuvre.

Cette conception garantit que le proxy ne stocke aucune logique lui-même mais agit simplement comme un conduit pour le contrat de mise en œuvre. Vous trouverez ci-dessous une version simplifiée d'un tel contrat écrit en solidité:

 pragma solidity ^0.8.0; contrat minimalproxy {

address private immutable implementation; constructor(address _implementation) { implementation = _implementation; } fallback() external payable { address impl = implementation; assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), impl, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } }

}

Remarque importante: L'utilisation de l'assemblage en ligne dans la fonction de secours est essentielle pour maintenir le proxy minimal et efficace.

Des cas d'utilisation pour un minimum de contrats de proxy

Les contrats de proxy minimaux sont largement utilisés dans diverses applications et protocoles décentralisés en raison de leur efficacité et de leur flexibilité. Certains des cas d'utilisation les plus courants comprennent:

  • Usines de jeton: création de plusieurs jetons ERC-20 ou ERC-721 à partir d'un seul contrat de mise en œuvre.
  • Contrats de mise à niveau: servant de couche de base pour les modèles de mise à niveau comme le proxy transparent ou les UUP.
  • Déploiements économes en gaz: Réduction du coût de déploiement lors de l'instantifage des centaines ou des milliers de contrats.
  • Modèles de contrat: offrant des modèles standardisés pour un comportement prévisible sur plusieurs déploiements.

Chacun de ces cas d'utilisation bénéficie de l'empreinte de déploiement réduite et de la capacité de maintenir une logique cohérente sur plusieurs procurations.

Différences entre le proxy minimal et les autres modèles de proxy

Il existe plusieurs modèles de proxy dans Ethereum, notamment des proxys transparents, des UUP (standard proxy universel modulable) et des procurations de balises. Chacun a ses propres compromis en termes de complexité, de mise à niveau et de coût du gaz.

La principale différence entre un indicateur indirect minimal et d'autres types de proxy réside dans la fonctionnalité et l'extensibilité :

  • Les indicateurs minimaux ne prennent pas en charge les mises à niveau, sauf s'ils sont associés à une infrastructure supplémentaire.
  • Les procurations transparentes incluent la logique d'administration et un registre de proxy, l'augmentation de l'utilisation du gaz et de la complexité.
  • Les indicateurs UUPS permettent des mises à niveau autonomes via le contrat de mise en œuvre.

Les indicateurs minimaux sont les mieux adaptés aux scénarios où la mise en œuvre restera statique après le déploiement ou où les mises à niveau sont gérées en externe.

Considérations de sécurité et meilleures pratiques

Bien que les contrats de proxy minimaux soient simples, ils ne sont pas sans risques. Les développeurs doivent suivre les meilleures pratiques pour assurer une utilisation sécurisée:

  • Assurer l'immuabilité de la mise en œuvre: une fois déployé, l'adresse de mise en œuvre ne doit pas changer à moins que, explicitement prévue et sécurisée.
  • Évitez les conflits de stockage: Étant donné que le contexte de stockage du proxy et de la mise en œuvre du partage, une planification minutieuse est nécessaire pour prolonger le proxy plus tard.
  • Vérifiez Bytecode: Vérifiez toujours le bytecode du proxy et du contrat de mise en œuvre pour prévenir les modifications malveillantes.
  • Testez soigneusement: utilisez des outils comme Hardhat ou Foundry pour simuler les interactions et tester les cas de bord avant le déploiement du MainNet.

Conseil critique: ne supposez jamais qu'un contrat proxy hérite de la sécurité de la mise en œuvre - il doit être vérifié séparément.

Questions fréquemment posées

Q: Puis-je mettre à niveau un contrat de proxy minimal?

Bien que les proxys minimaux ne comprennent pas eux-mêmes la logique de mise à niveau, vous pouvez créer un système améliorable en les combinant avec d'autres normes comme les UUP ou en utilisant un contrôleur externe pour gérer les adresses d'implémentation.

Q: Combien de moins cher déploie un indicateur minimal par rapport à un contrat complet?

Le déploiement d'un proxy minimal coûte généralement environ 20 000 à 50 000 gaz, tandis que le déploiement d'un contrat complet peut dépasser 2 millions de gaz selon la complexité.

Q: Existe-t-il un moyen de récupérer l'adresse d'implémentation à partir d'un proxy déployé?

Oui, l'adresse de mise en œuvre est généralement stockée dans un emplacement de stockage spécifique (souvent l'emplacement 0). Vous pouvez le lire à l'aide d'outils comme eth_getStorageAt ou en inspectant le code de création de contrat.

Q: Des proxys minimaux sont-ils compatibles avec toutes les versions de solidité?

Ils fonctionnent bien avec Solidity 0.5.0 et plus. Cependant, pour une compatibilité optimale et des économies de gaz, l'utilisation de la solidité 0,8.x ou plus récente est recommandée.

Clause de non-responsabilité:info@kdj.com

Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!

Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.

Connaissances connexes

Voir tous les articles

User not found or password invalid

Your input is correct