今回は、アクセス制限を行うスマートコントラクトを実装します。
アクセス制限の例としては、コントラクトを生成したアドレスからのみ 実行を許可するというケースが挙げられます。
この場合、トランザクション発行アドレスがコントラクトのオーナーのアドレスと一致することを確認する必要があります。
実装
アクセス制限をする場合、modifierを利用すると関数ごとにアクセス制限を実装する必要がなくなり、コードがシンプルになります。
次のような2つのコントラクトを作成します。
- Ownedコントラクト
親コントラクトです。
アクセス制御に関する関数とmodifierを定義しています。 - AccessRestrictionコントラクト
子コンストラクトです。
Ownedコントラクトを継承しています。
文字列のステートを1つ持ち、オーナーだけがそのステートを変更することができます。
[ソースコード]
1 | pragma solidity ^0.4.11; |
アクセス制限に関する処理は以下の通りです。
- modifier onlnOwner (6-9行目)
アクセス制限用のmodifierで、アクセス制限をしたい関数に付与します。 - owned (12-14行目)
オーナーを指定するための関数です。
子コンストラクトから呼ばれることを想定しているためinternalとしています。 - changeOwner (17-19行目)
オーナーを変更する場合に利用する関数です。
現オーナーからの呼び出しのみ許可します。
次回は、このアクセス制限のあるコントラクトの動作確認を行います。