概要

Solidityでのpureとview関数の違いについて説明しますね。これらの関数は、スマートコントラクト内でのデータの読み取りや変更に関する制約を定義します。
目次
Pure関数の定義
pure
関数は、コントラクトの状態やブロックチェーンのデータにアクセスせず、計算のみを行う関数です。例えば、単純な数学計算を行う関数はpure
として定義できます。
view
関数
view
関数は、コントラクトの状態を読み取ることができますが、状態を変更することはできません。例えば、コントラクト内の変数の値を返す関数はview
として定義できます。
Solidityのコード
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.2 <0.9.0;
contract PureView{
uint param = 3;
// この関数はコントラクトの状態を読み取らず、変更もしません
function add(uint x, uint y) public pure returns(uint){
uint result = x + y;
return result;
}
// この関数はコントラクトの状態を読み取りますが、変更しません
function addHoge(uint x, uint y) public view returns (uint result) {
result = x + y + param;
}
}
違いのまとめ
pure
関数: コントラクトの状態やブロックチェーンのデータにアクセスせず、計算のみを行う。view
関数: コントラクトの状態を読み取るが、変更はしない。
これでpure
とview
関数の違いが少し明確になったでしょうか?