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:

  • Sözleşme yönteminin erişim/çağrı görünürlüğü
  • Ayrıcalıklı fonksiyonların erişim kontrolü/sorumluluk dağılımı

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:

  • 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.

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:

  • 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.

GET0.04%
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
EthMaximalistvip
· 08-14 01:11
Ahaha, bu, yıllar önce Bancor'un patladığı o açık değil mi?
View OriginalReply0
HalfBuddhaMoneyvip
· 08-12 19:17
Wuhu, hata yazma zamanı geldi.
View OriginalReply0
GhostAddressMinervip
· 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
CoconutWaterBoyvip
· 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.
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)