修飾子
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プロトコル、公開鍵暗号などビットコインを支える技術について詳細に解説されています。また、サンプルコードを通して実際に手を動かして学べるので非常に濃い内容となっています。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す