4、API基础:什么是API?如何获取Etherscan API Key?
好,咱们进入第四讲。前面几章我们聊了链上数据的基本概念,也看了区块浏览器怎么用。但说实话,手动点来点去查数据,效率太低了。你想想看,如果我要监控100个地址的转账记录,总不能一个个去浏览器里翻吧?
这时候,API就派上用场了。这一章,我就带你搞懂API是什么,以及怎么拿到Etherscan的API Key——这是咱们搭建仪表盘的第一步。
4.1 什么是API?
API,全称是Application Programming Interface,翻译过来叫“应用程序编程接口”。名字听着挺唬人,其实没那么复杂。
说白了,API就是两个程序之间沟通的“信使”。
举个例子:你去餐厅吃饭。你不会直接冲到厨房去拿菜对吧?你得先看菜单,然后告诉服务员你要什么,服务员去后厨下单,最后把菜端给你。在这个场景里,服务员就是API。你(客户端)通过服务员(API)跟厨房(服务器)交互,拿到你想要的结果。
在区块链的世界里,API的作用也一样。我们写代码的时候,不需要自己去运行一个全节点,也不需要去解析原始的区块链数据。我们只需要调用Etherscan提供的API接口,就能拿到地址余额、交易记录、合约ABI等等信息。
核心理解:API就是一套预先定义好的“函数”或“接口”。你传参数进去,它返回数据给你。你不用关心它背后怎么实现的,只管用就行。
4.2 为什么我们需要API?
我个人习惯把API比作“数据水龙头”。你拧开它,数据就流出来了。没有API,你就得自己挖井——也就是自己跑节点、同步数据、解析区块,那工作量可就大了去了。
我在项目中遇到过不少新手,一开始觉得“我直接连节点不就行了?”结果折腾了两天,节点还没同步完。嗯,这就是典型的绕远路。
使用API的好处很明显:
- 省时省力:几行代码就能拿到数据,不用自己搭基础设施
- 稳定可靠:像Etherscan这种服务商,已经帮你做好了数据索引和缓存
- 标准化:接口格式统一,文档清晰,学习成本低
4.3 Etherscan API 能做什么?
Etherscan的API功能非常丰富。我挑几个最常用的给你看看:
| 功能模块 | 接口示例 | 说明 |
|---|---|---|
| 账户相关 | ?module=account&action=balance | 查询地址的ETH余额 |
| 交易相关 | ?module=account&action=txlist | 获取地址的交易历史 |
| 代币相关 | ?module=account&action=tokentx | 获取ERC-20代币转账记录 |
| 合约相关 | ?module=contract&action=getabi | 获取合约的ABI接口定义 |
| 区块相关 | ?module=block&action=getblockreward | 查询区块奖励信息 |
你看,基本上你在区块浏览器上能看到的,API都能拿到。而且返回的是结构化的JSON数据,方便程序处理。
4.4 如何获取Etherscan API Key?
好,理论说完了,咱们动手实操。获取API Key的步骤很简单,我带你走一遍。
步骤一:注册Etherscan账号
打开Etherscan官网(etherscan.io),点击右上角的“Sign Up”。注册过程跟普通网站一样,邮箱验证一下就完事了。我记得我第一次注册的时候,还担心会不会很复杂,结果两分钟就搞定了。
步骤二:进入API Key管理页面
登录之后,把鼠标移到右上角的头像上,会弹出一个菜单。找到“API Keys”这个选项,点进去。
步骤三:创建新的API Key
在API Keys页面,你会看到一个“Add”按钮。点击它,给你的Key起个名字。比如我一般会叫“MyDashboard”或者“TradingBot”。
创建成功后,你会看到一串字符,类似这样:
你的API Key: 7A8B9C0D1E2F3G4H5I6J7K8L9M0N1O2P3Q4R5S6T
⚠️ 重要提醒:这个Key就是你的“通行证”。不要把它公开分享,不要上传到GitHub,不要写在公开的代码里。我曾经见过有人把API Key硬编码在代码里,结果被爬虫扫到,一天之内被刷了几十万次请求,账户直接被封了。
4.5 API Key的权限与限制
拿到Key之后,你可能会想:“是不是有了Key就能随便调了?”嗯,没那么简单。Etherscan对API调用是有频率限制的。
| 账户类型 | 每秒请求数 | 每日请求上限 |
|---|---|---|
| 免费账户 | 5次/秒 | 10万次/天 |
| Pro账户(付费) | 更高 | 更高 |
对于咱们做仪表盘入门来说,免费账户完全够用。10万次/天,你想想看,就算每秒查一次,一天也才86400次,绰绰有余。
💡 小技巧:如果你只是做个人项目或者学习,建议在代码里加一个“请求间隔”,比如每次调用后sleep(0.3秒)。这样既不会触发限流,也显得你比较“绅士”。
4.6 第一次API调用:验证你的Key
拿到Key之后,咱们来测试一下。打开浏览器,直接在地址栏输入下面这个URL:
https://api.etherscan.io/api
?module=account
&action=balance
&address=0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae
&tag=latest
&apikey=你的API Key
把最后面的“你的API Key”替换成你刚才创建的那一串字符。回车之后,你应该会看到类似这样的返回结果:
{
"status": "1",
"message": "OK",
"result": "393674040566822923820"
}
这个result就是地址的余额,单位是Wei(1 ETH = 10^18 Wei)。如果你看到status为“1”,message为“OK”,恭喜你,API Key配置成功了!
为什么会返回这么一大串数字?因为以太坊的精度是18位小数,所以余额用Wei表示。你除以10^18就能换算成ETH了。
4.7 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张流程图,把API的核心逻辑串起来:
这张图把整个流程串起来了。你的代码发起请求,带着API Key去Etherscan,Etherscan验证通过后去链上查数据,最后把结果返回给你。整个过程,你只需要关心请求和响应,中间的逻辑Etherscan帮你处理好了。
4.8 避坑指南
最后,分享几个我踩过的坑:
- Key泄露:我曾经有一次不小心把API Key提交到了GitHub,虽然几分钟后就删了,但已经被爬虫抓到了。结果第二天收到Etherscan的邮件,说我的Key被滥用。从那以后,我所有的Key都放在环境变量里,代码里只引用环境变量。
- 请求频率:免费账户每秒最多5次请求。如果你写了个循环没加延迟,很容易被限流。限流后返回的错误码是“Max rate limit reached”,这时候等一分钟再试就好了。
- 地址格式:Etherscan要求地址是校验和格式(checksummed),也就是大小写混合的那种。如果你传了小写地址,有些接口会报错。建议用Web3库的toChecksumAddress()方法转换一下。
好了,这一章的内容就到这里。你现在应该知道API是什么,也拿到了自己的API Key。下一章,我们会用这个Key去真正地拉取链上数据,然后开始搭建我们的第一个仪表盘。
公众号:蓝海资料掘金营,微信deep3321