Подробное объяснение видимости функций и контроля доступа в безопасных смарт-контрактах на Rust

robot
Генерация тезисов в процессе

Rust смарт-контракты养成日记(7)合约安全之计算精度

В этой статье будет рассмотрено управление доступом в смарт-контрактах на Rust с двух точек зрения:

  • Видимость доступа/вызова методов смарт-контрактов
  • Контроль доступа к привилегированным функциям/распределение полномочий и ответственности

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

Контроль видимости функций смарт-контрактов важен для защиты ключевых частей от неправильных операций. Например, в результате инцидента безопасности на бирже Bancor Network 18 июня 2020 года, из-за того что ключевая функция перевода была ошибочно установлена как public, активы пользователей на сумму 590 тысяч долларов оказались под угрозой.

!

В смарт-контрактах на Rust основными типами видимости функций являются:

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

Другой способ настройки метода internal - это определение отдельного блока кода impl Contract без модификатора #[near_bindgen].

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

По умолчанию все в Rust является private, кроме элементов в pub trait и pub enum.

!

2. Контроль доступа к привилегированным функциям

Кроме видимости функций, необходимо также установить полноценный механизм белого списка доступа на семантическом уровне. Похожие на смарт-контракты Ownable в Solidity, некоторые привилегированные функции могут вызываться только владельцем.

В контрактах на Rust можно реализовать пользовательские трейты:

ржавчина pub trait Ownable { 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); }

Таким образом, можно реализовать контроль доступа к привилегированным функциям. На основе этого также можно настроить многоуровневый белый список пользователей или несколько групп белых списков.

!

3. Дополнительные методы контроля доступа

Другие методы контроля доступа также включают:

  • Контроль момента вызова смарт-контракта
  • Механизм многофакторного вызова функций смарт-контрактов
  • Реализация управления DAO

Эти материалы будут подробно обсуждены в последующих статьях.

!

!

!

!

!

!

!

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Поделиться
комментарий
0/400
Нет комментариев
  • Закрепить