Akıllı sözleşmeler bir program türü olarak, kaçınılmaz olarak hatalar ve açıklar barındırabilir. Birçok test ve denetimden geçmesine rağmen, hala sorunlar ortaya çıkabilir. Bir açık, saldırganlar tarafından kullanıldığında, kullanıcı varlık kaybı gibi ciddi sonuçlar doğurabilir. Bu nedenle, sözleşmenin güncellenebilirliği oldukça önemlidir; bu yazıda Rust sözleşmelerinin güncellenme yöntemleri ele alınacaktır.
Ethereum'deki akıllı sözleşmeler değiştirilemez, dağıtıldıktan sonra doğrudan değiştirilemez. Genellikle aşağıdaki yollarla güncellenir:
Yeni sözleşmeyi dağıtın, DApp içindeki sözleşme adresini değiştirin. Dezavantajı, eski sözleşmenin durum verilerini taşımanız gerektiğidir.
Veri ve mantık ayrılmış mimari. Veriler durum sözleşmesinde saklanır, mantık başka bir sözleşmede uygulanır. Güncellemelerde sadece mantık sözleşmesi güncellenir.
Proxy sözleşmeleri kullanın. Proxy sözleşmeleri verileri depolar ve mantık sözleşmesini deleGatecall ile çağırır, güncelleme sırasında yalnızca mantık sözleşmesi adresini güncellemek yeterlidir.
NEAR akıllı sözleşmeler güncelleme yöntemi
StatusMessage projesini örnek alarak, NEAR akıllı sözleşmelerinin güncelleme yöntemini tanıtın:
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, doğrudan near deploy komutunu kullanarak yeni kodu yeniden dağıtabilirsiniz. Mevcut veriler korunacaktır.
2. Sözleşme 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 verilerin düzgün bir şekilde okunamamasına neden olacaktır.
3. Migrate yöntemini kullanarak güncelleme
NEAR, yükseltmeye yardımcı olmak için Migrate yöntemini sunar:
Yeni sözleşmeye migrate yöntemini ekle
Verileri taşımak için migrate yöntemini çağırarak dağıtım yapın.
Taşınma tamamlandıktan sonra yeni sözleşme işlevi normal olarak kullanılabilir.
Akıllı Sözleşmelerin Güncellenmesi Güvenlik Değerlendirmesi
Yetki kontrolü - Yükseltme fonksiyonu yalnızca sahip fonksiyonu olmalıdır.
Owner'ın DAO olarak ayarlanması önerilir, merkezileşme riskinden kaçının.
#[init(ignore_state)] kullanarak göçten önce durumu yüklememeyi sağlayın
Taşındıktan sonra taşıma fonksiyonunu sil, tekrar çağrılmasını önle
Yeni veri yapıları göç sırasında başlatılır.
Akıllı sözleşmelerin sürdürülebilirliğini artırmak için, güvenliği sağlarken sözleşmelerin güncellenebilirliğini sağlamak amacıyla uygun bir güncelleme tasarımı yapılabilir.
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.
12 Likes
Reward
12
6
Share
Comment
0/400
FlatlineTrader
· 5h ago
Açık, cüzdan işte...
View OriginalReply0
Deconstructionist
· 11h ago
Sıcak yeniden yükleme eklemeyi öneririm.
View OriginalReply0
rekt_but_not_broke
· 11h ago
Akıllı sözleşmeler aslında bu kadar kötüymüş.
View OriginalReply0
LiquidityWizard
· 12h ago
teorik olarak konuşursak, proxy desenleri sadece 73.4% daha fazla gas maliyeti ile şeker kaplı durum değişiklikleridir... smh
Rust akıllı sözleşmelerin yükseltme detayları: Ethereum'dan NEAR'a en iyi uygulamalar
Rust akıllı sözleşmeler güncelleme yöntemleri detaylı açıklama
Akıllı sözleşmeler bir program türü olarak, kaçınılmaz olarak hatalar ve açıklar barındırabilir. Birçok test ve denetimden geçmesine rağmen, hala sorunlar ortaya çıkabilir. Bir açık, saldırganlar tarafından kullanıldığında, kullanıcı varlık kaybı gibi ciddi sonuçlar doğurabilir. Bu nedenle, sözleşmenin güncellenebilirliği oldukça önemlidir; bu yazıda Rust sözleşmelerinin güncellenme yöntemleri ele alınacaktır.
Ethereum akıllı sözleşmelerinin yükseltme yöntemleri
Ethereum'deki akıllı sözleşmeler değiştirilemez, dağıtıldıktan sonra doğrudan değiştirilemez. Genellikle aşağıdaki yollarla güncellenir:
Yeni sözleşmeyi dağıtın, DApp içindeki sözleşme adresini değiştirin. Dezavantajı, eski sözleşmenin durum verilerini taşımanız gerektiğidir.
Veri ve mantık ayrılmış mimari. Veriler durum sözleşmesinde saklanır, mantık başka bir sözleşmede uygulanır. Güncellemelerde sadece mantık sözleşmesi güncellenir.
Proxy sözleşmeleri kullanın. Proxy sözleşmeleri verileri depolar ve mantık sözleşmesini deleGatecall ile çağırır, güncelleme sırasında yalnızca mantık sözleşmesi adresini güncellemek yeterlidir.
NEAR akıllı sözleşmeler güncelleme yöntemi
StatusMessage projesini örnek alarak, NEAR akıllı sözleşmelerinin güncelleme yöntemini tanıtın:
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, doğrudan near deploy komutunu kullanarak yeni kodu yeniden dağıtabilirsiniz. Mevcut veriler korunacaktır.
2. Sözleşme 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 verilerin düzgün bir şekilde okunamamasına neden olacaktır.
3. Migrate yöntemini kullanarak güncelleme
NEAR, yükseltmeye yardımcı olmak için Migrate yöntemini sunar:
Akıllı Sözleşmelerin Güncellenmesi Güvenlik Değerlendirmesi
Akıllı sözleşmelerin sürdürülebilirliğini artırmak için, güvenliği sağlarken sözleşmelerin güncellenebilirliğini sağlamak amacıyla uygun bir güncelleme tasarımı yapılabilir.