Détails de la mise à niveau des contrats intelligents Rust : Guide de mise à jour de sécurité de la plateforme NEAR

robot
Création du résumé en cours

Méthodes de mise à niveau des smart contracts en Rust

Les smart contracts sont essentiellement des programmes, et il est inévitable qu'ils présentent des défauts. Même les smart contracts ayant subi de nombreux tests et audits peuvent encore contenir des vulnérabilités. Une fois exploitées par des attaquants, cela peut entraîner des pertes d'actifs pour les utilisateurs, avec des 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.

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

La correction des vulnérabilités des smart contracts et l'ajout de nouvelles fonctionnalités nécessitent souvent une mise à niveau du contrat. Les principales raisons sont :

  1. Corriger les vulnérabilités de sécurité
  2. Ajouter de nouvelles fonctionnalités
  3. Optimiser les performances des contrats
  4. S'adapter aux nouvelles exigences commerciales

Méthodes de mise à niveau des contrats NEAR

Prenons l'exemple du projet StatusMessage pour introduire les méthodes courantes de mise à niveau des contrats NEAR :

1. La structure de données du 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 dans la structure des données, vous pouvez redéployer le nouveau code directement en utilisant la commande near deploy. Les données existantes restent accessibles normalement.

2. La structure des données du contrat a été modifiée

Si la structure de données du contrat est modifiée, le redéploiement direct entraînera une incompatibilité de la nouvelle structure de données avec l'état ancien, provoquant une erreur de désérialisation.

3. Utiliser la méthode Migrate pour mettre à niveau

NEAR propose la méthode Migrate pour aider à la mise à niveau des contrats. Ajoutez 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)((, } }

Appel de la méthode migrate lors du déploiement :

déployer près
--wasmFile cible/wasm32-inconnu-inconnu/libération/status_message.wasm \ --initFunction "migrate"
--initArgs "{}"
--accountId statusmessage.blocksec_upgrade.testnet

Cela permettra de migrer avec succès les anciennes données vers la nouvelle structure de contrat.

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

Considérations de sécurité pour la mise à niveau des contrats

  1. Contrôle des permissions - Autoriser uniquement les développeurs ou le DAO à mettre à jour les contrats.

  2. Il est recommandé de définir le propriétaire du contrat comme DAO, géré par des propositions et des votes.

  3. La fonction de migration utilise #[init(ignore_state)]

  4. Supprimez la fonction de migration après la migration.

  5. La nouvelle structure de données est initialisée lors de la migration.

La mise à niveau des contrats est un processus complexe qui nécessite une attention particulière à chaque détail pour garantir la sécurité des données et la continuité des activités.

NEAR-1.26%
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
Anon4461vip
· 07-14 08:32
Qui peut supporter ça~
Voir l'originalRépondre0
rekt_but_not_brokevip
· 07-14 08:22
Le près a-t-il aussi été mis à jour ?
Voir l'originalRépondre0
LightningPacketLossvip
· 07-14 08:20
Après avoir travaillé pendant deux ans avec Rust, je m'attaque maintenant au Web3.
Voir l'originalRépondre0
MidnightMEVeatervip
· 07-14 08:18
La guillotine n'ose même pas prendre les gens pour des idiots. Les développeurs reviendront-ils ?
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)