- Published on
ethere.jsで使用したgas代を計算する方法
Hardhatのtestをしているときに、native tokenなどを送付した後のbalanceを確認する時にトランザクションで使用したgas代も考慮しないと正確には、テストができません。または、dappsで使用したgas代をユーザに教えたい時があります。
そこで、ある任意のトランザクションを実行した時のトランザクションのgas代をethere.jsを用いて計算する方法を紹介します。
下記のようにするとgas代を計算できます
const trans = await myContract.withdraw(myAddress, amount) const receipt = await trans.wait() const gasCost = receipt.gasUsed.mul(receipt.effectiveGasPrice) console.log(`myContract.withdraw(myAddress, amount)で使用したgas代は${gasCost}です`)
まず1行目ではcontractのfunctionを実行します。
2行目でそのトランザクションを waitします。
そして、最後にreceipt.gasUsed
で使ったgasに対して、ethで換算した場合のgas代をreceipt.effectiveGasPrice
をかけることで算出します。
これで、テストの時や、使用したgas代をユーザに表示する際にとても便利になります。
参考: Is it possible to log how much gas was used during hardhat/ethers transaction?