【CryptZombies】レッスン3チャプター10:View関数でガスを節約
View関数はガスコストが不要
view関数を外部から呼び出す場合、ガスは一切かかりません。(external view)
なぜかというと、view関数がブロックチェーン上でなにも変更しないからです。ただデータを参照するのみ。
詳しくいうと、関数にviewとマークすることで、その関数を実行するにはローカルのイーサリアムノードに問い合わせるだけでよく、ブロックチェーン上にトランザクションを生成する必要がないことをweb3.jsに伝えられるためです。(トランザクションを生成すると全てのノードで実行する必要があり、ガスが必要になる)
※view関数が同じコントラクトの、view関数ではない別の関数から呼び出される場合、その呼び出しにガスのコストがかかります。その別の関数はイーサリアム上にトランザクションを生成するので、各ノードの検証が必要になるためです。view関数は外部から呼び出すときのみ、無料になります。
テストの実行
手持ちのゾンビ軍団すべてを返す関数を実装したい。あとで、この関数をweb3.jsから呼んで、ユーザープロフィールページ上にゾンビ軍団を表示できるようにするためです。
①getZombiesByOwnerという名前の関数を作成せよ。引数は_ownerという名前のaddress型とする。
②これをexternal view関数とし、ガスコストを使わずにweb3.jsから呼び出せるようにするのだ。
③関数はuint[](uintの配列)を返すように設定すること。
お疲れさまでした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network