Rustスマートコントラクト安全:アクセス制御と権限管理の詳細解説

robot
概要作成中

Rust スマートコントラクト養成日記(7)契約の安全性におけるアクセス制御

本文は、Rustスマートコントラクトにおける権限管理を2つの視点から紹介します:

  1. コントラクトメソッドの可視性
  2. 特権関数のアクセス制御

1. コントラクト関数の可視性

Rustのスマートコントラクトにおいて、関数の可視性制御は非常に重要です。NEAR SDKの#[near_bindgen]マクロは、以下のいくつかの可視属性を定義しています:

  • pub fn: 公開関数、コントラクト外部から呼び出すことができます
  • fn: 内部関数、契約内部でのみ呼び出すことができる
  • pub(crate) fn: クレート内からの通話を制限する

さらに、独立したimpl Contractブロックを通じて内部メソッドを定義できます:

さび #[near_bindgen] impl コントラクト { pub fn increment(&mut self) { self.internal_increment(); } }

impl コントラクト { pub fn internal_increment(&mut self) { self.counter += 1; } }

コールバック関数については、pubに設定し、#[private]マクロを使用して、コントラクト自身のみが呼び出せるようにする必要があります:

さび #[near_bindgen] impl コントラクト { #[private] pub fn resolve_transfer(&mut self) { // コールバックロジック } }

!

2. 特権関数のアクセス制御

関数の可視性に加えて、アクセス制御ホワイトリストメカニズムを構築する必要があります。Traitをカスタマイズして実装できます:

さび pub トレイト Ownable { fn assert_owner(&self) { assert_eq!(env::p redecessor_account_id(), self.get_ owner()); } fn get_owner(&self) -> AccountId; fn set_owner(&mut自己、所有者:AccountId); }

特権関数内でassert_owner()を呼び出すことで、オーナーのみが実行できるように制限できます:

さび impl コントラクト { pub fn privileged_function(&mut self) { self.assert_owner(); 特権操作 } }

これにより、基本的なホワイトリストメカニズムを実現でき、さらに拡張して複数のユーザーや複数のホワイトリストなどの複雑なアクセス制御を実現することができます。

契約の安全性は、呼び出しタイミングの制御やマルチシグ機構など、複数の側面から考慮する必要があります。詳細は今後の記事で紹介します。

!

!

!

!

!

!

!

!

!

GET1.76%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 9
  • 共有
コメント
0/400
GasWastervip
· 07-24 14:55
また難しいことを研究しているのね
原文表示返信0
rugdoc.ethvip
· 07-24 12:22
これはあまりにも陳腐すぎるのではないでしょうか。
原文表示返信0
GateUser-9ad11037vip
· 07-24 03:37
ブラックリスト機能を補充しますか~
原文表示返信0
DefiPlaybookvip
· 07-23 10:17
総合データによると、訪問制御は依然として契約の脆弱性トップ3に入っています。
原文表示返信0
SeeYouInFourYearsvip
· 07-21 20:27
rustはこんな感じだね
原文表示返信0
OnchainDetectivevip
· 07-21 20:27
権限管理が形骸化している 早くバックドアを調べるべきだ
原文表示返信0
rekt_but_resilientvip
· 07-21 20:21
この契約の安全メカニズムは水だ
原文表示返信0
DarkPoolWatchervip
· 07-21 20:13
書いてはいるが、私は寝てしまった。
原文表示返信0
MEVSandwichVictimvip
· 07-21 20:11
重要なポイントを強調しましたね。
原文表示返信0
もっと見る
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)