sendTransaction (送金)に必要なGas代(トランザクション手数料)

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はロンドン後、支払われた実際のガス価格に等しい