Rust akıllı sözleşmeler güvenliği: Yetki kontrolü ve fonksiyon görünürlüğü ayrıntılı açıklaması

robot
Abstract generation in progress

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

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

  1. Akıllı sözleşmeler yöntemlerinin erişim/çağrı görünürlüğü
  2. Ayrıcalıklı fonksiyonların erişim kontrolü/sorumlulukların dağılımı

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

Sözleşme fonksiyonlarının görünürlük ayarları, kritik kısımları kazara erişim veya manipülasyondan korumak için çok önemlidir. 2020 Haziran'da Bancor Network borsasında yaşanan güvenlik olayı örneğinde olduğu gibi, kritik transfer fonksiyonunun yanlışlıkla public olarak ayarlanması, kullanıcı varlıklarını riske atmıştır.

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

  • pub fn: public fonksiyonu, sözleşme dışından çağrılabilir
  • fn: Sadece sözleşme içinde çağrılabilir
  • pub(crate) fn: crate içinde çağrılmasını kısıtla

Başka bir internal yöntem ayarlama yolu, bağımsız bir impl Contract kod bloğu tanımlamak ve #[near_bindgen] dekoratörünü kullanmamaktır.

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

Rust'ta varsayılan olarak tüm içeriklerin private olduğunu, yalnızca pub Trait ve pub Enum içindeki öğelerin kamuya açık olduğunu unutmayın.

2. Ayrıcalıklı fonksiyonların erişim kontrolü

Fonksiyon görünürlüğü dışında, anlam katmanında tam bir erişim kontrol beyaz liste mekanizması oluşturulması gerekmektedir. Solidity'deki "onlyOwner" fonksiyonu gibi, bazı kritik fonksiyonlar yalnızca sözleşme sahibinin çağırabileceği fonksiyonlardır.

Rust akıllı sözleşmelerinde, benzer bir özel Trait 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, ayrıcalıklı işlevlerin erişim kontrolünü sağlamayı mümkün kılarak, yalnızca sözleşme sahibinin çağrı yapabilmesini garanti eder. Bu ilkeye dayanarak, daha karmaşık çoklu kullanıcı beyaz listeleri veya birden fazla beyaz liste ayarlanarak, hassas grup erişim kontrolü sağlanabilir.

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

Başka bazı erişim kontrol yöntemleri, örneğin:

  • Sözleşme çağrısı zaman kontrolü
  • Akıllı sözleşmeler fonksiyonlarının çoklu imza çağrı mekanizması
  • Yönetim(DAO)'in gerçekleştirilmesi

Bu içerikler sonraki akıllı sözleşmeler geliştirme günlüğünde tanıtılacaktır.

PUBLIC-2.99%
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
  • 5
  • Repost
  • Share
Comment
0/400
TheMemefathervip
· 08-18 14:36
Ah bu Bancor olayı da çok absürt.
View OriginalReply0
PancakeFlippavip
· 08-18 11:42
Bancor'u oynadın mı? Rekt...
View OriginalReply0
ReverseFOMOguyvip
· 08-16 02:20
bancor'un hatası gerçekten dayanılmaz.
View OriginalReply0
BoredApeResistancevip
· 08-16 02:05
Ah, bu Bancor'un bir zamanlar başına gelen o hata değil mi?
View OriginalReply0
rekt_but_not_brokevip
· 08-16 02:01
Saldırı örnekleri oldukça yeni, beni soğuk terler döktürdü.
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)