Solidityの関数にはview、及びpureの修飾子を付けることができる。
どちらにも共通しているのはstorage(ブロックチェーン)にデータを書き込むことができないということ。
では何が違うのか。それぞれの違いを忘れてしまうことがあるため、ここにまとめておく。
view修飾子
function hello() public view returns (string) {
storage(ブロックチェーン)の値を読み込むことは可能。
storage(ブロックチェーン)に値を書き込むことは不可能。
データの読み取り専用だと思えばOK。
view修飾子が付いた関数は外部から実行される場合はgasを消費しない。
同じコントラクト内のviewが付いてない関数から実行される場合はgasを消費する。
pure修飾子
function _addition(uint a, uint b) private pure returns (uint) {
return a + b;
}
storage(ブロックチェーン)の値を読み込むことも書き込むことも不可能。
引数で受け取った値のみ使用可能。
よって、pure修飾子が付いた関数も外部からの呼び出しではgasを消費しない。(同じコントラクト内からの呼び出しでは消費する)
まとめ
Solidityでのプログラミングではgasの消費をなるべく抑えるようにする必要があるため、この辺りの知識は必須だと思う。