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

robot
Abstract generation in progress

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

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

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

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

Akıllı sözleşmeler geliştirme sürecinde, fonksiyon görünürlüğünü doğru bir şekilde ayarlamak son derece önemlidir. Bancor Network borsasının 18 Haziran 2020'deki güvenlik olayını örnek olarak ele alırsak, kritik transfer fonksiyonunun public olarak ayarlanması nedeniyle kullanıcı varlıkları riske girmiştir.

Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü kontrolü de önemlidir. NEAR SDK'sındaki #[near_bindgen] makrosu aşağıdaki görünürlük türlerini tanımlar:

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

Başka bir internal yöntem ayarlama yolu, #[near_bindgen] dekoratörü kullanılmadan ayrı bir impl Contract kod bloğu tanımlamaktır.

Geri çağırma fonksiyonu için, public olarak ayarlanması gerekir ancak yalnızca sözleşmenin kendisi tarafından çağrılmasına izin verilmelidir. Bu amaçla #[private] makrosu kullanılabilir.

Dikkat edilmesi gereken husus, Rust'ta varsayılan olarak tüm içeriklerin private olduğu, yalnızca pub Trait ve pub Enum içindeki öğelerin açık olduğudur.

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

Fonksiyon görünürlüğünün yanı sıra, tam bir erişim kontrol beyaz liste mekanizması da kurulmalıdır. Solidity'deki onlyOwner modifikatörüne benzer şekilde, Rust akıllı sözleşmelerinde de ayrıcalıklı fonksiyonların erişimini kontrol etmek için özel Trait'ler oluşturulabilir:

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 şekilde yalnızca owner'ın bazı ayrıcalıklı fonksiyonları çağırması kısıtlanabilir. Bu prensibe dayanarak, daha karmaşık beyaz listeler ve grup erişim kontrolü ayarlanabilir.

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

Başka bazı erişim kontrol yöntemleri, akıllı sözleşmelerin çağrılma zaman kontrolü, çoklu imza çağrı mekanizması, DAO uygulamaları vb. gelecekteki makalelerde ayrıntılı olarak ele alınacaktır.

GET-0.6%
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
  • 4
  • Repost
  • Share
Comment
0/400
MetaNomadvip
· 08-04 05:07
rust acemi soruyor, hangisi daha güvenli?
View OriginalReply0
NftPhilanthropistvip
· 08-04 05:02
*sigh* yine bir güvenlik karmaşası çünkü biri temel izinleri unuttu... geliştiriciler ne zaman dikkatli bir şekilde mint yapmayı öğrenecek acaba smh
View OriginalReply0
BearMarketGardenervip
· 08-04 04:57
Yetki yönetimi başarısız olursa iş biter.
View OriginalReply0
RuntimeErrorvip
· 08-04 04:45
Yetki kontrolü standart dışı, diz çökerek Debug yap
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)