Rust akıllı sözleşmeler güvenliği: Fonksiyon görünürlüğü ve erişim kontrolü uygulamaları

robot
Abstract generation in progress

Rust akıllı sözleşmeler yetiştirme günlüğü (7) Sözleşme güvenliği ve hesaplama hassasiyeti

Bu makale, Rust akıllı sözleşmelerindeki yetki kontrolünü iki açıdan ele alacaktır:

  1. Sözleşme yönteminin erişim/çağrı görünürlüğü
  2. Ayrıcalık fonksiyonlarının erişim kontrolü/sorumlulukların belirlenmesi

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

Akıllı sözleşmelerde işlev görünürlüğünü doğru bir şekilde ayarlamak, sözleşme güvenliğini korumak için son derece önemlidir. 18 Haziran 2020'de Bancor Network borsa platformunda meydana gelen güvenlik olayına örnek olarak, kritik transfer işlevinin yanlışlıkla public olarak ayarlanması, kullanıcı varlıklarını ciddi bir riskle karşı karşıya bırakmıştır.

Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü başlıca şu şekildedir:

  • pub fn: public fonksiyonu, herkes sözleşmenin dışından çağırabilir
  • fn: varsayılan private, yalnızca sözleşme içinde çağrılabilir
  • pub(crate) fn: crate içinde çağrılmasını kısıtla

Ayrıca, #[near_bindgen] içermeyen bir impl bloğu tanımlayarak internal yöntemleri uygulayabilirsiniz.

Geri çağırma fonksiyonu için, public olarak ayarlanmalı ancak ek bir erişim kontrolü gereklidir:

pas #[private] pub fn resolve_transfer(&mut self) { env::log_str("Bu bir geri çağırma"); }

2. Ayrıcalıklı Fonksiyon Erişim Kontrolü

Fonksiyon görünürlüğünün yanı sıra, tam bir erişim kontrol beyaz liste mekanizması da oluşturulması gerekmektedir. Solidity'deki onlyOwner modifier'ına benzer bir etkiyi sağlamak için Trait özelleştirilebilir:

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

Bu şekilde yalnızca owner'ın belirli ayrıcalık fonksiyonlarını çağırabilmesi kısıtlanabilir. Buna dayanarak daha karmaşık çoklu kullanıcı beyaz listeleri veya birden fazla beyaz liste ayarlanabilir, böylece ince grup erişim kontrolü sağlanabilir.

Rust akıllı sözleşmelerde ayrıca çağrı zaman kontrolü, çoklu imza mekanizması gibi diğer erişim kontrol yöntemleri de bulunmaktadır, bunlar sonraki makalelerde tanıtılacaktı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
  • 2
  • Share
Comment
0/400
DAOdreamervip
· 07-23 12:21
İzin listesi incelemesi sıkı olmalıdır.
View OriginalReply0
SchroedingerMinervip
· 07-23 12:21
İzin listesi iki ucu keskin bir kılıçtır
View OriginalReply0
  • Pin
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)