初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

【CryptZombies】レッスン3チャプター10:View関数でガスを節約

View関数はガスコストが不要

view関数外部から呼び出す場合、ガスは一切かかりません。(external view)

なぜかというと、view関数がブロックチェーン上でなにも変更しないからです。ただデータを参照するのみ。

詳しくいうと、関数にviewとマークすることで、その関数を実行するにはローカルのイーサリアムノードに問い合わせるだけでよく、ブロックチェーン上にトランザクションを生成する必要がないことをweb3.jsに伝えられるためです。(トランザクションを生成すると全てのノードで実行する必要があり、ガスが必要になる)

 

※view関数が同じコントラクトの、view関数ではない別の関数から呼び出される場合、その呼び出しにガスのコストがかかります。その別の関数はイーサリアム上にトランザクションを生成するので、各ノードの検証が必要になるためです。view関数は外部から呼び出すときのみ、無料になります。

 

テストの実行

手持ちのゾンビ軍団すべてを返す関数を実装したい。あとで、この関数をweb3.jsから呼んで、ユーザープロフィールページ上にゾンビ軍団を表示できるようにするためです。

①getZombiesByOwnerという名前の関数を作成せよ。引数は_ownerという名前のaddress型とする。

f:id:nomadomama:20181210232741p:plain

 

②これをexternal view関数とし、ガスコストを使わずにweb3.jsから呼び出せるようにするのだ。

f:id:nomadomama:20181210232821p:plain

③関数はuint[](uintの配列)を返すように設定すること。

f:id:nomadomama:20181210232900p:plain

 

お疲れさまでした!

 

 

<参考>

CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network