【Solidity基礎】view、pure関数修飾子




修飾子

Solidity v0.4.16から新しい修飾子viewとpureが追加されました。どちらもトランザクションを発生させるような処理はできません。

修飾子をつけることで関数に明示的に制限をかけることができるのでコンパイル時に間違った処理をしていないかチェックすることができます。

以前はconstantという修飾子を使っていましたが、処理できる内容がconstatという意味にそぐわないためviewという修飾子に置き換わり現在は使われていません。

pragma solidity ^0.4.16;

contract ViewAndPure {

    uint storage a = 10;

    // これは大丈夫
    function f(uint b) view returns (uint) {
        return a * b;
    }

    // これはダメ、pureはstorageにアクセスできないのでコンパイルでエラーになる
    function f(uint b) pure returns (uint) {
        return a * b;
    }
}

view修飾子

前提としてブロックチェーンにデータを記録するような処理はできませんが、ブロックチェーンからデータを取得することはできます。

できること

  • storageの値を読むことができる

できないこと

  • storageに書き込むことができない

pure修飾子

pure修飾子はブロックチェーンへの書き込みだけでなく読み込みもできません。これはトランザクションを発生させないということです。なのでpure関数だけへのアクセスはガスコストがかからないことになります。

できること

  • 関数内は引数で受け取った値しか使えない

できないこと

  • storgeへの書き込みだけでなく読み込みもできない

まとめ

Solidityのプログラミングではガスコストをかなり意識しないといけないのでここら辺の知識はマストになります。自分もまだまだ理解が浅い部分があるので実装しながら情報を残していきたいと思います。

あと、修飾子自体は他にあるので別記事で随時まとめていきます。

おすすめ書籍

Ethereumを使ったDApps開発を学びたいなら今だとこの1冊が1番良いです!開発環境の構築から使うべきツール、フレームワーク、実装方法・注意点まで網羅的に解説されている書籍なのでおすすめです。出版も2018年1月ということでかなり新しい本で、DMM Bitcoinを作っているネクストカレンシー所属の方が書いているので信頼できます。

ビットコインとブロックチェーンの詳細をしっかりと学びたい方にはこちらの書籍が非常におすすめです。ウォレットの仕組み、楕円曲線暗号、P2Pプロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です