跳至主要内容

觸發器

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 追蹤
  • 使用交易雜湊進行去重

下一步