Контроль доступу в смартконтрактах Rust: видимість функцій контракту та привілейований доступ

robot
Генерація анотацій у процесі

Контроль доступу в смартконтрактах Rust

У цій статті буде розглянуто контроль доступу в смартконтрактах Rust з двох сторін:

  1. Видимість методів смартконтракту
  2. Контроль доступу до функцій привілеїв

1. Видимість функцій смартконтракту

У Rust смартконтрактах контроль видимості функцій є дуже важливим. Наприклад, у червні 2020 року під час інциденту безпеки на біржі Bancor Network, через помилку ключову функцію переказу було встановлено як public, що поставило під загрозу активи користувачів.

У смартконтрактах на Rust існує кілька видів видимості функцій:

  • pub fn: публічна функція, доступна для виклику ззовні контракту
  • fn: Тільки внутрішні виклики смартконтракту
  • pub(crate) fn: лише для виклику внутрішнього crate

Також можна реалізувати функцію internal, визначивши методи в блоці impl, який не позначений #[near_bindgen].

Для функції зворотного виклику потрібно встановити публічний доступ, але при цьому потрібно забезпечити, щоб вона могла бути викликана лише самим контрактом. Це можна реалізувати за допомогою макроса #[private].

Слід зазначити, що в Rust за замовчуванням усе є приватним, що відрізняється від певних старих версій Solidity, де за замовчуванням усе є публічним.

!

2. Контроль доступу до привілейованих функцій

Окрім видимості функцій, також необхідно з семантичної точки зору встановити повноцінний механізм білого списку контролю доступу.

Подібно до модифікатора onlyOwner у Solidity, ми можемо реалізувати власний трейти в Rust:

іржа публічний трейд Власник { fn assert_owner(&self) { assert_eq!(env::p redecessor_account_id(), self.get_ owner()); } fn get_owner(&self) -> AccountId; fn set_owner(&mut self, власник: AccountId); }

Цим способом можна реалізувати, що тільки owner може викликати деякі привілейовані функції.

На основі цього принципу можна налаштувати більш складний білий список для реалізації детального контролю доступу за групами.

Більше методів контролю доступу, таких як контроль часу виклику, механізм багатопідпису тощо, буде представлено в наступних статтях.

!

!

!

!

!

!

!

!

!

GET1.8%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 3
  • Поділіться
Прокоментувати
0/400
MevTearsvip
· 21год тому
bancor той я бачив, справді поганий
Переглянути оригіналвідповісти на0
OnlyOnMainnetvip
· 21год тому
Ой, досі лякає мене ситуація з Bancor.
Переглянути оригіналвідповісти на0
0xLuckboxvip
· 21год тому
Чому завжди хтось плутає налаштування прав?
Переглянути оригіналвідповісти на0
  • Закріпити