solidityにおいて、functionの実行制御に使われるmodifierの使い方について徹底解説していきたいと思います。
soldiity初心者向けの記事です。
modifierとは
modifierはsolidityの文法のひとつで、functionの実行権限を特定のコントラクトや、アカウントにのみ限定したいときに使用します。
具体的には、下記のサンプルコードのように使うことができます。
modifierは、solidity公式のサンプルコードでも頻繁に使われているので、こちらも参考になるかもしれません。
下記のサンプルコードでは、コンストラクタで、コントラクトをデプロイしたアカウントを管理者として保存し、test functionを実行できる、transactionの実行アカウントを管理者アカウントのみに制限しています。
<スポンサードリンク>
サンプルコード
pragma solidity ^0.4.24; contract Example { address private admin; constructor() public { admin = msg.sender; } modifier onlyAdmin { require(msg.sender == admin); _; } function test(uint num1, uint num2) public constant onlyAdmin returns(bool){ return num1 >= num2; } }
<スポンサードリンク>
サンプルコードでのmodifierの使われ方と動き
modifierは、functionの実行前に実行されます。
サンプルコードでは、コンストラクタでデプロイしたアカウントを管理者として登録し、
test functionにonlyAdminの修飾子をつけることで、testメソッドの実行権限を制御しています。
具体的な動きとしては、msg.sender(transactionの実行者)がadminの場合、test functionを実行し、adminでない場合、revertが発生します。
modifierを使うことで、上記のサンプルコードのように、functionに実行権限を与えることができ、セキュリティの高いスマートコントラクトの実装ができるようになります。
参考
【solidity】業務ロジックとデータロジックを分断するコントラクト設計
Solidity(Remix)とgitを連携させ、Ethereumの開発をする
Ethereum プライベートネットワークでgeth起動時にnodeを自動接続する方法
【初心者向け】solidity基礎 modifierの使い方を徹底解説