Méthodes de mise à niveau des smart contracts Rust
Les smart contracts, en tant que type de programme, présentent inévitablement des défauts et des vulnérabilités. Même après de nombreux tests et audits, des problèmes peuvent encore survenir. Une fois qu'une vulnérabilité est exploitée par un attaquant, cela peut entraîner des pertes d'actifs pour les utilisateurs et d'autres conséquences graves. Par conséquent, la capacité de mise à niveau des contrats est très importante, cet article présentera les méthodes de mise à niveau des contrats Rust.
Méthodes de mise à niveau des contrats Ethereum
Les smart contracts sur Ethereum ont une immutabilité, une fois déployés, ils ne peuvent pas être modifiés directement. On utilise généralement les méthodes suivantes pour les mettre à jour :
Déployer un nouveau contrat, modifier l'adresse du contrat dans l'application décentralisée (DApp). L'inconvénient est qu'il faut migrer les données d'état de l'ancien contrat.
Architecture de séparation des données et de la logique. Les données sont stockées dans le contrat d'état, la logique est mise en œuvre dans un autre contrat. Lors de la mise à niveau, il suffit de mettre à jour le contrat logique.
Utiliser des contrats intelligents. Les contrats intelligents stockent des données et appellent le contrat logique via deleGatecall, il suffit de mettre à jour l'adresse du contrat logique lors de la mise à niveau.
Méthodes de mise à niveau des contrats NEAR
Prenons l'exemple du projet StatusMessage pour présenter la méthode de mise à niveau des contrats NEAR :
1. La structure des données des contrats n'a pas été modifiée
Si vous ne modifiez que la logique du contrat sans changer la structure des données, vous pouvez directement utiliser la commande near deploy pour redéployer le nouveau code. Les données existantes seront conservées.
2. La structure de données du contrat a été modifiée
Si la structure de données est modifiée, le redéploiement direct entraînera une incompatibilité entre les anciennes et les nouvelles structures de données, rendant la lecture des données impossible.
3. Utiliser la méthode Migrate pour mettre à niveau
NEAR propose la méthode Migrate pour aider à la mise à niveau :
Ajouter la méthode migrate dans le nouveau contrat
Appelez la méthode migrate lors du déploiement pour effectuer la migration des données.
Après la migration, la fonctionnalité du nouveau contrat peut être utilisée normalement.
Considérations de sécurité pour la mise à niveau des contrats
Contrôle d'accès - La fonction de mise à niveau doit être une fonction only owner.
Il est recommandé de définir le propriétaire comme DAO, afin d'éviter les risques de centralisation.
Utilisez #[init(ignore_state)] pour vous assurer qu'aucun état n'est chargé avant l'exécution de la migration.
Supprimer la fonction de migration après la migration pour éviter les appels répétés.
La nouvelle structure de données est initialisée lors de la migration.
En concevant raisonnablement un plan de mise à niveau, il est possible d'assurer la capacité de mise à niveau des contrats tout en garantissant la sécurité, ce qui améliore la maintenabilité à long terme du projet.
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
10 J'aime
Récompense
10
5
Partager
Commentaire
0/400
Deconstructionist
· Il y a 3h
Il est conseillé d'ajouter un rechargement à chaud.
Voir l'originalRépondre0
rekt_but_not_broke
· Il y a 3h
Les smart contracts sont vraiment si trompeurs.
Voir l'originalRépondre0
LiquidityWizard
· Il y a 3h
théoriquement parlant, les modèles de proxy ne sont que des mutations d'état enrobées de sucre avec 73,4 % de frais de gas supplémentaires... smh
Voir l'originalRépondre0
SchrödingersNode
· Il y a 3h
Encore une fois, la vieille opération de modification de l'Adresse du contrat.
Comprendre la mise à niveau des smart contracts Rust : meilleures pratiques de Ethereum à NEAR
Méthodes de mise à niveau des smart contracts Rust
Les smart contracts, en tant que type de programme, présentent inévitablement des défauts et des vulnérabilités. Même après de nombreux tests et audits, des problèmes peuvent encore survenir. Une fois qu'une vulnérabilité est exploitée par un attaquant, cela peut entraîner des pertes d'actifs pour les utilisateurs et d'autres conséquences graves. Par conséquent, la capacité de mise à niveau des contrats est très importante, cet article présentera les méthodes de mise à niveau des contrats Rust.
Méthodes de mise à niveau des contrats Ethereum
Les smart contracts sur Ethereum ont une immutabilité, une fois déployés, ils ne peuvent pas être modifiés directement. On utilise généralement les méthodes suivantes pour les mettre à jour :
Déployer un nouveau contrat, modifier l'adresse du contrat dans l'application décentralisée (DApp). L'inconvénient est qu'il faut migrer les données d'état de l'ancien contrat.
Architecture de séparation des données et de la logique. Les données sont stockées dans le contrat d'état, la logique est mise en œuvre dans un autre contrat. Lors de la mise à niveau, il suffit de mettre à jour le contrat logique.
Utiliser des contrats intelligents. Les contrats intelligents stockent des données et appellent le contrat logique via deleGatecall, il suffit de mettre à jour l'adresse du contrat logique lors de la mise à niveau.
Méthodes de mise à niveau des contrats NEAR
Prenons l'exemple du projet StatusMessage pour présenter la méthode de mise à niveau des contrats NEAR :
1. La structure des données des contrats n'a pas été modifiée
Si vous ne modifiez que la logique du contrat sans changer la structure des données, vous pouvez directement utiliser la commande near deploy pour redéployer le nouveau code. Les données existantes seront conservées.
2. La structure de données du contrat a été modifiée
Si la structure de données est modifiée, le redéploiement direct entraînera une incompatibilité entre les anciennes et les nouvelles structures de données, rendant la lecture des données impossible.
3. Utiliser la méthode Migrate pour mettre à niveau
NEAR propose la méthode Migrate pour aider à la mise à niveau :
Considérations de sécurité pour la mise à niveau des contrats
En concevant raisonnablement un plan de mise à niveau, il est possible d'assurer la capacité de mise à niveau des contrats tout en garantissant la sécurité, ce qui améliore la maintenabilité à long terme du projet.