-
Bitcoin
$111,159.5190
1.91% -
Ethereum
$2,780.9752
5.99% -
Tether USDt
$1.0004
0.02% -
XRP
$2.4445
2.93% -
BNB
$670.5182
1.44% -
Solana
$157.5983
2.80% -
USDC
$1.0000
0.00% -
TRON
$0.2902
1.00% -
Dogecoin
$0.1810
4.57% -
Cardano
$0.6308
4.36% -
Hyperliquid
$41.3432
5.36% -
Sui
$3.2358
9.67% -
Bitcoin Cash
$515.0817
1.73% -
Chainlink
$14.3848
2.47% -
Stellar
$0.2926
7.97% -
UNUS SED LEO
$8.9714
-0.48% -
Avalanche
$19.5787
5.87% -
Hedera
$0.1786
6.77% -
Shiba Inu
$0.0...01251
4.11% -
Toncoin
$2.8893
2.80% -
Litecoin
$91.0236
3.25% -
Monero
$321.6737
0.43% -
Polkadot
$3.6839
4.89% -
Dai
$1.0001
0.00% -
Ethena USDe
$1.0010
0.04% -
Uniswap
$8.2686
4.45% -
Bitget Token
$4.4292
1.99% -
Pepe
$0.0...01116
8.94% -
Aave
$295.7979
-0.85% -
Pi
$0.4913
5.95%
Qu'est-ce qu'un contrat de proxy et comment permette-t-il la mise à niveau?
Les contrats de proxy permettent des mises à niveau de contrat intelligent en séparant la logique du stockage, en utilisant `DelegateCall` pour maintenir l'état lors de la mise à jour des fonctionnalités.
Jul 10, 2025 at 07:42 pm

