Help us understand the problem. What is going on with this article?

Solidityのfunction修飾子がよくわからなくなるのでメモ

More than 1 year has passed since last update.

Solidityを使っているとfunctionを定義する時にpublicやらいろいろ修飾子をつけるのですが、いっぱいあってよくわからなくなるので意味をメモ書きします。

  • internal,external,public,private
    • public コントラクト内部からも、外部メッセージでも呼び出すことができるfunction
    • external ほぼpublicと一緒だが内部でfunctionを呼び出す時にthis.(function名)と呼ばないといけない (External functions are sometimes more efficient when they receive large arrays of data.) とも書いてあるので使うといいことあるかも?
    • internal 定義したコントラクトと派生コントラクトのみで呼び出すことができる。外部呼び出し不可
    • private 定義したコントラクトのみで呼び出し可能。派生コントラクトでも呼び出し不可
  • pure
    • 状態変数を読みも書きもしないfunction
  • constant, view
    • 状態変数はreadonlyで書き込まないfunction
  • payable
    • Etherを送信できるfunction

ちなみにSolidityではmodifier構文でカスタムの修飾子を作ることができます。このあたりも開発の時はドキュメント化しないとわからなくなりますね。あとJava、C#と違って修飾子がパラメータの後ろにつけるところも間違えやすいので注意。

contract Hoge {
   address owner;

   /* トランザクション送信者がownerであることを確認するmodifier */
   modifier onlyOwner() { assert(msg.sender == owner); _; }

   function ownerOnlyFunction() public onlyOwner {
      /* owner限定で実行できるfunction */
   }
}

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away