Rust スマートコントラクト養成日記(7)契約の安全性と権限管理
本文は、Rustスマートコントラクトにおける権限管理に関する内容を2つの視点から紹介します。
1. コントラクトメソッド(関数)へのアクセス/呼び出しの可視性
2. 特権関数のアクセス制御/権限と責任の分担
1. コントラクト関数(メソッド)の可視性
スマートコントラクトを作成する際に、コントラクト関数の可視性を指定することで関数の呼び出し権限を制御できます。これは、コントラクト内の重要な部分が誤ってアクセスされたり操作されたりしないように保護するために非常に重要です。
Bancor Network取引所を例にとると、2020年6月18日に契約の重要な関数のアクセス制御権限設定ミスにより、セキュリティ事件が発生しました。この契約はSolidity言語で作成されており、関数の可視性はpublic/externalとprivate/internalに分かれています。