跳至内容
0%

Transfers API:一次请求,历史交易查询速度提升 500 倍

作者:Omar Ceja

最后更新:2021年5月13日1 分钟阅读

从 "0x0" 到 "latest":通过一次 API 调用访问 ETH、ERC20 和 ERC721 历史转账记录最快、最高效的方式

试想一下,如果有一种方法可以回答这样的问题:"Vitalik Buterin 一共给 Elon Musk 转过多少 ETH、SUSHI、USDT……(你懂的)?"现在,借助 Alchemy’s Transfers API,这已经成为可能(前提是你知道他们的钱包地址)。通过一次 API 调用,你就可以获取_任意_地址、任意代币的历史交易记录,而不必为每个用户去扫描整条链。

无论你是在开发最新的 DEX,还是最热门的游戏 dApp,你都清楚获取历史交易记录有多麻烦。

如果你使用原生的 Ethereum 客户端方法,你大概需要逐个区块查询以获取 ETH 转账,再通过解析成千上万条日志来筛选 ERC20 和 ERC721 转账,并把这些信息全部存进某个底层数据存储中。这个过程说起来就已经很繁琐了,而要以可扩展且一致的方式构建这套基础设施,会占用大量工程资源,而且速度非常慢。更别提解析交易 trace 来获取合约地址的内部交易了——正如 DefiSaver 的 Nikola Vuković 所说,"内部转账几乎不可能获取到"。

了解到这样一个简单且普遍的用例竟然要经历如此痛苦的过程后,我们决定构建 Transfers API,把这一切工作都放到后台完成。现在,你只需调用一个端点,ETH、ERC20 和 ERC721 转账记录就会源源不断地返回。作为额外的优化,这个 API 还支持分页,这样你就可以降低网络延迟,按顺序获取结果,而不会遇到超时问题,也不必自己拼接结果。

alchemy transfer api 基础设施示意图
Transfers API 基础设施

Transfers API Infrastructure

一旦你获取了用户过去的所有交易记录,就可以轻松设置 Address Activity Notifications,持续实时接收 ETH、ERC20 和 ERC721 转账通知。Alchemy 的 Transfers API 和 Address Activity Notifications 结合在一起,为任何想要构建用户交易后端的开发者提供了一套强大的工具。

Alchemy Dashboard Demo
Free video demo

查看 Alchemy 控制台实际操作演示

30 分钟引导演示:现场演示控制台中的每一项工具。

Watch the demo

好了,现在来看点有意思的——一个现场演示。要查看我们 Transfers API 的实际效果,可以在 Public Composer 中查看这个示例查询,展示从 Uniswap V2: Router 2 发送到 Yearn: Deployer 的转账——非常简单,能帮你快速上手!

我们的测试结果显示,调用 alchemy_getAssetTransfers 比同时使用 geth 的 eth_getBlockByNumber 和 eth_getLogs 方法查询 1 万个区块内发送到 WETH 的所有 ETH、ERC20 和 ERC721 转账要快多达 500 倍(在某些场景下甚至快 1,000,000 倍)。不信?怀疑论者——我喜欢。没关系,你可以用这个脚本自己测试性能。如果想真正体会到这种优化效果,可以尝试查询更多区块。1 万个区块就能有 500 倍的提速,试想一下查询 1000 万个区块会快多少 🚀!

‍ 如果你对 Transfers API 感兴趣,现在就可以免费注册 Alchemy,并查看文档,立即开始使用。 ‍

Alchemy 新闻通讯

第一时间获取发布信息

订阅我们的新闻通讯

获取 Alchemy 的最新产品更新和资源

A
O
D
+
超过 80,000 名订阅者

填写您的电子邮箱地址即表示您同意接收我们的营销通讯和产品更新。您确认 Alchemy 按照我们的隐私声明处理我们收到的信息。您可以随时取消订阅。