ガス代(Transaction Fee)の計算方法
※個人的には日本語でも英語通り 「Transaction Fee」 という呼び名に統一してほしい。混乱する。
A. ガス代(Transaction Fee) = (C.ベースフィー + D.プライオリティフィー) x B.ガス使用量
環境
- Node.js v20.0.0
- スマートコントラクト:Alchemyで作成
- テストネット: sepolia
(参考)
手順 ・コード
node.js のプロジェクトを作成し、
Ethereumブロックチェーンのライブラリ ethers.js をインストールします。
$ npm init
$ npm install --save ethers
コードは以下
index.js
const { ethers } = require("ethers");
ALCHEMY_API_KEY ="<ALCHEMY_API_KEY>"
const provider = new ethers.AlchemyProvider('sepolia', ALCHEMY_API_KEY)
async function getBaseFee() {
const block = await provider.getBlock('latest'); // 最新のブロック情報を取得
return block.baseFeePerGas;
}
async function getGasdata() {
const result = await provider.getFeeData();
return result;
}
getBaseFee().then(baseFee => {
console.log('BaseFee:', baseFee);
});
getGasdata().then(result => {
console.log(result);
});
実行すると
BaseFee: 8123134207n
FeeData {
gasPrice: 9123134207n,
maxFeePerGas: 17246268414n,
maxPriorityFeePerGas: 1000000000n
}
再び、ガス代の計算式
ガス代(Transaction Fee)
= (ベースフィー + プライオリティフィー) x ガス使用量
そのうち、ベースフィーとプライオリティフィーは取得できました。
- ベースフィー --- BaseFee: 8123134207n
- プライオリティフィー --- maxPriorityFeePerGas: 1000000000n
なお、ガス使用量は複雑なので、ここでは触れません。
また、gasPriceは旧式のガス料金システムにおける単位ガスあたりの料金なので使いません。
以上です。