Özellik fonksiyonunda assert_owner() çağrısı yapmak, yalnızca sahibin yürütmesine izin vermek için kısıtlayabilir:
pas
impl Sözleşme {
pub fn ayrıcalıklı_fonksiyon(&mut kendisi) {
self.assert_owner();
// Ayrıcalıklı işlemler
}
}
Bu, temel bir beyaz liste mekanizmasını gerçekleştirmeyi sağlar ve ayrıca çoklu kullanıcılar, çoklu beyaz listeler gibi karmaşık erişim kontrollerinin daha da genişletilmesini sağlar.
Sözleşmenin güvenliği, çağrı zamanının kontrolü, çoklu imza mekanizması gibi birçok açıdan dikkate alınmalıdır ve bu konular sonraki makalelerde ayrıntılı olarak ele alınacaktır.
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.
16 Likes
Reward
16
9
Share
Comment
0/400
GasWaster
· 07-24 14:55
Yine derin konuları araştırıyorsun.
View OriginalReply0
rugdoc.eth
· 07-24 12:22
Bu çok klasik bir konu değil mi?
View OriginalReply0
GateUser-9ad11037
· 07-24 03:37
Siyah liste mekanizmasını biraz güncelleyelim mi~
View OriginalReply0
DefiPlaybook
· 07-23 10:17
Kapsamlı veriler, ziyaret kontrolünün sözleşme açıklarının ilk 3'ünde yer aldığını gösteriyor.
View OriginalReply0
SeeYouInFourYears
· 07-21 20:27
rust böyle bir şeydir.
View OriginalReply0
OnchainDetective
· 07-21 20:27
Yetki kontrolü göstermelik, arka kapıları kontrol etmenin zamanı geldi.
Rust akıllı sözleşmeler güvenliği: Erişim kontrolü ve yetki yönetimi ayrıntılı açıklaması
Rust akıllı sözleşmeler yetiştirme günlüğü (7) Sözleşme güvenliği ve erişim kontrolü
Bu makalede Rust akıllı sözleşmelerinde erişim kontrolünün iki yönü ele alınacaktır:
1. Sözleşme Fonksiyonu Görünürlüğü
Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü kontrolü çok önemlidir. NEAR SDK'da #[near_bindgen] makrosu aşağıdaki görünür özellikleri tanımlar:
Ayrıca, iç yöntemleri tanımlamak için bağımsız bir impl Contract bloğu kullanılabilir:
pas #[near_bindgen] impl Sözleşme { pub fn increment(&mut self) { self.internal_increment(); } }
impl Sözleşme { pub fn internal_increment(&mut self) { self.counter += 1; } }
Geri çağırma fonksiyonu için, yalnızca sözleşme tarafından çağrılmasını sağlamak için pub olarak ayarlanmalı ve #[private] makrosu kullanılmalıdır:
pas #[near_bindgen] impl Sözleşme { #[private] pub fn resolve_transfer(&mut self) { // Geri çağırma mantığı } }
2. Ayrıcalıklı fonksiyonların erişim kontrolü
Fonksiyon görünürlüğünün yanı sıra, erişim kontrol beyaz liste mekanizması da oluşturulmalıdır. Özelleştirilebilir Trait uygulaması yapılabilir:
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); }
Özellik fonksiyonunda assert_owner() çağrısı yapmak, yalnızca sahibin yürütmesine izin vermek için kısıtlayabilir:
pas impl Sözleşme { pub fn ayrıcalıklı_fonksiyon(&mut kendisi) { self.assert_owner(); // Ayrıcalıklı işlemler } }
Bu, temel bir beyaz liste mekanizmasını gerçekleştirmeyi sağlar ve ayrıca çoklu kullanıcılar, çoklu beyaz listeler gibi karmaşık erişim kontrollerinin daha da genişletilmesini sağlar.
Sözleşmenin güvenliği, çağrı zamanının kontrolü, çoklu imza mekanizması gibi birçok açıdan dikkate alınmalıdır ve bu konular sonraki makalelerde ayrıntılı olarak ele alınacaktır.