Rust akıllı sözleşmeler güvenliği ilerisi: Yetki kontrolü ve erişim yönetimi pratiği

robot
Abstract generation in progress

Rust akıllı sözleşmeler geliştirme günlüğü (7) Sözleşme güvenliği ve yetki kontrolü

Bu makalede, Rust akıllı sözleşmelerindeki yetki kontrolünü iki açıdan ele alacağız:

  1. Sözleşme yönteminin görünürlüğü
  2. Ayrıcalık fonksiyonu erişim kontrolü

1. Sözleşme fonksiyonu görünürlüğü

Sözleşme fonksiyonlarının görünürlük kontrolü, kritik işlevleri korumak için çok önemlidir. Örneğin, Bancor Network borsa 2020 Haziran'daki güvenlik olayı, kritik transfer fonksiyonunun yanlışlıkla public olarak ayarlanması nedeniyle kullanıcı varlıklarının risk altına girmesine neden olmuştur.

Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü aşağıdaki gibidir:

  • pub fn: kamu fonksiyonu, dışarıdan çağrılabilir
  • fn: Dahili fonksiyon, yalnızca sözleşme içinde çağrılabilir
  • pub(crate) fn: crate içinde çağırma kısıtlaması

Ayrıca, fonksiyonu #[near_bindgen] ile süslenmemiş bir impl bloğunda tanımlamak, onun bir iç fonksiyon olmasını da sağlayabilir.

Geri çağırma fonksiyonları için, public olarak ayarlanmalı ancak yalnızca sözleşmenin kendisi tarafından çağrılmasını sağlanmalıdır. Bu işlevselliği #[private] makrosu ile gerçekleştirebilirsiniz.

Rust'ta varsayılan görünürlük private'tir, bu bazı Solidity sürümlerinin varsayılan public'inden farklıdır. İstisna olarak pub trait ve pub enum içindeki öğeler varsayılan olarak public'tir.

2. Ayrıcalık Fonksiyonlarının Erişim Kontrolü

Fonksiyon görünürlüğünün yanı sıra, ayrıcalıklı fonksiyonların erişimini kontrol etmek için bir beyaz liste mekanizması oluşturulması gerekir. Solidity'deki onlyOwner modifier'ına benzer şekilde, bir Ownable trait'i uygulanabilir:

pas pub trait Sahiplenebilir { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }

Bu trait'i kullanarak yalnızca owner'ın belirli ayrıcalıklı fonksiyonları çağırmasını kısıtlayabilirsiniz. Bu ilkeye dayanarak, daha karmaşık bir beyaz liste ayarlayarak ayrıntılı erişim kontrolü sağlanabilir.

3. Diğer Erişim Kontrol Yöntemleri

Sözleşme çağrısı zamanlaması kontrolü, çoklu imza çağrı mekanizması, DAO yönetimi gibi daha fazla erişim kontrol yöntemleri de dikkate alınabilir, bunlar sonraki makalelerde ayrıntılı olarak açıklanacaktı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
  • 7
  • Share
Comment
0/400
LootboxPhobiavip
· 13h ago
Kaldım kaldım, akıllı sözleşmeleri öğrenemiyorum.
View OriginalReply0
GasOptimizervip
· 13h ago
Görselleştirme ile çoklu imza gas tüketimi başka bir büyük konu.
View OriginalReply0
BridgeJumpervip
· 13h ago
Kodlar güvende mi? Yine de enjekte ediliyor.
View OriginalReply0
UncleLiquidationvip
· 13h ago
Multi-signature güvenliği fena değil.
View OriginalReply0
UncleWhalevip
· 13h ago
Güvenlik hala ciddiyetle ele alınmalı.
View OriginalReply0
BankruptcyArtistvip
· 14h ago
Multi-signature ne işe yarar, açıklar olsa bile aynı şekilde sömürülebilir.
View OriginalReply0
MEVSandwichvip
· 14h ago
İyi iş! Çoklu imza güvenli 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)