【Ethereum開発】トランザクション送信のコスト
EtherとWei
1Etherは100京weiです。
こちらのサイトで、単位変換の関係がわかりやすく示されています。
Ethereum Unit Converter
Gas
コードを書いて、それをサーバに展開し、リモートサーバーにコードを実行させる場合には、お金を払う必要があります。
たとえば、AWS上のEC2サーバでコードを実行させる場合に利用料金が発生しますよね。そういうものだとおもってください。
ブロックチェーンのコントラクトでも同様です。コントラクトを実行
するには、実行する人間がお金を払う必要があるのです。
Gasの料金はネットに公開されており、こちらから確認できます。
Gas Costs from Yellow Paper -- EIP-150 Revision (1e18248 - 2017-04-12) - Google スプレッドシート
シートを開いてもらえばわかりますが、G列には実際に送金によってどのようなことができるのかが書かれています。C列はGasの料金をあらわします。
たとえば、G列のAddition operationは足し算操作ですが、こちらはC列を見ると、3とあるので、3gasを支払う必要があります。Addition operationのしたはMultiplication operationで、掛け算操作で、こちらは5gas支払う必要があります。
さきほどの説明から、関数の実行にはgasをコストとして支払う必要があります。では、どれくらいのgasを支払う必要があるのかですが、この関数の場合、a+b,b-a,a*b,a==0の分だけgasを支払えばよいです。それぞれのgasの量はさきほどのスプレッドシートの定義の中からこれらの演算に対応する箇所をみつけます。そして、それらの総和がこの関数を実行するためにひつようなgasの量となるのです。
では、このdoMath関数を呼び出すためのトランザクションが実行されたとしましょう。gasPrice=300、gaslimit=10であり、これは、gasの単位ごとに300weiを支払い、gasの利用限度(関数一回の実行あたりの)が10gasですよという意味です。つまり、300wei/gasという意味です。
いま、この関数を実行すると、14gas利用することになります。この場合、gaslimitの10gasを超えているので、すべての演算が実行されることはありません。substractが実行されたところ(計6gas消費)までで、ほかのコードは実行されません。
gaslimitが20になった場合はどうなるでしょうか。この場合、14gasが消費されて、あまった6gasはあなたのもとに戻ります。
では、実際にいくら支払うのかを計算してみましょう。
このように、ブロックチェーン上のデータを変更、または格納する操作にはすべてお金がかかるということを忘れないようにしましょう。
このことから、アプリケーションによっては、とてもお金がかかるものができる可能性があることがわかりますね。
トランザクションを発行するひとはだれもがgas価格を支払う必要があることをわすれないでください。
今日はここまでです。
いかがでしたでしょうか?
ちなみに、ここからじぶんで開発を学んでいきたいひとは、
世界最大級のオンライン学習サイトUdemyから「Ethereum and Solidity: The Complete Developer's Guide」を探してみてください。
続きは随時アップしていく予定です。
ではでは!