Sözleşme fonksiyonlarının görünürlüğünü ayarlamak, fonksiyon çağrı izinlerini kontrol edebilir ve kritik bölümlerin rastgele erişime kapalı olmasını sağlar. Örneğin, Bancor Network borsasında, 2020 Haziran'ında kritik fonksiyon görünürlük ayarlarının yanlış yapılması nedeniyle bir varlık güvenlik olayı meydana geldi.
Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü aşağıdaki şekilde kontrol edilir:
pub fn: Genel fonksiyon, sözleşme dışından çağrılabilir
fn: İç fonksiyon, sadece sözleşme içinde çağrılabilir
pub(crate) fn: crate içinde çağrılmayı kısıtla
Başka bir iç yöntem ayarlama şekli, #[near_bindgen] dekoratörü kullanılmadan bağımsız bir impl Contract kod bloğu tanımlamaktır.
Geri çağırma fonksiyonu pub olarak ayarlanmalı, ancak yalnızca sözleşmenin kendisi tarafından çağrılabildiğinden emin olunmalıdır. #[private] makrosu kullanılabilir.
Rust varsayılan olarak tüm içeriği private yapar, ancak trait ve enum içindeki alt öğeler varsayılan olarak public'tir.
2. Ayrıcalıklı fonksiyonların erişim kontrolü
Fonksiyon görünürlüğünü ayarlamanın yanı sıra, bir erişim kontrol beyaz liste mekanizması da kurmak gerekir. Solidity'deki onlyOwner modifier'ına benzer şekilde, yalnızca sahibin çağırabileceği ayrıcalıklı fonksiyonlar tanımlanabilir.
Bu, ayrıcalıklı fonksiyonlara erişim kontrolü sağlamayı mümkün kılar. Çoklu kullanıcı beyaz listesi veya birden fazla beyaz liste grubu ayarlamayı daha da genişletebilirsiniz.
3. Diğer Erişim Kontrol Yöntemleri
Ayrıca gerçekleştirilebilir:
Akıllı sözleşmeler çağrısı zaman kontrolü
Akıllı sözleşmeler fonksiyon çoklu imza çağrısı mekanizması
Yönetim ( DAO ) mekanizması
Detaylı içerik için lütfen sonraki bildirimleri takip edin.
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.
20 Likes
Reward
20
4
Repost
Share
Comment
0/400
EthMaximalist
· 08-14 01:11
Ahaha, bu, yıllar önce Bancor'un patladığı o açık değil mi?
View OriginalReply0
HalfBuddhaMoney
· 08-12 19:17
Wuhu, hata yazma zamanı geldi.
View OriginalReply0
GhostAddressMiner
· 08-12 19:17
Bu akit açığı gerçekten çok basit, rastgele 276 tane hacker cüzdanına takip ettim, bancor'un o para akışında bir tuhaflık olduğunu çoktan fark etmiştim.
View OriginalReply0
CoconutWaterBoy
· 08-12 18:50
Sözleşmelerle birkaç yıldır uğraşıyorum, pub fn de sayısız kez başarısız oldu.
Rust akıllı sözleşmeler güvenlik uygulamaları: Fonksiyon görünürlüğü ve yetki kontrolü ayrıntılı incelemesi
Rust akıllı sözleşmeler yetiştirme günlüğü (7) Sözleşme güvenliği ve hesaplama hassasiyeti
Bu makalede Rust akıllı sözleşmelerindeki yetki kontrolü iki açıdan ele alınacaktır:
1. Sözleşme fonksiyonu görünürlüğü
Sözleşme fonksiyonlarının görünürlüğünü ayarlamak, fonksiyon çağrı izinlerini kontrol edebilir ve kritik bölümlerin rastgele erişime kapalı olmasını sağlar. Örneğin, Bancor Network borsasında, 2020 Haziran'ında kritik fonksiyon görünürlük ayarlarının yanlış yapılması nedeniyle bir varlık güvenlik olayı meydana geldi.
Rust akıllı sözleşmelerinde, fonksiyon görünürlüğü aşağıdaki şekilde kontrol edilir:
Başka bir iç yöntem ayarlama şekli, #[near_bindgen] dekoratörü kullanılmadan bağımsız bir impl Contract kod bloğu tanımlamaktır.
Geri çağırma fonksiyonu pub olarak ayarlanmalı, ancak yalnızca sözleşmenin kendisi tarafından çağrılabildiğinden emin olunmalıdır. #[private] makrosu kullanılabilir.
Rust varsayılan olarak tüm içeriği private yapar, ancak trait ve enum içindeki alt öğeler varsayılan olarak public'tir.
2. Ayrıcalıklı fonksiyonların erişim kontrolü
Fonksiyon görünürlüğünü ayarlamanın yanı sıra, bir erişim kontrol beyaz liste mekanizması da kurmak gerekir. Solidity'deki onlyOwner modifier'ına benzer şekilde, yalnızca sahibin çağırabileceği ayrıcalıklı fonksiyonlar tanımlanabilir.
Rust'ta benzer bir Ownable trait'i uygulanabilir:
pas pub trait Ownable { 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ı fonksiyonlara erişim kontrolü sağlamayı mümkün kılar. Çoklu kullanıcı beyaz listesi veya birden fazla beyaz liste grubu ayarlamayı daha da genişletebilirsiniz.
3. Diğer Erişim Kontrol Yöntemleri
Ayrıca gerçekleştirilebilir:
Detaylı içerik için lütfen sonraki bildirimleri takip edin.