Comprendre les contrats de proxy dans le développement de contrats intelligents
Dans le monde de la blockchain et du développement de contrats intelligents, les contrats de proxy sont devenus un modèle de conception crucial. Contrairement aux contrats intelligents traditionnels qui sont immuables une fois déployés, les contrats proxy offrent un mécanisme structuré pour mettre en œuvre des changements et des mises à niveau sans redéployer l'ensemble du contrat. Cette flexibilité est particulièrement importante dans des environnements comme Ethereum, où le code déployé ne peut pas être modifié directement. Les contrats proxy servent d'intermédiaires entre les utilisateurs et la logique réelle de l'application , permettant aux développeurs de mettre à jour les fonctionnalités au fil du temps.
Comment fonctionnent les contrats proxy: un aperçu technique
À la base, un contrat de proxy agit comme une façade ou un emballage autour d'un autre contrat connu sous le nom de contrat de mise en œuvre. Lorsqu'un utilisateur interagit avec le proxy, il transmet les appels de fonction au contrat d'implémentation à l'aide de l'opcode delegatecall
. Cet OPCode garantit que le contexte d'exécution (tel que le stockage et l'adresse de l'expéditeur) reste cohérent avec l'état du proxy, même si la logique réside ailleurs.
- Le proxy maintient l'état du contrat.
- Le contrat de mise en œuvre contient la logique métier.
- Les appels de fonction des utilisateurs sont acheminés via le proxy vers l'implémentation actuelle.
Cette séparation permet des mises à jour de la mise en œuvre tout en préservant toutes les données et interactions existantes liées à l'adresse proxy.
Le rôle de délégation dans l'activation de la mise à niveau
La caractéristique technique clé permettant la mise à niveau dans les contrats proxy est le mécanisme delegatecall
. Dans Solidity, delegatecall
permet à un contrat d'exécuter du code à partir d'un autre contrat tout en maintenant le stockage, la valeur et le contexte de l'appelant. Cela signifie que lorsque le contrat de proxy utilise delegatecall
pour invoquer des fonctions sur le contrat de mise en œuvre, toutes les modifications apportées lors de l'exécution affectent le stockage du proxy plutôt que sur la mise en œuvre.
Ce comportement est essentiel car:
- Il garantit que les données persistent même après une mise à niveau.
- Il découple la logique du stockage, ce qui est nécessaire pour les modifications futures.
Sans delegatecall
, les mises à niveau nécessiteraient le redéploit à la fois le contrat et ses données associées, conduisant à des incohérences potentielles et à la perte d'informations.
Types de modèles de proxy utilisés dans la pratique
Plusieurs modèles de proxy existent dans l'écosystème Ethereum, chacun offrant différents degrés de complexité et de contrôle:
Modèle proxy transparent : cette approche achemine tous les appels externes vers le contrat de mise en œuvre à moins que l'appelant ne soit l'administrateur, qui peut accéder directement aux fonctions administratives sur le proxy. Cela garantit que les opérations de gouvernance n'interfèrent pas avec les interactions régulières des utilisateurs.
UUPS (standard proxy Upgradable universel) : Dans ce modèle, la logique de mise à niveau fait partie du contrat de mise en œuvre lui-même. Cela réduit le risque de centralisation en permettant aux améliorations d'être contrôlées au niveau de la mise en œuvre.
Modèle de proxy de balise : Au lieu de coder en dur l'adresse d'implémentation, le proxy Beacon récupère la dernière adresse de mise en œuvre d'un contrat de balise distinct. Cela permet simultanément des mises à niveau de masse sur plusieurs proxys.
Chacun de ces modèles a des compromis en termes de sécurité, de décentralisation et de facilité de maintenance, ce qui les rend adaptés à différents cas d'utilisation en fonction des exigences du projet.
Mise en œuvre d'un contrat de base proxy: guide étape par étape
La création d'un contrat indirect de base implique plusieurs étapes précises. Voici comment le faire manuellement en utilisant la solidité:
Écrivez le contrat de mise en œuvre : définissez la logique de base de votre application dans un contrat de solidité standard. Par exemple, créez un contrat de jeton simple avec le suivi de l'équilibre et les fonctionnalités de transfert.
Déployez le contrat de mise en œuvre : utilisez un script ou un outil de déploiement comme HardHat ou Truffle pour déployer le contrat de mise en œuvre sur le réseau souhaité. Prenez note de l'adresse du contrat.
Créez le contrat de proxy : écrivez un contrat de proxy qui stocke l'adresse de mise en œuvre et utilise
delegatecall
pour transmettre les transactions entrantes. Assurez-vous que les fonctions de secours gérent correctement les appels de fonction inconnus.
pragma solidity ^0.8.0;
proxy contractuel {address public 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) } } }
}
Déployez le contrat de proxy : déployez le proxy et transmettez l'adresse de mise en œuvre à son constructeur.
Interagir avec le proxy : toutes les interactions utilisateur doivent passer par le contrat de proxy, garantissant que la logique correcte est exécutée tout en maintenant un état persistant.
Considérations de sécurité et meilleures pratiques
La mise à niveau introduit de nouveaux vecteurs d'attaque et nécessite une manipulation minutieuse. Voici quelques considérations critiques:
Contrôle d'accès à l'administrateur : seules les entités de confiance devraient être en mesure d'initier des mises à niveau. Implémentez des portefeuilles ou des timelocks multi-signature pour éviter les modifications non autorisées.
Collisions de stockage : si les contrats de proxy et de mise en œuvre ont des variables de stockage qui se chevauchent, la corruption des données peut se produire. Utilisez des bibliothèques comme
Initializable
d'OpenZeppelin pour éviter les conflits.Test et audit : Test de systèmes proxy en profondeur dans des environnements de mise en scène. Effectuer des audits officiels avant le déploiement sur MainNet pour vous assurer qu'il n'y a pas de vulnérabilités exploitables.
Documentation et transparence : documenter clairement les procédures de mise à niveau et maintenir la transparence avec les utilisateurs sur les changements potentiels.
En adhérant aux meilleures pratiques, les développeurs peuvent atténuer les risques tout en tirant parti des avantages des contrats intelligents amélioables.
Questions fréquemment posées
Q1: Quelqu'un peut-il mettre à niveau un contrat de proxy?
Non, seules les adresses avec les privilèges administratives, généralement régis par les mécanismes de contrôle d'accès, peuvent effectuer des mises à niveau. Une bonne gestion des rôles est essentielle pour empêcher un accès non autorisé.
Q2: Est-il possible de suivre les versions passées d'un contrat de mise en œuvre?
Oui, en stockant les adresses d'implémentation historique sur chaîne ou hors chaîne, les développeurs peuvent auditer et vérifier les versions précédentes utilisées pendant des périodes spécifiques.
Q3: Que se passe-t-il si le contrat de mise en œuvre revient lors d'un appel?
Si le contrat de mise en œuvre revient, la transaction échouera et toute modification d'état apportée pendant l'appel sera annulée. Le contrat de proxy ne conserve pas le changement de logique défaillant.
Q4: Les contrats proxy sont-ils compatibles avec toutes les blockchains compatibles de la machine virtuelle Ethereum (EVM)?
Oui, car ils s'appuient sur des fonctionnalités EVM fondamentales comme delegatecall
, les contrats de proxy fonctionnent sur tous les réseaux compatibles EVM tels que Binance Smart Chain, Polygon et Avalanche.
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.
-
HYPER
$0.4795
325.96%
-
M
$0.3925
49.56%
-
PENGU
$0.0194
33.06%
-
HOSICO
$0.0639
32.40%
-
TAG
$0.0...05168
26.04%
-
BANANAS31
$0.0280
26.03%
- XRP, axélar, interopérabilité: une nouvelle ère pour la chaîne transversale Defi
- 2025-07-11 02:30:12
- Bazball contre l'Inde: les problèmes de tirage en Angleterre et les rebondissements tactiques
- 2025-07-11 02:50:13
- Memecoins plongea en 2025: est-ce la fin du battage médiatique?
- 2025-07-11 02:30:12
- Opensea, Mobile et AI: une nouvelle ère pour le trading NFT?
- 2025-07-11 02:50:13
- Le prix du Bitcoin monte à un nouveau sommet de tous les temps: qu'est-ce qui stimule la surtension?
- 2025-07-11 02:55:13
- Les Seattle SeaWolves & Orcas de Blockdag Fuels Fuels Presale Mania: Un home run pour la crypto?
- 2025-07-11 02:55:13
Connaissances connexes

