---
title: "Transfers API：一次请求，历史交易查询速度提升 500 倍"
description: "了解如何使用 Alchemy Transfers API，通过一次请求将历史交易查询速度提升 500 倍！"
---

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

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

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

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

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

<ImageBlock
  src="https://media.alchemy.com/1704734966-diagram-of-alchemy-transfer-api-infrastructure.png"
  alt="alchemy transfer api 基础设施示意图"
  width={2880}
  height={2048}
  caption="Transfers API 基础设施"
/>

Transfers API Infrastructure

一旦你获取了用户过去的所有交易记录，就可以轻松设置[ Address Activity Notifications](https://www.alchemy.com/docs/reference/notify-api-quickstart)，持续实时接收 ETH、ERC20 和 ERC721 转账通知。Alchemy 的 Transfers API 和 Address Activity Notifications 结合在一起，为任何想要构建用户交易后端的开发者提供了一套强大的工具。

<VideoCta
  title="查看 Alchemy 控制台实际操作演示"
  description="30 分钟引导演示：现场演示控制台中的每一项工具。"
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


好了，现在来看点有意思的——一个现场演示。要查看我们 Transfers API 的实际效果，可以在 Public Composer 中查看这个[示例查询](https://www.alchemy.com/composer?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22alchemy_getAssetTransfers%22%2C%22paramValues%22%3A%5B%7B%22excludeZeroValue%22%3Atrue%2C%22fromBlock%22%3A%220x0%22%2C%22toBlock%22%3A%22latest%22%2C%22fromAddress%22%3A%220x7a250d5630B4cF539739dF2C5dAcb4c659F2488D%22%2C%22toAddress%22%3A%220x2D407dDb06311396fE14D4b49da5F0471447d45C%22%7D%5D%7D)，展示从 Uniswap V2: Router 2 发送到 Yearn: Deployer 的转账——非常简单，能帮你快速上手！

我们的测试结果显示，调用 alchemy_getAssetTransfers 比同时使用 [geth](https://www.alchemy.com/overviews/what-is-a-geth-node-and-how-to-run-one) 的 eth_getBlockByNumber 和 eth_getLogs 方法查询 1 万个区块内发送到 WETH 的所有 ETH、ERC20 和 ERC721 转账要快多达 500 倍（在某些场景下甚至快 1,000,000 倍）。不信？怀疑论者——我喜欢。没关系，你可以用这个[脚本](https://github.com/alchemyplatform/alchemy-asset-transfers-benchmark)自己测试性能。如果想真正体会到这种优化效果，可以尝试查询更多区块。1 万个区块就能有 500 倍的提速，试想一下查询 1000 万个区块会快多少 🚀！

‍
如果你对 Transfers API 感兴趣，现在就可以[免费注册 Alchemy](https://dashboard.alchemy.com/signup?referral=affiliate:18a41366-5a36-4300-8b7b-31bfc8cda175)，并查看[文档](https://www.alchemy.com/docs/reference/transfers-api-quickstart)，立即开始使用。
‍
