Méthodes de mise à niveau des smart contracts Rust et considérations de sécurité

robot
Création du résumé en cours

Discussion sur les méthodes de mise à niveau des smart contracts Rust

La mise à niveau des contrats est une étape importante dans le développement des smart contracts. En raison de la nature immuable de la blockchain, un smart contract déployé sur la chaîne ne peut pas être modifié directement. Cependant, dans les applications pratiques, les contrats nécessitent souvent des corrections de bugs ou l'ajout de nouvelles fonctionnalités, ce qui nécessite une mise à niveau. Cet article présentera les méthodes courantes de mise à niveau des smart contracts en Rust.

1. La nécessité de la mise à niveau des contrats

Les smart contracts, en tant que code programmatique, ne peuvent échapper à des vulnérabilités. Même après de nombreux tests et audits, des problèmes non découverts peuvent encore exister. Une fois qu'une vulnérabilité est exploitée de manière malveillante, cela peut entraîner des pertes d'actifs graves. Par conséquent, la capacité à être mis à jour est très importante pour les smart contracts, principalement utilisée pour:

  • Correction des vulnérabilités de sécurité détectées
  • Ajouter de nouvelles fonctionnalités
  • Optimiser la logique des contrats, améliorer les performances

2. Méthode de mise à niveau des contrats NEAR

Voici un exemple du projet StatusMessage, qui présente la méthode de mise à niveau des contrats NEAR :

2.1 La structure des données de contrat n'a pas été modifiée

Si vous ne modifiez que la logique du contrat et qu'il n'y a pas de changement de structure de données, vous pouvez utiliser directement la commande near deploy pour redéployer le nouveau code. Exemple:

bash near déployer \ --accountId statusmessage.testnet
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm

Dans ce cas, les données de l'ancien contrat seront conservées.

2.2 La structure de données du contrat a été modifiée

Si la structure de données du contrat a été modifiée, le redéploiement direct entraînera une erreur de non correspondance entre les anciennes et nouvelles structures de données. Dans ce cas, il est nécessaire d'utiliser une méthode de migration pour effectuer la mise à niveau.

Ajouter la méthode migrate dans le nouveau contrat :

rouille #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect('failed'); Self { taglines: old_state.records, bios: LookupMap::new(b'b'.to_vec)((, } }

Ensuite, appelez la méthode migrate lors du déploiement :

bash near déployer \ --wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction 'migrate'
--initArgs '{}' \ --accountId statusmessage.testnet

Cela permet de migrer les anciennes données vers la nouvelle structure de données.

![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)

3. Considérations de sécurité concernant la mise à niveau des contrats

Lors de la mise à niveau des contrats, il est important de prendre en compte les points suivants :

  • Contrôle strict des droits de mise à niveau, uniquement autorisé pour le propriétaire du contrat ou le DAO pour effectuer des mises à niveau.
  • Il est recommandé de définir le propriétaire du contrat comme DAO, pour gérer les mises à niveau par le biais de propositions et de votes.
  • Ajoutez #[init(ignore_state)] avant la fonction de migration, assurez-vous de ne pas charger l'état avant l'exécution.
  • 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.

Une conception et une exécution raisonnables du plan de mise à niveau peuvent garantir la sécurité des contrats et des actifs des utilisateurs tout en assurant la capacité de mise à niveau des contrats.

INIT-3.43%
Voir l'original
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.
  • Récompense
  • 4
  • Partager
Commentaire
0/400
HappyToBeDumpedvip
· Il y a 10h
La mise à niveau équivaut à corriger les vulnérabilités.
Voir l'originalRépondre0
NftBankruptcyClubvip
· Il y a 10h
Pas de blabla, on agit.
Voir l'originalRépondre0
NFTHoardervip
· Il y a 10h
La sécurité est en effet la plus importante.
Voir l'originalRépondre0
FundingMartyrvip
· Il y a 10h
Je choisis de m'accrocher aux frais
Voir l'originalRépondre0
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)