Rust akıllı sözleşmeler yetki kontrolü: fonksiyon görünürlüğü ve ayrıcalıklı erişim yönetimi

Rust akıllı sözleşmelerdeki yetki kontrolü

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

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

Sözleşme Fonksiyonu Görünürlüğü

Rust akıllı sözleşmelerinde, fonksiyon görünürlüğünün kontrolü son derece önemlidir. 2020 yılında Bancor Network borsasında meydana gelen güvenlik olayını örnek olarak ele alırsak, kritik transfer fonksiyonunun yanlışlıkla public olarak ayarlanması, kullanıcı varlıklarını riske atmıştır.

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

  • pub fn: kamu 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ılmayı kısıtla

Ayrıca, işlevi #[near_bindgen] ile işaretlenmemiş bir impl bloğunda tanımlamak, onu iç işlev olarak ayarlamanızı da sağlar.

Geri çağırma işlevi için, kamu olarak ayarlanması gerekir ancak aynı zamanda yalnızca sözleşmenin kendisi tarafından çağrılmasını sınırlamak gerekir. Bunu gerçekleştirmek için #[private] makrosunu kullanabilirsiniz.

Dikkat edilmesi gereken bir nokta, Rust'ta varsayılan olarak tüm içeriğin özel olduğudur, yalnızca pub Trait ve pub Enum içindeki öğeler hariç.

Ayrıcalıklı Fonksiyonların Erişim Kontrolü

Fonksiyon görünürlüğünün yanı sıra, anlamsal düzeyde tam bir erişim kontrol mekanizması oluşturulması gerekmektedir. Solidity'deki onlyOwner modifier'ına benzer şekilde, Rust'ta benzer bir trait tanımlayabiliriz:

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); }

Böyle bir trait kullanarak, ayrıcalıklı fonksiyonlara erişim kontrolü sağlanabilir ve yalnızca sözleşme sahibinin bu fonksiyonları çağırmasına izin verilir.

Bu ilkeye dayanarak, daha karmaşık bir trait özelleştirerek çoklu kullanıcı beyaz listesi veya birden fazla beyaz liste grubunun ince erişim kontrolünü sağlayabiliriz.

Bunun yanı sıra, farklı senaryoların güvenlik ihtiyaçlarını karşılamak için çağrı zaman kontrolü, çoklu imza mekanizması gibi daha fazla erişim kontrol yöntemi de uygulanabilir.

GET-0.28%
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
  • 6
  • Repost
  • Share
Comment
0/400
WalletManagervip
· 08-01 21:48
Yetki kontrolü daha katı olmalı.
View OriginalReply0
HashBrowniesvip
· 08-01 05:29
Erişim kontrolü gerçekten harika.
View OriginalReply0
GasFeeCriervip
· 07-30 19:25
Erişim izinleri dikkatlice yapılandırılmalıdır.
View OriginalReply0
TeaTimeTradervip
· 07-30 19:21
Yetki kontrolü gerçekten zor.
View OriginalReply0
CoinBasedThinkingvip
· 07-30 19:07
Çok fazla güvenlik açığı var gibi.
View OriginalReply0
NotFinancialAdvicevip
· 07-30 18:57
Gerçekten çok faydalı içerik
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)