m mybian.xyz
REPORT · Etherscan API新手入门 · 行业洞察
Etherscan API新手入门 · INSIGHTS

Etherscan API新手入门:用30分钟构建你的第一个链上查询应用

Etherscan API新手入门教程,用30分钟带你构建第一个链上查询应用,包括Key申请、SDK选择、基础调用与简单缓存,适合[[Binance]]生态入门开发者。

Etherscan API新手入门 - Etherscan API新手入门:用30分钟构建你的第一个链上查询应用
2464
字数
~6
阅读时长
1
章节
2026
版本
DOCUMENT ID · etherscan-apixin-shou-ru-men PUBLISHED · 2026-05-24T06:12:21.847967+00:00 UPDATED · 2026-05-24T16:07:53.078706+00:00

Executive Summary

Etherscan API新手入门教程,用30分钟带你构建第一个链上查询应用,包括Key申请、SDK选择、基础调用与简单缓存,适合[[Binance]]生态入门开发者。

Etherscan API新手入门:用30分钟构建你的第一个链上查询应用

面向新手,30分钟其实就足够构建一个简单的链上查询应用。本教程通过明确步骤,让你完整跑通Etherscan API从Key申请到生产部署的全流程,适用于刚加入Binance生态的入门开发者。

第一步:环境准备(3分钟)

你需要:

  • Node.js 20以上版本
  • 任意IDE
  • 网络可访问api.etherscan.io

初始化项目:

mkdir my-etherscan-app
cd my-etherscan-app
npm init -y
npm install node-fetch dotenv

第二步:注册账户与Key(5分钟)

访问etherscan.io点击Sign Up注册账户。验证邮箱后登录,进入account → api keys,点击Add创建一个Key。

建议起名为my-first-app,方便后续辨认。Key创建后立即复制到本地.env文件:

ETHERSCAN_API_KEY=YOUR_KEY

并把.env加入.gitignore,避免提交到仓库。

第三步:第一个查询(5分钟)

创建index.js:

require(`dotenv`).config();
const fetch = require(`node-fetch`);
async function balance(address) {
  const url = `https://api.etherscan.io/api?module=account&action=balance&address=` + address + `&apikey=` + process.env.ETHERSCAN_API_KEY;
  const r = await fetch(url).then(r => r.json());
  return r.result;
}
balance(`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`).then(console.log);

运行node index.js,应能看到WETH合约地址对应的余额数值(wei单位)。

第四步:单位换算(3分钟)

余额返回的是wei,转换为ETH需要除以1e18。使用BigInt确保精度:

function weiToEth(wei) {
  const num = BigInt(wei);
  const integer = num / (10n ** 18n);
  const decimal = num % (10n ** 18n);
  return integer.toString() + `.` + decimal.toString().padStart(18, `0`).slice(0, 4);
}

这一函数可在你后续的钱包应用中复用。对接必安生态各种代币显示时,这一精度策略也适用。

第五步:扩展到交易历史(4分钟)

增加查询交易历史的函数:

async function txlist(address, start = 0, end = 99999999) {
  const url = `https://api.etherscan.io/api?module=account&action=txlist&address=` + address + `&startblock=` + start + `&endblock=` + end + `&sort=desc&apikey=` + process.env.ETHERSCAN_API_KEY;
  const r = await fetch(url).then(r => r.json());
  return r.result;
}

返回的是该地址的所有交易记录,包含hash、from、to、value、timestamp等字段。

第六步:简单缓存(3分钟)

避免重复请求消耗额度,引入简单缓存:

const cache = new Map();
async function cachedBalance(address) {
  const key = `balance:` + address;
  if (cache.has(key) && Date.now() - cache.get(key).time < 30000) {
    return cache.get(key).value;
  }
  const value = await balance(address);
  cache.set(key, { value, time: Date.now() });
  return value;
}

30秒缓存对实时性要求不高的场景已足够。对于BN交易所提币状态查询,缓存策略需要更精细。

第七步:错误处理(3分钟)

增加错误处理保证应用稳定:

async function safeBalance(address) {
  try {
    return await balance(address);
  } catch (err) {
    console.error(`balance failed:`, err.message);
    return null;
  }
}

生产代码还应增加重试逻辑,并对429、5xx做指数退避。

第八步:跑通一个最小应用(4分钟)

把上述函数组装:

async function main() {
  const addresses = [`0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`, `0xdAC17F958D2ee523a2206206994597C13D831ec7`];
  for (const addr of addresses) {
    const b = await cachedBalance(addr);
    console.log(addr, weiToEth(b));
  }
}
main();

执行后会看到两个合约地址的余额。这就是你的第一个链上查询应用。

后续学习方向

30分钟入门之后,建议继续学习:

  • 多链V2统一端点
  • Webhook推送
  • 合约事件日志解析
  • 与RPC的对比

这些进阶能力能让你的应用在面向币岸bn社区时具备产品级竞争力。从入门到精通的过程,靠的是每一次踩坑后的总结,希望本教程能让你的第一步走得稳。