---
title: "内部交易：通知用户所有的加密交易"
description: "Alchemy Notify 现已支持内部（智能合约）交易的通知。"
---

# 内部交易：通知用户所有的加密交易

Alchemy Notify 套件现已覆盖 _所有_ ETH 和 Token 转账的通知，包括我们最新支持的内部（智能合约）交易——让用户对自己的交易全程保持透明。

关于 Ethereum Address Activity 通知的整体介绍，可以参考[这篇博客文章](https://www.alchemy.com/blog/introducing-ethereum-address-activity-notifications)。

## 什么是内部交易？
<ImageBlock
  src="https://media.alchemy.com/1704458111-illustration-of-user-receiving-push-notifications-on-mobile-for-my-ether-wallet-dapp.jpg"
  alt="My Ether Wallet DApp 用户在移动端接收推送通知的示意图。"
  width={2540}
  height={1624}
  caption="使用 Alchemy Notify，用户可以接收应用内部交易的推送通知。"
  priority
/>

内部交易通知

要理解什么是内部交易，有必要先退一步，看看 Ethereum 上有哪些类型的交易。交易是对 Ethereum 链状态的改变，也就是说，它们不是在读取数据，而是在向链上*写入*数据。

Ethereum 上会发生多种状态变化，不过用户最关心的通常还是交易。为了让用户获得交易通知，开发者可以接入[ Address Activity 通知](https://www.alchemy.com/blog/introducing-ethereum-address-activity-notifications)，它会监控[转账](https://docs.alchemy.com/docs/reference/transfers-api)（两个 Ethereum 账户之间的价值交换）。

Ethereum 上的转账分为三种类型：

### ETH 转账
ETH 转账是最基本的交易类型，使用的是 Ethereum 的原生货币。

**转账示例：** Rishub 向 Paul 发送了 0.5 ETH。

获取这类转账的方法是扫描每个新区块中的交易对象。

### Token（ERC-20 和 ERC-721）转账
Token 转账包括任何与 ERC-20 代币或非同质化 ERC-721 代币（NFT）相关的转账。

**转账示例：** Omar 从交易所（智能合约）或另一个用户那里购买了 10 个 AAVE。

通常获取这类转账的方式是查看你所关注的 token 合约的[事件日志](https://www.alchemy.com/docs/deep-dive-into-eth_getlogs)。

### 内部转账
内部转账是指发送方（fromAddress）为内部（智能合约）地址的 ETH 转账。这包括一个智能合约向另一个智能合约发送 ETH，或智能合约向外部地址发送 ETH。

**转账示例：** 内部转账非常复杂，但开发者和用户关心的是资金从哪里出发、最终流向哪里，这正是它们重要的原因。下面这个例子展示了两笔内部交易：

Elan 想用 Sushiswap 将她持有的一些[Sushi](https://www.alchemy.com/dapps/sushi) 代币兑换成 ETH。这是一个涉及多种转账的多步骤过程。

1. 首先，她与 Sushi 智能合约交互，通过一次 token 转账将自己的 Sushi 代币发送给该智能合约。
1. 接着，该智能合约将她的 Sushi 存入 SUSHI/WETH 资金池（另一个智能合约），这也是一次 token 转账。作为回报，合约获得了等值的 WETH。
1. 由于 Elan 想要的是 ETH 而不是 WETH，Sushi 智能合约随后与 WETH 智能合约交互，将 WETH 兑换为 ETH（即解封装），这产生了一笔**内部交易**，因为 WETH 智能合约向 Sushi 智能合约发送了 ETH。
1. 之后，Sushi 合约将这笔 ETH 发送回 Elan，这是另一笔内部交易（Sushi 智能合约向外部地址 Elan 发送了 ETH）。

（3）和（4）之所以是内部交易而非 token 转账，是因为这里交换的是 ETH（而非 ERC-20 代币）；而它们之所以不是外部转账，是因为发送 ETH 的是*智能合约*（而非账户地址）。

现在你已经感受到，光是*解释*什么是内部转账就已经如此复杂，可以想象要在**实时**场景下获取它们会有多困难。听起来确实不太乐观。

尽管内部交易意义重大，但要获取它们，实际操作起来相当棘手。智能合约在底层可能触发多层内部合约调用，其中有些甚至不涉及任何价值转移。

此外，内部交易并不像 ETH 和 token 交易那样直接存储在链上，用户需要从父交易一路追溯到每个子调用才能获取它们。更糟糕的是，要执行这种追溯，开发者需要用到一种特殊、昂贵且容易出错的软件——Parity Trace 节点，而它的同步需要耗费数周时间。

## 让用户全程实时掌握交易动态
借助对外部转账、token 转账和内部交易的通知，用户可以随时全面了解自己的资金去向。现在，钱包能够在每次发生与用户账户相关的转账时通知用户，即使是复杂的内部交易也不例外。这些通知同时也能让开发者更清楚地了解自己所构建和交互的智能合约。

使用 Alchemy，为这三种类型的交易设置通知非常简单。[在这里创建一个免费账户](https://dashboard.alchemy.com/signup?referral=affiliate:cae22cbb-7cbf-49ab-8ee9-619191f0e318)，几分钟内即可开通 Alchemy Notify。

## 只需 3 分钟即可开始获取交易通知（而不是 3 周）
无需自行同步 Parity Trace 节点、苦等数周才能使用，只需 3 分钟即可完成与 Alchemy 的集成。

1. [注册 Alchemy](https://dashboard.alchemy.com/signup?referral=affiliate:cae22cbb-7cbf-49ab-8ee9-619191f0e318)
1. [创建一个 webhook](https://dashboard.alchemy.com/notify)，填写 URL 和相关地址（我们也提供了用于[创建新 webhook 的 API](https://www.alchemy.com/docs/reference/custom-webhooks-quickstart)）
1. Alchemy 向你发送通知
1. 你的用户从此不再担心加密交易的状态
