Skip to content

4. ブロックチェーンの読み取り

プロバイダーを使って、ブロックチェーンからさまざまな情報を取得できます。

残高の確認

javascript
import { ethers } from "ethers";

const provider = ethers.getDefaultProvider("mainnet");

// アドレスで残高を取得(Wei 単位で返る)
const balance = await provider.getBalance("vitalik.eth");
console.log("残高 (Wei):", balance.toString());
console.log("残高 (ETH):", ethers.formatEther(balance));

ブロック情報の取得

javascript
// 最新ブロック番号
const blockNumber = await provider.getBlockNumber();
console.log("最新ブロック:", blockNumber);

// ブロックの詳細
const block = await provider.getBlock(blockNumber);
console.log("タイムスタンプ:", new Date(block.timestamp * 1000));
console.log("トランザクション数:", block.transactions.length);
console.log("ガス使用量:", block.gasUsed.toString());

トランザクション情報の取得

javascript
// トランザクションハッシュから詳細を取得
const tx = await provider.getTransaction("0x...");
console.log("送信元:", tx.from);
console.log("送信先:", tx.to);
console.log("金額:", ethers.formatEther(tx.value), "ETH");
console.log("ガス価格:", ethers.formatUnits(tx.gasPrice, "gwei"), "Gwei");

// トランザクションのレシート(実行結果)
const receipt = await provider.getTransactionReceipt("0x...");
console.log("ステータス:", receipt.status === 1 ? "成功" : "失敗");
console.log("実際のガス消費:", receipt.gasUsed.toString());

ガス価格の取得

javascript
const feeData = await provider.getFeeData();
console.log("ガス価格:", ethers.formatUnits(feeData.gasPrice, "gwei"), "Gwei");
console.log("最大手数料:", ethers.formatUnits(feeData.maxFeePerGas, "gwei"), "Gwei");
console.log("優先手数料:", ethers.formatUnits(feeData.maxPriorityFeePerGas, "gwei"), "Gwei");

ENS の解決

javascript
// ENS 名 → アドレス
const address = await provider.resolveName("vitalik.eth");
console.log("アドレス:", address);

// アドレス → ENS 名(逆引き)
const name = await provider.lookupAddress("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045");
console.log("ENS名:", name);

よくあるトラブル

残高が 0n と表示される

BigInt として返されます。ethers.formatEther() で ETH 単位に変換してください。

ENS の逆引きが null になる

すべてのアドレスが ENS 名を持っているわけではありません。null が返った場合は、そのアドレスに ENS 名が設定されていません。


前へ: ウォレット | 次へ: トランザクション送信