Solidityの基礎1 関数につけるpureとviewの解説

2025年4月26日

概要

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;
    }
}

github

違いのまとめ

  • pure関数: コントラクトの状態やブロックチェーンのデータにアクセスせず、計算のみを行う。
  • view関数: コントラクトの状態を読み取るが、変更はしない。

これでpureview関数の違いが少し明確になったでしょうか?

-EVM