为什么需要 Etherscan API?
无论是بررسی钱包安全、追踪 DeFi 资金流动,还是开发链上分析工具,以太坊交易数据 都是不可忽视的“生命线”。Etherscan API 便是一把钥匙,让你用几行代码即可访问千亿级别的链上信息,涵盖 普通交易、ERC20 交易、NFT 转移 等丰富维度。
一、Etherscan API 速览
| 功能维度 | 关键词 | 说明 |
|---|---|---|
| 交易类型 | 普通交易、内部交易、ERC20、ERC721、ERC1155 | 一键区分代币类别 |
| 请求频率 | 免费密钥、每秒 5 次 | 满足大多数实验场景 |
| 数据粒度 | 最大 1000 条 / 次 | 配合分页即可拉取全量历史 |
核心关键词:Etherscan API、以太坊交易数据、ERC20交易、区块浏览器、API密钥。
二、准备工作:获取 API 密钥
- 访问 Etherscan 官网 → Sign In → API-KEYs → Add。
- 获得形如
ABCDE12345的 API 密钥;保存备用。
你需要把密钥填入环境变量或配置文件,避免硬编码泄露风险。
三、接口参数详解
| 参数名 | 含义 | 建议 |
|---|---|---|
module=account | 固定,指明查询账户维度 | 不改动 |
action=tokentx | 查询 ERC20 交易 | 可替换为 txlist、tokennfttx |
address | 目标钱包 | 支持 ENS 解析 |
startblock & endblock | 限制区块范围 | 拉取近期数据即可 |
page & offset | 分页控制 | offset ≤ 1000,page 自增循环 |
sort=desc | 倒序查看最新 | 也可 asc 获取最早 |
例如,拉取某地址最近 50 笔 ERC20 交易:
GET https://api.etherscan.io/api
?module=account
&action=tokentx
&address=0x9dd134d14d1e65f84b706d6f205cd5b1cd03a46b
&startblock=0
&endblock=99999999
&page=1
&offset=50
&sort=desc
&apikey=YOUR_KEY四、Python 快速上手示例
import os
import requests
import time
API_KEY = os.getenv("ETHERSCAN_API_KEY") # 安全存储
BASE_URL = "https://api.etherscan.io/api"
def get_erc20_tx(address, offset=50):
params = {
"module": "account",
"action": "tokentx",
"address": address,
"startblock": 0,
"endblock": 99999999,
"page": 1,
"offset": offset,
"sort": "desc",
"apikey": API_KEY
}
response = requests.get(BASE_URL, params=params, timeout=10)
response.raise_for_status()
return response.json()
if __name__ == "__main__":
txs = get_erc20_tx("0x9dd134d14d1e65f84b706d6f205cd5b1cd03a46b")
for tx in txs["result"][:5]: # 展示 5 条
print(f"{tx['timeStamp']} | {tx['tokenSymbol']} | {tx['value']} | {tx['hash']}")五、进阶技巧:高效抓取全链数据
- 批量回调:结合异步请求库,如
httpx.async_client,在一分钟内可吞吐 3000+ 条交易。 - 缓存机制:本地落地 JSON/Parquet,减少重复 API 调用。
- 节点代理:若因地区限制,可配置反向代理,保持以太坊交易数据稳定输入。
六、实际案例:监测鲸鱼钱包
假设目标地址持续将 USDC 转入某 DeFi 合约,我们可以:
- 每 5 分钟拉取
ERC20字段; - 识别超过 100 000 USDC 的大额转账;
- 结合简单告警,即刻获知资金链动向。
def large_usdc_alerts(address, threshold=int(100_000 * 1e6)):
txs = get_erc20_tx(address)
for tx in txs["result"]:
if tx["tokenSymbol"] == "USDC" and int(tx["value"]) >= threshold:
print(f"鲸鱼转入 {int(tx['value']) / 1e6} USDC https://etherscan.io/tx/{tx['hash']}")七、常见问题 FAQ
Q1:是否必须付费才能提升频率?
A:免费密钥即可每秒 5 次;如需更高并量,可申请 Pro 密钥。
Q2:ERC721 与 ERC1155 的交易接口是同一条吗?
A:不是。需替换 action=tokennfttx(ERC721)或 token1155tx(ERC1155)。
Q3:返回的交易为什么是空值?
A:确认地址 已拥有代币,并检查 startblock、endblock 是否过窄。
Q4:如何解析时间戳?
A:字段 timeStamp 为 Unix 秒级时间戳,可 datetime.fromtimestamp 直接转成北京时间。
Q5:JSON 里哪些字段最值得关注?
A:
hash:交易唯一 IDtokenSymbol&tokenDecimal:代币符号及精度value:原始 Token 数量fromto:资金流向
Q6:如何避免被封 IP?
A:
- 控制并发 + 指数回退(Exponential backoff)
- 使用 API 代理节点
- 定期轮换密钥
八、学习路径与下一步
- 官方文档:深入阅读 Etherscan API,掌握全部模块。
- 链上分析:结合 Python-pandas 做时间序列分析,洞察市场趋势。
- 邮件告警:用 SMTP + Cron,实现钱包 实时合约交互 通知。
核心关键词复习:Etherscan API、以太坊交易数据、ERC20交易、NFT跟踪、API密钥、Python实战。
通过今天的指引,你已拥有从数据入口到落地分析的全链路框架。下一步,动手写出专属你的链上情报站吧!