-
Bitcoin
$117,652.4219
-0.22% -
Ethereum
$2,946.8053
-1.82% -
XRP
$2.7882
0.27% -
Tether USDt
$1.0003
0.02% -
BNB
$687.4021
-0.64% -
Solana
$160.0598
-3.90% -
USDC
$0.9999
0.00% -
Dogecoin
$0.1980
-3.55% -
TRON
$0.3006
1.02% -
Cardano
$0.7174
-4.48% -
Hyperliquid
$46.2398
0.86% -
Stellar
$0.3927
14.67% -
Sui
$3.3925
-4.45% -
Chainlink
$15.1056
-4.05% -
Bitcoin Cash
$510.0473
-3.68% -
Avalanche
$20.8459
-2.53% -
Hedera
$0.1990
-3.46% -
UNUS SED LEO
$9.0508
0.97% -
Shiba Inu
$0.0...01323
-2.88% -
Toncoin
$2.9675
-0.88% -
Litecoin
$92.8114
-4.44% -
Polkadot
$3.9252
-3.02% -
Monero
$329.5648
1.28% -
Dai
$0.9999
0.03% -
Ethena USDe
$1.0005
-0.01% -
Uniswap
$8.3861
-5.83% -
Pepe
$0.0...01225
-4.26% -
Bitget Token
$4.3651
-4.00% -
Aave
$299.4427
-3.70% -
Bittensor
$383.6397
-3.30%
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.
-
KNC
$0.6166
91.74%
-
XPR
$0.0046
33.70%
-
KEEP
$0.1026
28.52%
-
TOKAMAK
$1.42
26.04%
-
ALT
$0.0979
24.12%
-
FUN
$0.0163
20.05%
- Numéro d'or de Bitcoin Price: L'analyste prédit une rupture massive!
- 2025-07-13 02:30:12
- Breakout de prix XRP: analystes envisageant des mouvements explosifs
- 2025-07-13 02:50:12
- Grayscale, Ai Crypto et Top Assets: Quel est le problème?
- 2025-07-13 02:55:11
- Le plafond de 0,25 $ de Doge: la pièce de monnaie se permettra-t-elle?
- 2025-07-13 02:30:12
- Binance, Bloomberg et une menace de procès: la riposte de CZ!
- 2025-07-13 01:30:12
- Litecoin, Bonk, prévente de blocage: naviguer dans la frénésie de cryptographie
- 2025-07-13 00:30:12
Connaissances connexes

Psychologie du trading Bitcoin Contrats
Jul 13,2025 at 02:50am
Comprendre les montagnes russes émotionnelles de Bitcoin Trading à terme Bitcoin Le trading contractuel, en particulier sous forme de contrats à terme...

KYC est-il obligatoire pour le trading à terme Bitcoin?
Jul 12,2025 at 10:56pm
Comprendre KYC dans le contexte de Bitcoin Trading à terme Connaître votre client (KYC) est une exigence réglementaire que les institutions financière...

Comment le commerce de papier Bitcoin Futures?
Jul 13,2025 at 02:15am
Comprendre les bases de Bitcoin Futures Bitcoin Les contrats à terme sont des contrats financiers qui permettent aux traders de spéculer sur le prix f...

Les contrats Bitcoin sont-ils bons pour les débutants?
Jul 12,2025 at 08:14pm
Comprendre Bitcoin Contrats Bitcoin Les contrats , souvent appelés à terme Bitcoin ou contrats perpétuels , sont des dérivés financiers qui permettent...

Qu'est-ce que la marge isolée par rapport à la marge croisée?
Jul 12,2025 at 04:01pm
Comprendre la marge dans le trading des crypto-monnaies Dans le trading des crypto-monnaies, la marge fait référence au montant des fonds qu'un co...

Les contrats Bitcoin sont-ils légaux aux États-Unis?
Jul 13,2025 at 01:49am
Comprendre Bitcoin Contrats et leur statut juridique Bitcoin Les contrats se réfèrent à des accords qui sont soit libellés dans Bitcoin, soit utiliser...

Psychologie du trading Bitcoin Contrats
Jul 13,2025 at 02:50am
Comprendre les montagnes russes émotionnelles de Bitcoin Trading à terme Bitcoin Le trading contractuel, en particulier sous forme de contrats à terme...

KYC est-il obligatoire pour le trading à terme Bitcoin?
Jul 12,2025 at 10:56pm
Comprendre KYC dans le contexte de Bitcoin Trading à terme Connaître votre client (KYC) est une exigence réglementaire que les institutions financière...

Comment le commerce de papier Bitcoin Futures?
Jul 13,2025 at 02:15am
Comprendre les bases de Bitcoin Futures Bitcoin Les contrats à terme sont des contrats financiers qui permettent aux traders de spéculer sur le prix f...

Les contrats Bitcoin sont-ils bons pour les débutants?
Jul 12,2025 at 08:14pm
Comprendre Bitcoin Contrats Bitcoin Les contrats , souvent appelés à terme Bitcoin ou contrats perpétuels , sont des dérivés financiers qui permettent...

Qu'est-ce que la marge isolée par rapport à la marge croisée?
Jul 12,2025 at 04:01pm
Comprendre la marge dans le trading des crypto-monnaies Dans le trading des crypto-monnaies, la marge fait référence au montant des fonds qu'un co...

Les contrats Bitcoin sont-ils légaux aux États-Unis?
Jul 13,2025 at 01:49am
Comprendre Bitcoin Contrats et leur statut juridique Bitcoin Les contrats se réfèrent à des accords qui sont soit libellés dans Bitcoin, soit utiliser...
Voir tous les articles
