- Alert Type: 触发 Tenderly 向您发送通知的链上事件。有 12 种告警触发器可供选择。
- Alert Target: 您希望监控的一个或多个地址。所有 Alert Types 的 Target 选项相同,包括:
- Address: 监控单个地址。
- Network: 监控您所选网络上部署的所有地址。
- Project: 监控 Tenderly 上某个项目中的所有地址。
- Tag: 监控带有特定标签的所有合约和钱包。
- Alert Parameters: 与所选 Alert Type 相关的额外设置。
- Alert Destination: 您希望接收通知的位置。一个 Alert 可以将通知发送到多个目标。您可以在 8 种目标中发送和接收通知。
Alerts 只针对涉及您项目中合约和钱包的交易进行评估,因此您要监控的地址必须先添加到项目中。添加地址后,其交易也会显示在项目的 Transactions 视图中。要在监控高流量地址的同时避免噪音,可以在添加后将其从交易列表中隐藏;隐藏不会影响 Alerts。
阅读 Alerting 快速入门指南 了解
设置示例 Alert 并启用它的步骤。
Successful Transaction

Successful Transaction Alert 的参数
- 从 Alert Types 列表中 选择 Successful Transaction。
- 在 Target 部分, 选择 Address 以监控单个地址。
- 从下拉列表中 选择智能合约的地址。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当事务成功执行时您将收到通知。
Failed Transaction

Failed Transaction Alert 的参数
- 从 Alert Types 列表中 选择 Failed Transaction。
- 在 Target 部分, 选择 Address 以监控单个地址。
- 从下拉列表中 选择智能合约的地址。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当事务失败时您将收到通知。
Function Call

Function Call Alert 的参数
external 或 public 函数被调用时发送通知。当该函数在事务中首次被调用以及在执行过程中通过内部调用每次被调用时,都会发送通知。
要创建 Function Call 告警,请完成以下步骤:
- 从 Alert Types 列表中 选择 Function Call。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约。
- 从下拉列表中 选择智能合约的地址。
- 选择要监控的函数。Tenderly 将从智能合约中提取所有可用函数。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当该函数在您的智能合约中被调用时您将收到通知。
Event Emitted

Event Emitted Alert 的参数
- 从 Alert Types 列表中 选择 Event Emitted。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约。
- 从下拉列表中 选择智能合约的地址。
- 从可用事件列表中 选择要监控的事件函数。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当该事件函数发出事件时您将收到通知。
Event Parameter

Event Parameter Alert 的参数
- 从 Alert Types 列表中 选择 Event Parameter。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约。
- 从下拉列表中 选择智能合约的地址。
- 从可用事件列表中 选择要监控的事件函数。
- 从所选事件函数所需的参数列表中 选择参数。某些事件可以有多个参数。Tenderly 会自动拉入所有必要的参数。
- 选择比较运算符(例如:等于、不等于等)。
- 输入要与参数值进行比较的比较值(例如整数、地址等)。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当事件函数中的参数匹配您定义的条件时您将收到通知。
ERC20 Token Transfer

ERC20 Token Transfer Alert 的参数
Transfer 事件(包括铸造和销毁),以及 WETH 风格的 Deposit 和 Withdrawal 事件。检测使用与查看事务时显示的 ERC-20 转账相同的资产转账解码,因此告警覆盖的转账与您在该处看到的转账一致。
被监控地址
Target 决定告警监控哪些地址:- Address: 单个合约或钱包。选择 Select from Project 从项目中选取地址,或选择 Insert any address 粘贴任意地址。
- Network: 所选网络上项目中的所有地址。
- Project: 项目中所有网络上的所有地址。
- Tag: 带有所选标签的所有项目地址。
代币范围
Token scope 决定哪些 ERC-20 代币计入告警:- Specific token: 单个代币合约。选择器按代币符号、名称或地址搜索,并列出被监控地址所在网络上的代币。使用 Address 目标时,选择器还会显示被监控地址持有的余额。
- Any ERC20 token: 任意 ERC-20 代币,包括未添加到项目中的代币。
- Project tokens: 添加到项目中的所有 ERC-20 合约。
- Tokens with tag: 项目中带有所选标签的所有 ERC-20 合约。

