トリガー
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を参照