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,
}
}
Güncelleme fonksiyonuna izin kontrolü eklendi, sadece owner çağırabilir.
owner'ı DAO olarak ayarlayın, öneri ve oylama ile yönetin
Göç fonksiyonuna #[init(ignore_state)] eklenmiştir.
Göç tamamlandıktan sonra göç fonksiyonunu silin.
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.
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.
6 Likes
Reward
6
3
Share
Comment
0/400
PumpBeforeRug
· 16h ago
Düşük seviye açıkları önleyemiyorsanız, çıplak koşu oynamayı neden düşünüyorsunuz?
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
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.