Published on

ethere.jsで使用したgas代を計算する方法

Authors
  • avatar
    Name
    ssu
    Twitter

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?