Rust akıllı sözleşmeler yükseltme en iyi uygulamaları: NEAR sözleşme örneklerinden öğrenmek

Rust akıllı sözleşmeler yükseltme kılavuzu

Akıllı sözleşmeler bir program türü olarak, kaçınılmaz olarak kusurlar barındırabilir. Çok sayıda test ve denetimden geçmesine rağmen, hala açıklar bulunabilir. Bir saldırgan tarafından kullanıldığında, kullanıcı varlık kaybına yol açabilir ve sonuçları ciddi olabilir. Bu nedenle, sözleşmenin güncellenebilirliği son derece gereklidir; esas olarak açıkları düzeltmek ve yeni özellikler eklemek için kullanılır. Bu yazıda Rust sözleşmelerinin güncelleme yöntemleri tanıtılacaktır.

NEAR akıllı sözleşmeler güncelleme yöntemleri

StatusMessage projesini örnek alarak, NEAR akıllı sözleşmelerinin yaygın güncelleme yöntemlerini tanıtıyorum.

1. Sözleşme veri yapısı değiştirilmedi.

Eğer yalnızca sözleşme mantığını değiştiriyorsanız ve veri yapısı değişikliği söz konusu değilse, yeni kodu doğrudan near deploy ile dağıtabilirsiniz:

bash yakın dağıtım
--accountId durum_mesajı.example.testnet
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm

Mevcut sözleşme verileri normal bir şekilde okunabilir.

2. Sözleşme veri yapısı değişikliği

Eğer sözleşme veri yapısı değiştirilirse, doğrudan yeniden dağıtım durumunun tersine dizilimini başarısız kılacaktır. Bu durumda, yükseltme için migrate yöntemini kullanmak gerekmektedir:

pas #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("failed"); Kendim { new_field: LookupMap::new(b"n".to_vec)((, eski_alan: eski_durum.eski_alan, } }

Dağıtım sırasında migrate yöntemini çağırın:

bash
yakın dağıtım
--wasmFile hedef/wasm32-bilinmeyen-bilinmeyen/salı/status_message.wasm
--initFunction "migrate"
--initArgs "{}"
--hesapId durum_mesajı.example.testnet

Bu, eski durumu yeni akıllı sözleşmelere taşımayı sağlar.

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

Akıllı sözleşmeler yükseltme güvenlik önerileri

  1. Güncelleme fonksiyonuna izin kontrolü eklendi, sadece owner çağırabilir.
  2. owner'ı DAO olarak ayarlayın, öneri ve oylama ile yönetin
  3. Göç fonksiyonuna #[init(ignore_state)] eklenmiştir.
  4. Göç tamamlandıktan sonra göç fonksiyonunu silin.
  5. Yeni veri yapısı, göç sırasında başlatılır.

Mantıklı yükseltmeler, sözleşmelerin güvenliğini ve ölçeklenebilirliğini korumaya yardımcı olabilir. Bu, akıllı sözleşmeler geliştirme sürecinde önemli bir aşamadır.

View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Reward
  • 3
  • Share
Comment
0/400
PumpBeforeRugvip
· 16h ago
Düşük seviye açıkları önleyemiyorsanız, çıplak koşu oynamayı neden düşünüyorsunuz?
View OriginalReply0
DegenWhisperervip
· 16h ago
Gerçekten rust, inanılmaz.
View OriginalReply0
WalletWhisperervip
· 16h ago
Yeni bir fırsat geliyor, ilginç görünüyor.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)