Rust akıllı sözleşmeler yetiştirme günlüğü (9): Sözleşme yükseltme
Akıllı sözleşmeler esasen bir programdır ve kaçınılmaz olarak hatalar içerebilir. Büyük miktarda test ve denetimden geçse bile, hala güvenlik açıkları olabilir. Bir saldırgan tarafından kullanıldığında, kullanıcı varlıklarının kaybına neden olabilir ve sonuçları ciddi olabilir. Bu nedenle, sözleşmelerin güncellenebilirliği son derece gereklidir; bu makalede Rust sözleşmelerinin güncellenme yöntemleri tanıtılacaktır.
1. Sözleşme Güncellemesinin Gerekliliği
Akıllı sözleşmeler bir program olarak, kaçınılmaz olarak kusurlar içerir. Açıkların kapatılması ve yeni özelliklerin eklenmesi, sözleşme güncellemeleri ile gerçekleştirilmelidir.
2. Solidity akıllı sözleşmelerde yaygın güncelleme yöntemleri
Ethereum akıllı sözleşmelerinin değişmezliği vardır, dağıtıldıktan sonra değiştirilemez. Çözüm, yeni bir sözleşme dağıtmaktır, ancak adres değişikliği ve durum aktarımı gibi zorluklarla karşılaşılacaktır. Genellikle, veri ve mantığın ayrıldığı bir proxy sözleşme mimarisi kullanılır, sadece mantık sözleşmesi güncellenir, durum aktarımı konusunda endişelenmeye gerek kalmaz.
3. NEAR akıllı sözleşmeler yükseltme yöntemi
StatusMessage projesini örnek alarak NEAR akıllı sözleşmelerinin güncelleme yöntemini tanıtma:
3.1 Sözleşme veri yapısı değiştirilmedi
Eğer sadece sözleşme mantığını değiştiriyorsanız, veri yapısı değişikliği içermiyorsa, yeni kodu yeniden dağıtmak için doğrudan near deploy kullanabilirsiniz. Mevcut veriler hala normal şekilde okunabilir.
3.2 Akıllı sözleşmeler veri yapısı değiştirildi
Eğer veri yapısı değiştirilirse, doğrudan yeniden dağıtım yapmak eski ve yeni veri yapılarının uyumsuz olmasına ve mevcut verilerin okunamamasına neden olacaktır.
3.3 Migrate yöntemini kullanarak yükseltme
NEAR, akıllı sözleşmelerin güncellenmesine yardımcı olmak için Migrate yöntemini sağlar. Yeni akıllı sözleşmeye migrate yöntemini ekleyin:
pas
#[private]
#[init(ignore_state)]
Self {
let old_state: OldStatusMessage = env::state_read().expect('failed');
Kendisi {
taglines: old_state.records,
bios: LookupMap::new(b'b'.to_vec)((,
}
}
Veri göçünü tamamlamak için dağıtım sırasında migrate yöntemini çağırmak yeterlidir.
4. Akıllı sözleşmelerin yükseltme güvenlik değerlendirmeleri
Yetki kontrolü yükseltme, genellikle yalnızca geliştiriciler veya DAO tarafından yapılabilir.
Sözleşme sahibini DAO olarak ayarlamayı öneririz, öneri ve oylama ile yönetim.
Fonksiyon göçünden önce #[init)ignore_state)] ekleyin
Taşınma işlemi tamamlandıktan sonra taşınma fonksiyonunu silin
Göç sırasında yeni veri yapısı başlatıldı.
Sözleşme yükseltmesi, sözleşmenin güvenliğini ve fonksiyonel iterasyonunu sağlamak için önemli bir yöntemdir, dikkatli bir şekilde tasarlanmalı ve uygulanmalıdı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.
10 Likes
Reward
10
4
Share
Comment
0/400
SandwichTrader
· 19h ago
Ödev kopyalamaya devam mı? Başka bir sözleşme ile yeniden başladı.
Rust akıllı sözleşmeler yükseltmesi: Güvenlik ve ölçeklenebilirliği sağlamak
Rust akıllı sözleşmeler yetiştirme günlüğü (9): Sözleşme yükseltme
Akıllı sözleşmeler esasen bir programdır ve kaçınılmaz olarak hatalar içerebilir. Büyük miktarda test ve denetimden geçse bile, hala güvenlik açıkları olabilir. Bir saldırgan tarafından kullanıldığında, kullanıcı varlıklarının kaybına neden olabilir ve sonuçları ciddi olabilir. Bu nedenle, sözleşmelerin güncellenebilirliği son derece gereklidir; bu makalede Rust sözleşmelerinin güncellenme yöntemleri tanıtılacaktır.
1. Sözleşme Güncellemesinin Gerekliliği
Akıllı sözleşmeler bir program olarak, kaçınılmaz olarak kusurlar içerir. Açıkların kapatılması ve yeni özelliklerin eklenmesi, sözleşme güncellemeleri ile gerçekleştirilmelidir.
2. Solidity akıllı sözleşmelerde yaygın güncelleme yöntemleri
Ethereum akıllı sözleşmelerinin değişmezliği vardır, dağıtıldıktan sonra değiştirilemez. Çözüm, yeni bir sözleşme dağıtmaktır, ancak adres değişikliği ve durum aktarımı gibi zorluklarla karşılaşılacaktır. Genellikle, veri ve mantığın ayrıldığı bir proxy sözleşme mimarisi kullanılır, sadece mantık sözleşmesi güncellenir, durum aktarımı konusunda endişelenmeye gerek kalmaz.
3. NEAR akıllı sözleşmeler yükseltme yöntemi
StatusMessage projesini örnek alarak NEAR akıllı sözleşmelerinin güncelleme yöntemini tanıtma:
3.1 Sözleşme veri yapısı değiştirilmedi
Eğer sadece sözleşme mantığını değiştiriyorsanız, veri yapısı değişikliği içermiyorsa, yeni kodu yeniden dağıtmak için doğrudan near deploy kullanabilirsiniz. Mevcut veriler hala normal şekilde okunabilir.
3.2 Akıllı sözleşmeler veri yapısı değiştirildi
Eğer veri yapısı değiştirilirse, doğrudan yeniden dağıtım yapmak eski ve yeni veri yapılarının uyumsuz olmasına ve mevcut verilerin okunamamasına neden olacaktır.
3.3 Migrate yöntemini kullanarak yükseltme
NEAR, akıllı sözleşmelerin güncellenmesine yardımcı olmak için Migrate yöntemini sağlar. Yeni akıllı sözleşmeye migrate yöntemini ekleyin:
pas #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect('failed'); Kendisi { taglines: old_state.records, bios: LookupMap::new(b'b'.to_vec)((, } }
Veri göçünü tamamlamak için dağıtım sırasında migrate yöntemini çağırmak yeterlidir.
4. Akıllı sözleşmelerin yükseltme güvenlik değerlendirmeleri
Sözleşme yükseltmesi, sözleşmenin güvenliğini ve fonksiyonel iterasyonunu sağlamak için önemli bir yöntemdir, dikkatli bir şekilde tasarlanmalı ve uygulanmalıdır.