LoginSignup
0
0

【ether.js + Alchemy】推定ガス代を計算するために必要なデータの取得方法

Posted at

ガス代(Transaction Fee)の計算方法

※個人的には日本語でも英語通り 「Transaction Fee」 という呼び名に統一してほしい。混乱する。


A. ガス代(Transaction Fee)  = (C.ベースフィー + D.プライオリティフィー) x B.ガス使用量

(Etherscanより)
Image from Gyazo

環境

  • 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は旧式のガス料金システムにおける単位ガスあたりの料金なので使いません。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0