触发器
Ethereum Trigger 节点允许您监控区块链事件,并在符合特定条件时自动触发工作流程。此节点提供三种类型的触发器以满足不同的使用场景。
触发器类型
Event Trigger(事件触发器)
监控智能合约事件,当合约发出特定事件时触发工作流程。
所需凭证:Ethereum RPC
参数:
- Contract Address(合约地址)(可选):要监控的一个或多个合约地址。留空则监控所有合约
- Event ABI(事件 ABI)(必需):要监控的事件 ABI 定义
- Event Name(事件名称)(可选):要筛选的特定事件名称
- Indexed Parameters(索引参数)(可选):按索引参数值筛选事件
功能特色:
- 监控所有合约或特定地址
- 支援多个合约地址
- 支援多种事件类型
- 按索引事件参数筛选
- 自动解码事件日志
使用场景:
- 监控代币转帐
- 追踪 NFT 铸造/销售
- 监听 DAO 投票
- 检测合约状态变更
范例 - 监控 ERC20 转帐:
{
"contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"eventAbi": {
"name": "Transfer",
"type": "event",
"inputs": [
{ "name": "from", "type": "address", "indexed": true },
{ "name": "to", "type": "address", "indexed": true },
{ "name": "value", "type": "uint256" }
]
}
}
工作流程范例:
[Event Trigger: Transfer] → [检查金额 > 1000] → [发送通知]
Block Trigger(区块触发器)
当区块链上创建新区块时触发工作流程。
所需凭证:Ethereum RPC
参数:
- Polling Interval(轮询间隔)(可选):检查新区块的频率(秒)(预设:12)
功能特色:
- 即时区块监控
- 可设定轮询间隔
- 提供完整区块资讯
使用场景:
- 监控区块链进度
- 计算出块时间
- 追踪网路活动
- 触发基于时间的操作
输出资料:
{
"number": "18500000",
"hash": "0x...",
"parentHash": "0x...",
"timestamp": "1693526411",
"miner": "0x...",
"gasLimit": "30000000",
"gasUsed": "12345678",
"transactions": ["0x...", "0x..."]
}
工作流程范例:
[Block Trigger] → [取得区块详情] → [储存到资料库]
Transaction Trigger(交易触发器)
监控特定地址的交易,当交易发生时触发。
所需凭证:Ethereum RPC
参数:
- Address(地址)(必需):要监控的以太坊地址
- Direction(方向)(可选):筛选交易方向
both:监控进出交易(预设)incoming:仅进入交易outgoing:仅发出交易
- Polling Interval(轮询间隔)(可选):检查频率(秒)(预设:12)
功能特色:
- 监控特定地址
- 按交易方向筛选
- 支援多个地址
- 自动检测交易
使用场景:
- 监控钱包活动
- 追踪付款收据
- 大额交易警报
- 检测可疑活动
输出资料:
{
"hash": "0x...",
"from": "0x...",
"to": "0x...",
"value": "1000000000000000000",
"gasPrice": "20000000000",
"blockNumber": "18500000",
"direction": "incoming"
}
工作流程范例:
[Transaction Trigger] → [检查金额] → [更新会计系统]
常见模式
事件驱动工作流程
监控合约事件并自动反应:
[Event Trigger] → [解码事件资料] → [处理] → [执行动作]
付款监控
追踪进入您钱包的付款:
[Transaction Trigger: incoming] → [验证金额] → [发送确认邮件]
多合约监控
同时监控多个合约:
[Event Trigger: 多个地址] → [识别合约] → [路由到处理器]
基于区块的排程
每 N 个区块执行任务:
[Block Trigger] → [检查区块号 % N == 0] → [执行任务]
效能考量
轮询间隔
- Block Trigger:预设 12 秒匹配以太坊出块时间
- Transaction Trigger:根据预期活动调整
- Event Trigger:根据出块时间自动轮询
速率限制
- 使用适当的轮询间隔以避免 RPC 速率限制
- 考虑使用 WebSocket 连接进行即时监控
- 某些 RPC 提供商根据请求量收费
筛选
- 使用索引参数减少资料处理
- 尽可能在触发器层级筛选
- 指定合约地址以减少不必要的检查
提示
- 在测试网测试:在主网之前始终在测试网(Sepolia、Goerli)上测试触发器
- 错误处理:为网路问题和 RPC 故障添加错误处理
- 去重:触发器偶尔可能触发两次;实施去重逻辑
- 历史资料:触发器仅监控新事件;使用常规节点查询历史资料
- Gas 成本:触发器不消耗 gas;它们只监控区块链
- 多个触发器:您可以在不同工作流程中使用多个触发器
- ABI 格式:确保事件 ABI 格式正确的 JSON
疑难排解
触发器未触发
- 检查 RPC 连接和凭证
- 验证合约地址正确
- 确保事件 ABI 与合约匹配
- 检查轮询间隔是否过高
- 验证事件确实被发出
遗漏事件
- RPC 提供商可能有速率限制
- 轮询间隔过高
- 网路拥塞导致延迟
- 检查 RPC 提供商的区块延迟
重复事件
- 在重组期间是正常行为
- 实施事件 ID 追踪
- 使用交易杂凑进行去重
下一步
- 了解 Account 操作以查询余额
- 探索 Contract 操作以与事件互动
- 查看 Transaction 以响应触发器发送交易