メインコンテンツまでスキップ

トリガー

Ethereum Triggerノードを使用すると、ブロックチェーンイベントを監視し、特定の条件が満たされたときに自動的にワークフローをトリガーできます。このノードは、さまざまなユースケースに対応する3種類のトリガーを提供します。

トリガータイプ

Event Trigger(イベントトリガー)

スマートコントラクトイベントを監視し、コントラクトが特定のイベントを発行したときにワークフローをトリガーします。

必要な認証情報:Ethereum RPC

パラメータ

  • Contract Address(コントラクトアドレス)(オプション):監視する1つ以上のコントラクトアドレス。すべてのコントラクトを監視する場合は空のままにします
  • 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(アドレス)(必須):監視するEthereumアドレス
  • 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秒はEthereumのブロック時間と一致
  • Transaction Trigger:予想されるアクティビティに基づいて調整
  • Event Trigger:ブロック時間に基づいて自動的にポーリング

レート制限

  • RPCレート制限を回避するために適切なポーリング間隔を使用
  • リアルタイム監視にはWebSocket接続の使用を検討
  • 一部のRPCプロバイダーはリクエスト量に基づいて課金

フィルタリング

  • データ処理を減らすためにインデックス付きパラメータを使用
  • 可能な限りトリガーレベルでフィルタリング
  • 不要なチェックを減らすためにコントラクトアドレスを指定

ヒント

  • テストネットでテスト:メインネットの前に常にテストネット(Sepolia、Goerli)でトリガーをテスト
  • エラー処理:ネットワーク問題とRPC障害のエラー処理を追加
  • 重複排除:トリガーは時々2回発火することがあります。重複排除ロジックを実装してください
  • 履歴データ:トリガーは新しいイベントのみを監視します。履歴データには通常のノードを使用
  • ガスコスト:トリガーはガスを消費しません。ブロックチェーンを監視するだけです
  • 複数のトリガー:異なるワークフローで複数のトリガーを使用できます
  • ABI形式:イベントABIが正しくフォーマットされたJSONであることを確認

トラブルシューティング

トリガーが発火しない

  • RPC接続と認証情報を確認
  • コントラクトアドレスが正しいか検証
  • イベントABIがコントラクトと一致することを確認
  • ポーリング間隔が高すぎないか確認
  • イベントが実際に発行されているか検証

イベントの欠落

  • RPCプロバイダーにレート制限がある可能性
  • ポーリング間隔が高すぎる
  • 遅延を引き起こすネットワーク混雑
  • RPCプロバイダーのブロック遅延を確認

イベントの重複

  • 再編成中の通常の動作
  • イベントID追跡を実装
  • 重複排除にトランザクションハッシュを使用

次のステップ

  • Account操作で残高を照会する方法を学ぶ
  • Contract操作を探索してイベントとやり取りする
  • トリガーに応答してトランザクションを送信するにはTransactionを参照