Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@keitashot

solidity仕様まとめ

More than 3 years have passed since last update.

solidityのコードを読んでいて頻出するコードの意味をまとめました。

データ保存領域

Storageはブロックチェーンに書き込まれ永続的に保存されるが非常にGasを消費する。Memoryはコントラクトの実行が終わると破棄される、安価。
関数外で宣言された変数(ローカル変数)と状態変数はstorageに保存される。関数の戻り値はmemoryに保存される。また外部関数の引数はcalldata(関数の引数が格納されるmemoryのようなもの)に保存される。

アクセス権限

-- private
定義されたコントラクト内でのみ参照可能。

-- internal
定義されたコントラクト及びそのコントラクトを継承したコントラクトから参照可能。変数はデフォルトでinternal。

-- external
外部からのみ参照可能。ただしthis.f()とすれば内部からも参照できる。

-- public
定義されたコントラクト及びそのコントラクトを継承したコントラクト及び外部から参照可能。関数はデフォルトでpublic。

-- externalとpublicの違い
externalの方がGasの消費が少ない。これはexternalは関数の内部呼び出しを考慮する必要がないからである。関数の内部呼び出しの際引数はmemoryに書き込まれるので、calldataから直接読み取る外部呼出しと比較してGasを消費する。
またthis.f()は非常にGasを消費するので使わないほうが良い。

関数修飾子

-- view
状態を変更しない(ブロックチェーンに書き込まない、storageに書き込まない)ことを宣言する。
storageから読み込んだり、読み込んだデータを処理することはできる。

-- pure
viewに加えてstorageからの読み込みもしないことを宣言する。つまり引数のみが処理可能。

3
Help us understand the problem. What is going on with this article?
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

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?