Akıllı sözleşmeler esasen bir programdır, kaçınılmaz olarak hatalar içerebilir. Çok sayıda test ve denetimden geçmiş akıllı sözleşmeler bile hala güvenlik açıkları barındırabilir. Bir saldırgan tarafından istismar edildiğinde, kullanıcı varlıklarının kaybına yol açabilir ve sonuçları ciddi olabilir. Bu nedenle, sözleşmenin yükseltilebilirliği son derece önemlidir. Bu makalede, Rust sözleşmelerinin yükseltme yöntemleri tanıtılacaktır.
Akıllı sözleşmelerin yükseltilmesinin gerekliliği
akıllı sözleşmelerin güvenlik açıklarının giderilmesi ve yeni özelliklerin eklenmesi genellikle sözleşme güncellemeleri aracılığıyla gerçekleştirilir. Bunun başlıca nedenleri şunlardır:
Güvenlik açıklarını düzeltme
Yeni özellikler ekleyin
Sözleşme performansını optimize et
Yeni iş gereksinimlerine uyum sağlamak
NEAR akıllı sözleşmeler yükseltme yöntemi
StatusMessage projesini örnek alarak, NEAR akıllı sözleşmelerinin yaygın güncelleme yöntemlerini tanıtma:
1. Sözleşme veri yapısı değiştirilmedi.
Eğer sadece sözleşme mantığını değiştirirseniz ve veri yapısı değişiklikleriyle ilgilenmezseniz, yeni kodu yeniden dağıtmak için doğrudan near deploy komutunu kullanabilirsiniz. Mevcut verilere hala normal bir şekilde erişilebilir.
2. Sözleşme veri yapısı değiştirildi
Eğer sözleşmenin veri yapısı değiştirilirse, doğrudan yeniden dağıtım, yeni veri yapısının eski duruma uymamasına ve tersine seri hale getirme hatalarına yol açar.
3. Migrate yöntemini kullanarak yükseltme
NEAR, sözleşmelerin güncellenmesine yardımcı olmak için Migrate yöntemini sunar. Yeni sözleşmeye migrate yöntemini ekleyin:
pas
#[private]
#[init(ignore_state)]
Self {
let old_state: OldStatusMessage = env::state_read().expect("başarısız");
Kendim {
taglines: old_state.records,
bios: LookupMap::new(b"b".to_vec)((,
}
}
Dağıtım sırasında migrate yöntemini çağırın:
yakın dağıtım
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}" \
--accountId durum mesajı.blocksec_yükseltme.testnet
Bu şekilde eski veriler yeni sözleşme yapısına başarıyla taşınabilir.
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.
13 Likes
Reward
13
4
Share
Comment
0/400
Anon4461
· 07-14 08:32
Bunu kim dayanabilir~
View OriginalReply0
rekt_but_not_broke
· 07-14 08:22
near da güncellendi mi?
View OriginalReply0
LightningPacketLoss
· 07-14 08:20
İki yıl Rust ile uğraştım, şimdi web3 ile uğraşmaya başladım.
View OriginalReply0
MidnightMEVeater
· 07-14 08:18
Giyotin bile bu kadar insanları enayi yerine koymak istemez, geliştirici geri dönecek mi?
Rust akıllı sözleşmeler yükseltme detayları: NEAR platform güvenlik güncelleme kılavuzu
Rust akıllı sözleşmeler yükseltme yöntemleri detaylı açıklaması
Akıllı sözleşmeler esasen bir programdır, kaçınılmaz olarak hatalar içerebilir. Çok sayıda test ve denetimden geçmiş akıllı sözleşmeler bile hala güvenlik açıkları barındırabilir. Bir saldırgan tarafından istismar edildiğinde, kullanıcı varlıklarının kaybına yol açabilir ve sonuçları ciddi olabilir. Bu nedenle, sözleşmenin yükseltilebilirliği son derece önemlidir. Bu makalede, Rust sözleşmelerinin yükseltme yöntemleri tanıtılacaktır.
Akıllı sözleşmelerin yükseltilmesinin gerekliliği
akıllı sözleşmelerin güvenlik açıklarının giderilmesi ve yeni özelliklerin eklenmesi genellikle sözleşme güncellemeleri aracılığıyla gerçekleştirilir. Bunun başlıca nedenleri şunlardır:
NEAR akıllı sözleşmeler yükseltme yöntemi
StatusMessage projesini örnek alarak, NEAR akıllı sözleşmelerinin yaygın güncelleme yöntemlerini tanıtma:
1. Sözleşme veri yapısı değiştirilmedi.
Eğer sadece sözleşme mantığını değiştirirseniz ve veri yapısı değişiklikleriyle ilgilenmezseniz, yeni kodu yeniden dağıtmak için doğrudan near deploy komutunu kullanabilirsiniz. Mevcut verilere hala normal bir şekilde erişilebilir.
2. Sözleşme veri yapısı değiştirildi
Eğer sözleşmenin veri yapısı değiştirilirse, doğrudan yeniden dağıtım, yeni veri yapısının eski duruma uymamasına ve tersine seri hale getirme hatalarına yol açar.
3. Migrate yöntemini kullanarak yükseltme
NEAR, sözleşmelerin güncellenmesine yardımcı olmak için Migrate yöntemini sunar. Yeni sözleşmeye migrate yöntemini ekleyin:
pas #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("başarısız"); Kendim { taglines: old_state.records, bios: LookupMap::new(b"b".to_vec)((, } }
Dağıtım sırasında migrate yöntemini çağırın:
yakın dağıtım
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}" \ --accountId durum mesajı.blocksec_yükseltme.testnet
Bu şekilde eski veriler yeni sözleşme yapısına başarıyla taşınabilir.
![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)
Akıllı sözleşmelerin yükseltilmesi ile ilgili güvenlik değerlendirmeleri
Yetki kontrolü - Sadece geliştiricilerin veya DAO'nun sözleşmeyi güncellemesine izin verilir
Sözleşmenin sahibi olarak DAO'yu önerin, öneri ve oylama ile yönetin.
Göç fonksiyonu #[init(ignore_state)] kullanır
Göç tamamlandıktan sonra göç fonksiyonunu silin
Yeni veri yapısı, göç sırasında başlatma işlemini tamamlar.
Sözleşme yükseltmesi karmaşık bir süreçtir, her detaya dikkat edilmesi gerekir, veri güvenliğini ve iş sürekliliğini sağlamak için.