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

robot
Abstract generation in progress

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

Bu makale, Rust akıllı sözleşmelerindeki yetki kontrolü sorununu iki açıdan ele alacaktır: Sözleşme yöntemlerinin görünürlüğü ve ayrıcalıklı fonksiyonların erişim kontrolü.

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

Akıllı sözleşmeler yazarken, belirli fonksiyonların kimler tarafından çağrılabileceğini kontrol etmek için fonksiyonların görünürlüğünü belirleyerek sözleşmenin kritik kısımlarını koruyabilirsiniz.

2020 yılının 18 Haziran'ında bir borsa da yaşanan güvenlik olayını örnek olarak alalım. Akıllı sözleşmelerin kritik işlev erişim kontrol yetkisinin yanlış ayarlanması, kullanıcı varlıklarının risk altında kalmasına neden oldu. Bu vaka, sözleşme işlevlerinin görünürlüğünün doğru bir şekilde ayarlanmasının önemini vurgulamaktadır.

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

  • pub fn: Bu yöntem kamuya açık olduğunu, sözleşme arayüzünün bir parçası olduğunu ve herhangi birinin dışarıdan çağırabileceğini belirtir.
  • fn: Eğer pub açıkça belirtilmemişse, bu fonksiyonun yalnızca sözleşme içinde diğer fonksiyonlar tarafından çağrılabileceği anlamına gelir.
  • pub(crate) fn: Yöntemi crate içindeki alanla sınırlı olarak çağırır.

Başka bir yöntemi içsel olarak ayarlamak, #[near_bindgen] ile süslenmemiş impl Contract kod bloğunda tanımlamaktır.

Geri çağırma fonksiyonu, function call ile çağrılabilmesi için public olarak ayarlanmalıdır. Aynı zamanda, geri çağırma fonksiyonunun rastgele çağrılmadığından emin olmak için #[private] makrosu kullanılabilir.

Dikkate değer olan, Rust'ta varsayılan olarak her şeyin özel olduğudur, yalnızca pub Trait içindeki alt öğeler ve pub Enum içindeki değişkenler varsayılan olarak açıktır.

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

Fonksiyon görünürlüğünün yanı sıra, anlam katmanında tam bir erişim kontrol beyaz liste mekanizması oluşturulması gerekmektedir. Bazı ayrıcalıklı fonksiyonlar (örneğin, sözleşme başlatma, açma/durdurma gibi) yalnızca sözleşme sahibi tarafından çağrılabilir.

Rust akıllı sözleşmelerinde, Solidity'deki onlyOwner modifikatörüne benzer bir işlevsellik gerçekleştirilebilir:

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 yöntem, ayrıcalıklı işlevlere erişim kontrolü sağlamayı mümkün kılarak, yalnızca sözleşme sahibinin bu işlevleri tam olarak çalıştırabilmesini garanti eder. Bu ilkeye dayanarak, daha karmaşık bir beyaz liste mekanizması kurulabilir ve ince gruplama erişim kontrolü gerçekleştirilebilir.

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

Yukarıda belirtilen yöntemlerin yanı sıra, Rust akıllı sözleşmelerinde diğer erişim kontrol yöntemleri de bulunmaktadır; bunlar arasında sözleşme çağrısı zaman kontrolü, çoklu imza çağrı mekanizması ve yönetim (DAO) uygulamaları gibi unsurlar yer almaktadır. Bu konular, sonraki makalelerde ayrıntılı olarak ele alınacaktır.

GET0.59%
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
  • Share
Comment
0/400
ProxyCollectorvip
· 4h ago
Yine izin ayarlarının tuzağı, kim yakalanırsa o şanssız.
View OriginalReply0
SelfRuggervip
· 17h ago
Yine bir yetki sorunu tuzağı
View OriginalReply0
AllTalkLongTradervip
· 17h ago
Hehe yine geçen yıl borsa'daki o çukura rastladık.
View OriginalReply0
PermabullPetevip
· 18h ago
İzinleri kontrol edemedim, neredeyse çöküyordu.
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)