跳至主要内容

触发器

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 追踪
  • 使用交易杂凑进行去重

下一步