前提知識
- Ethereumとは何かの基礎知識
- ether, wei (通貨単位)
- weiはetherの最小単位
- 1 wei = 0.000000000000000001 ether
- マイナー(採掘者): トランザクションを処理したり、プログラムを実行したりするコンピュータ
Gas(ガス)とは?
- Ethereumにて、プログラム実行に必要な燃料(ガソリン)
- トランザクションを送ったり、コントラクトをデプロイしたり、プログラムを実行するのに必要なもの
- 実行するためのガス消費の単位(Unit)
- 例えるなら、ガソリンのリッター単位。20 gasは、20リットルのようなもの。
- このプログラムを動作させるのに、20リットル(gas)が必要という単位。値段(ETH)ではない。
Gas Fee (ガス手数料)
- トランザクションやプログラムを実行するのに必要な手数料
- その作業をしてくれるマイナーに支払われる
- 例えば、トランザクションを送るのに500 Gasが必要
- その他の手数料の料金表は以下の通り
Gas Price (ガスの料金)とは?
- 1 Gasの値段(wei)
- 何wei/Gas か?の値
- Gas Priceは、需要によって変動する
- マイナー(採掘者)は、Gas Priceが低いトランザクションを無視する自由がある
- 通常、マイナー(採掘者)は、Gas Priceが高いものから実行していく
- 現在、1 Gasは 10 szabo = 0.00001 ether = 0.0000014096 USD位
- 正確な現在のGas Priceは、以下サイトなどでチェックして下さい
- 正確な現在の値段は、Ether単位コンバータでチェックして下さい
- 平均GasPriceのチャート(履歴): Ethereum Average GasPrice Chart
車のガソリンで例えると
20リットルの価格は、120円/リットルなら2400円といった感じで、20 gas * ガスの価格(gasPrice)で支払うetherの額が決まる
トランザクション手数料は?
では、トランザクションの手数料はいくらでしょうか?
- トランザクションのガス手数料: 500 Gas
- Gas Price: 10 szabo (だとする)
- 500 Gas x 10 szabo = 5000 szabo (≒ 0.0007 USD)
トランザクションでは、ガスを多めに付けて、利用されなかった分は送信者へ戻る。
Fee = (startGas – remainingGas) × gas price
Refund = remainingGas x gas price
estimageGasとは?
事前にgasを見積もるためのweb3.jsのメソッド
web3.eth.estimateGas(callObject [, callback])
Gas Limitとは?
Gas Limitには2つある。
- トランザクション・ガスリミット
- ブロック・ガスリミット
1. トランザクション・ガスリミットとは?
- Gasの最大値
- バグがあるプログラムが実行され続け、etherが無くならないようにあなたを守るためのもの
- トランザクションを実行するために支払える最大のweiの量
- 送金トランザクションに必要なtransaction gas limitは、21,000?
2. ブロック・ガスリミットとは?
ブロックに入るトランザクション数を制限するための数値。
- ブロックに入るトランザクションの量は、block gas limitにより制限される (Bitcoinにおけるブロックサイズに近い。Ethereumの場合は、この値が変動する。)
トランザクションの価格決定
- 現在、トランザクションは、21,000 gasを利用する
- Homesteadに移行した時にデフォルトのgas priceが50 Shannon から20 Shannonと60%引きに変更になった。
Frontierでは
0.00000005 * 9 * 21000 = 0.00945 USD / transaction
Homesteadでは
0.00000002 * 9 * 21000 = 0.00378 USD / transaction
callの場合
ローカルのgethから情報を取ってくるので、feeは要らない。が、処理が大きい場合は、gasを指定しないと Out of Gasになることがある。
例えば
contract.method.call({gas: 1000000000})
よくある疑問
- Q: Etherの価格が高くなったら、コントラクト実行のお金ももっとかかるのでは?
- A: 需要によってgas priceは変わるので、そうとは言えない
- Q: どうやって、コントラクト実行のfeeを予想するの?
- A: estimateGasを使って予想する
ツール
- ガス市場の指標: ETH Gas Station | Consumer oriented metrics for the Ethereum gas market
- 通貨単位変換ツール: ryepdx/ethereum-units
- ガス・プロファイラ: Gas profiler for Ethereum smart contracts
参考
日本語
英語
- transactions – What is meant by the term “gas”? – Ethereum Stack Exchange
- Ethereum, Gas, Fuel, & Fees – ConsenSys Media
- What is the “Gas” in Ethereum? | CryptoCompare.com
- Design Rationale · ethereum/wiki Wiki
- gas – Is there a limit for transaction size? – Ethereum Stack Exchange
関連単語
- Ethereum、イーサリアム、エセリウム
- ガス、ガソリン、ガスリミット、ガス制限、ガスプライス、ガス価格
- gas limit, gasLimit, gas price, gasPrice