Comment estimer le PNL d'une position à terme court?
Jul 10,2025 at 05:00pm
Comprendre les bases du trading à terme et du PNL Dans Futures Trading , un commerçant conclut un contrat pour acheter ou vendre un actif à un prix pr...

Quels sont les modèles de conception de contrats intelligents les plus courants?
Jul 10,2025 at 09:29pm
Introduction aux modèles de conception de contrats intelligents Les modèles de conception de contrats intelligents sont des solutions standardisées au...

Qu'est-ce qu'un régime de validation dans un contrat intelligent?
Jul 10,2025 at 05:22pm
Comprendre le concept d'un schéma de commit-révérence Dans le domaine de la blockchain et des contrats intelligents , la confidentialité et l'...

Comment un agrégateur d'agriculture de rendement utilise-t-il des contrats intelligents?
Jul 11,2025 at 02:49am
Comprendre le rôle des contrats intelligents dans les agrégateurs d'agriculture de rendement Un agrégateur d'agriculture de rendement exploite...

Un contrat intelligent peut-il interagir avec une API hors chaîne?
Jul 10,2025 at 09:42pm
Qu'est-ce qu'un contrat intelligent? Un contrat intelligent est un contrat auto-exécutant avec les termes de l'accord directement rédigé e...

Y a-t-il des futurs crypto pour les altcoins?
Jul 10,2025 at 11:14pm
Qu'est-ce qu'un robinet crypto et comment ça marche? Un robinet de crypto est une plate-forme ou une application en ligne qui récompense les u...

Comment estimer le PNL d'une position à terme court?
Jul 10,2025 at 05:00pm
Comprendre les bases du trading à terme et du PNL Dans Futures Trading , un commerçant conclut un contrat pour acheter ou vendre un actif à un prix pr...

Quels sont les modèles de conception de contrats intelligents les plus courants?
Jul 10,2025 at 09:29pm
Introduction aux modèles de conception de contrats intelligents Les modèles de conception de contrats intelligents sont des solutions standardisées au...

Qu'est-ce qu'un régime de validation dans un contrat intelligent?
Jul 10,2025 at 05:22pm
Comprendre le concept d'un schéma de commit-révérence Dans le domaine de la blockchain et des contrats intelligents , la confidentialité et l'...

Comment un agrégateur d'agriculture de rendement utilise-t-il des contrats intelligents?
Jul 11,2025 at 02:49am
Comprendre le rôle des contrats intelligents dans les agrégateurs d'agriculture de rendement Un agrégateur d'agriculture de rendement exploite...

Un contrat intelligent peut-il interagir avec une API hors chaîne?
Jul 10,2025 at 09:42pm
Qu'est-ce qu'un contrat intelligent? Un contrat intelligent est un contrat auto-exécutant avec les termes de l'accord directement rédigé e...

Y a-t-il des futurs crypto pour les altcoins?
Jul 10,2025 at 11:14pm
Qu'est-ce qu'un robinet crypto et comment ça marche? Un robinet de crypto est une plate-forme ou une application en ligne qui récompense les u...
Voir tous les articles