ERC20 Token Transfer 告警:监控单个地址转出的任何有美元价格的 ERC-20 代币
触发方向与金额条件
Trigger 设置转账相对于被监控地址的方向:- Any transfer: 发送或接收的代币。
- Received: 流入被监控地址的代币。向被监控地址铸造代币计为接收。
- Sent: 流出被监控地址的代币。从被监控地址销毁代币计为发送。
金额可以按代币单位(切换按钮显示代币符号,例如 USDC)输入,也可以按 Raw 单位(应用 decimals 之前的整数值)输入。切换单位时,数值会就地换算。如果代币的 decimals 未知,则只能按 raw 单位输入金额。
净额模式
默认情况下,每笔匹配的转账都会单独触发告警。启用 Notify me about the net amount 后,告警会汇总事务内每个被监控地址每种代币的所有转入和转出,并在事务结束时评估余额的净变化:- 相互抵消的转账(例如在同一事务中借出并归还的闪电贷)不会产生通知。
- Trigger 和 Condition 作用于净变化。净增加计为接收,净减少计为发送;金额条件比较净变化的绝对值。
通知内容
每条通知都会列出匹配的转账。每笔转账包括被监控地址、代币、金额和交易对手(接收代币时为发送方,发送代币时为接收方)。在净额模式下,每个条目是一个地址和一种代币的净变化,不包含交易对手。创建 ERC20 Token Transfer 告警
- 从 Alert Types 列表中 选择 ERC20 Token Transfer。
- 选择 Target,并选择要监控的地址、网络或标签。
- 选择 Token scope:Specific token、Any ERC20 token、Project tokens 或 Tokens with tag。选择 Specific token 或 Tokens with tag 时,请选择代币或代币标签。
- 选择 Trigger:Any transfer、Received 或 Sent。
- 可选:选择 Specific token 时,选择 Condition 并输入金额或范围。
- 选择 Any ERC20 token 时,保持勾选 Notify me only about tokens with a USD price 以跳过没有价格的代币,或取消勾选以匹配所有代币。
- 可选:勾选 Notify me about the net amount,按事务评估余额的净变化。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当发生匹配的 ERC-20 转账时您将收到通知。
告警无法检测的余额变化
该告警跟踪的是代币转账,因此没有转账事件的余额变化不会触发它:- Rebase 代币和生息代币(例如 stETH、Aave aTokens、AMPL):因 rebase 或利息累积产生的余额变化不会发出事件。这些代币的常规转账可以被检测到。
- 汇率型代币(例如 cTokens、wstETH、ERC-4626 金库份额):告警统计的是代币数量,因此汇率变化不会触发告警。
- 转账收费代币(fee-on-transfer): 报告的金额是
Transfer事件中的值,可能高于接收方实际收到的金额。 - 只发出
Minted或Burned而不发出Transfer事件的 ERC-777 代币,以及Transfer事件布局不标准的代币(大多部署于 2018 年之前)。
balanceOf 使用 View Function 告警。
Allowlisted Callers

Allowlisted Alert 的参数
- 从 Alert Types 列表中 选择 Allowlisted Callers。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约。
- 从下拉列表中 选择智能合约的地址。
- 输入您熟悉且希望从监控中排除的地址。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当您创建的地址列表之外的其他人调用您的智能合约时您将收到通知。
Blocklisted Callers

Blocklisted Alert 的参数
- 从 Alert Types 列表中 选择 Blocklisted Callers。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约或钱包。
- 从下拉列表中 选择智能合约的地址。
- 输入您要关注的地址,当它们对您的智能合约或钱包采取操作时您将收到通知。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当您创建的地址列表中的地址调用您的智能合约时您将收到通知。
Balance Change

Balance Change Alert 的参数
- 从 Alert Types 列表中 选择 Balance Change。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约或钱包。
- 从下拉列表中 选择智能合约或钱包的地址。
- 选择比较运算符(例如:等于、不等于等)。
- 以 wei 为单位设置余额阈值。 只有当事务将某地址的余额设置为满足所设条件的值时,该告警才会触发。当余额本身已处于满足条件的状态时不会触发。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当您的智能合约或钱包上网络原生代币余额匹配您定义的阈值条件时您将收到通知。
Transaction Value

Transaction Value Alert 的参数
- 从 Alert Types 列表中 选择 Transaction Value。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约或钱包。
- 选择比较运算符(例如:等于、大于等)。
- 输入要比较的以 wei 为单位的值。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当来自该钱包或智能合约的事务价值匹配您指定的 wei 值时您将收到通知。
State Change

State Change Alert 的参数
- 从 Alert Types 列表中 选择 State Change。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约或钱包。
- 从智能合约中选择要监控的状态变量。
- 为所选状态变量配置额外参数。根据状态变量的数据类型,您需要配置额外的参数以告知 Tenderly 如何将状态变量的属性值与您期望的值进行比较:
- Threshold passed(阈值突破): 当属性值突破阈值时触发。每次值突破阈值时您只会收到一次告警。
- Percentage change(百分比变化): 当属性值以您设定的百分比增加或减少时触发。
- Criteria(条件): 当事务设定的新属性值匹配比较条件时触发。
- Value changed(值变化): 每当属性值发生变化时触发告警。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当智能合约中的状态变量发生变化时您将收到通知。
View Function

View Function Alert 的参数
view 函数的返回值时通知您。例如,您可以使用 balanceOf('0x...') view 函数跟踪某个 ERC-20 代币在特定地址的余额变化。
要创建 View Function 告警,请完成以下步骤:
- 从 Alert Types 列表中 选择 View Function。
- 在 Target 部分, 选择 Address 以监控部署在特定地址的智能合约或钱包。
- 选择智能合约地址。
- 从声明的 view 函数列表中, 选择要监控的 view 函数。您需要指定 view 函数可能需要的任何参数。
- 根据 view 函数返回的数据类型配置额外参数。
- Threshold passed(阈值突破): 定义阈值,当返回值突破阈值时收到告警。您还需要定义比较运算符类型(小于、等于等)以及用于比较的值。每次值突破阈值时您只会收到一次告警。
- Percentage change(百分比变化): 定义百分比,当值发生一定百分比变化时收到告警。您还需要定义比较运算符类型以及用于比较的值。
- Criteria(条件): 使用不同的比较运算符定义任意类型的条件,当条件满足时收到通知。
- Value changed(值变化): 每当返回值以任何方式发生变化时收到通知。
- 设置 Destination,创建新的目标或选择您之前创建的目标。
- 点击 Save,当您所选 view 函数的返回值相比上一区块发生变化时您将收到通知。