1.sendTransaction に必要なGas(トランザクション手数料)
ETHの送金やスマートコントラクト実行のトランザクション承認手数料
EIP-1559で、トランザクションガス手数料のメカニズムが変更になった
固定価格セール(fixed-price sale)に置き換え
2.以前のGas 代
Gas代(トランザクション手数料) = gas × gasPrice
(1) gas (ガス量)
(2) gasPrice (ガス価格)
・ガスリミット
(Gas Limit)とは、取引で費やしてもよい手数料(Gas)の上限値
送金手数料の最大値 = ガス価格 × ガスリミット
3.EIP-1559
transaction fee : Gas units (limit) * (Base fee + Tip)
Gas Priceの代わりに、
Gas units (limit) * (Base fee + Tip)
・Base Fee Per Gas (Base Fee) :ブロック毎に固定
・Priority Fee Per Gas (Tip) :チップ
・Max Fee Per Gas (maxFeePerGas) :ブロックに含めるために出せる最大額
4.トランザクションのType 2でガス手数料を計算
(1)Base Fee Per Gas + Priority Fee Per Gas > Max Fee Per Gasの場合
・最大手数料
手数料 = (gas limit) * (maxFeePerGas)
(2)Base Fee Per Gas + Priority Fee Per Gas <= Max Fee Per Gasの場合
・通常の手数料
手数料 = (Gas) * (base fee + priority fee)
5.web3.eth method
(1) estimateGas:
estimateGas = web3.eth.estimateGas(callObject )
(2) getGasPrice:
gasPrice = web3.eth.getGasPrice() ;
(3) gasLimit
gasLimit = web3.utils.toHex(22000);
6.追加
・getFeeHistory
estimateGasの代わり
web3.eth.getFeeHistory(blockCount, newestBlock, rewardPercentiles, [callback])
・maxPriorityFeePerGas
web3.eth.getMaxPriorityFeePerGas()
・maxFeePerGas
7.現在 の動作確認
ganacheはlocalで動かしているせいかweb3.eth.getFeeHistory()はerrorになる
The method eth_feeHistory does not exist/is not available
gethからもアクセスできない
> eth.getFeeHistory(4, "latest") TypeError: 'getFeeHistory' is not a function at:1:1 >
8.receiptにeffectiveGasPriceが追加
・Pre-Londonでは、トランザクションのgasPriceと同じ ・effectiveGasPriceはロンドン後、支払われた実際のガス価格に等しい