選擇 Webhook、WebSocket 或 RPC 輪詢

依鏈支援、復原、接收端需求與計費,比較地址通知、socket 訂閱與有界輪詢。

使用地址 Webhook 送達至 HTTPS 接收端,使用 WebSocket 處理支援的即時訂閱,並在工作流需要自有游標與復原時使用有界輪詢。

為開發者與 AI Agent 打造鏈上事件監聽器,需要讓應用程式架構與網路能力、送達保證、接收端限制及營運成本相符。

決策矩陣

下表從支援的網路能力、基礎架構需求、復原策略與計費模式,對照這三種整合機制:

面向地址 WebhookWebSocket 訂閱有界 RPC 輪詢
主要機制透過 HTTPS POST 推送通知至公開端點透過持久 TLS 連線(wss://)的拉取串流訂閱由用戶端發起的 HTTP JSON-RPC 批次或排程查詢
鏈可用性GET /v1/push/chains 中宣告的全部支援網路在 Robinhood Chain(robinhood_mainnet 與 robinhood_testnet)上支援;未提供服務的網路 ws: false 並回傳 HTTP 404透過免 key 公共 RPC 或認證 JSON-RPC 使用 GET /v1/chains 中的全部支援網路
接收端需求可公開存取的 HTTPS URL、有效 TLS 憑證、在逾時內回傳 2xx、原始主體 HMAC SHA-256 簽章驗證對外 TCP/TLS 用戶端連線(wss://);處理 ping/pong 心跳與重新連線退避無狀態 HTTP 用戶端或排程 worker;儲存本機區塊游標
送達與排序至少一次送達,搭配指數退避重試;接收端必須按事件 id 去重,或跨訂閱按 ref + type 去重單一作用中 socket 上嚴格排序的訊框;斷線期間的通知會捨棄對已確認區塊高度提供確定性的拉取回應;由用戶端控制執行節奏
鏈重組針對 chain.reorg 發出控制通知;接收端先捨棄被替換的事件,再套用規範鏈重放日誌通知對重組的日誌帶有 "removed": true;newHeads 需要檢查父雜湊用戶端跨輪詢週期追蹤 parentHash 的鏈結連續性以偵測重組
失敗復原伺服器保留視窗允許透過 POST /v1/push/subscriptions/{id}/replay 重放;啟用區塊之前的缺口需要 eth_getLogs 回填沒有伺服器端佇列;用戶端重新連線並透過 eth_getLogs 回填遺漏的範圍,按 (blockHash, transactionHash, logIndex) 去重從儲存的 last_synced_block 繼續查詢;依GET /v1/chains 中網路的 max_logs_block_range切分批次
計費模式按群組的每日地址費,依 UTC 日線上期間的最大地址數計算,另加已送達資料事件的 CU;見 Webhook 計費握手與心跳不計費;eth_subscribe / eth_unsubscribe 與已排出的 socket 通知單位按 CU 計費按請求以計算單位計量:eth_blockNumber、eth_call、eth_getLogs;方法權重與每 $1 的 CU 來自 GET /v1/plans,如下所示
最適合使用者充值監控、熱錢包地址追蹤、商戶結帳、非同步事件 Webhook支援網路上的即時 newHeads 與篩選後 logs、反應式機器人、互動式 UI批次對帳、cron 工作、ETL 管線、不支援 WebSocket 的鏈(例如 HyperEVM)

目前換算基準參數

1 USD = 10,000 計費單位,1 計費單位 = 1,000 CU(即 1 USD = 10,000,000 CU)。

換算公式:單次呼叫 CU 權重 × 1,000,000 ÷ (10,000 × 1,000) 美元。

方法單次呼叫 CU每百萬次呼叫價格(USD)
eth_blockNumber1$0.10
eth_call15$1.50
eth_getLogs30$3.00
debug_traceTransaction100$10.00
data.block5$0.50

何時選擇地址 Webhook

當你的後端以標準 Web 服務執行,且能接收傳入的 HTTPS 請求時,請選擇區塊鏈 Webhook API:

  • 大量地址清單:監控數千個客戶地址的充值或提領,無需為每個錢包維護持久 socket。
  • 無伺服器或容器化接收端:無伺服器函式(AWS Lambda、Cloudflare Workers)會在收到 Webhook 時啟動,不需要讓連線持續保持。
  • 自動重試與重放:短暫的接收端中斷可透過自動重試退避緩解。在伺服器保留視窗內,遺漏的送達可用 replay 端點重新送達。
  • 啟用邊界注意事項:只有在訂閱變更套用後(applied_from_block)才會開始比對。地址新增前或訂閱處於 offline 期間發生的事件,必須透過歷史 RPC 日誌查詢。

在暴露正式環境的 Webhook 接收端之前,請先檢閱簽章驗證與重放工作流。

何時選擇 WebSocket 訂閱

當需要低延遲,且你的程序能維持長時間的對外 socket 時,請選擇 WebSocket 訂閱:

  • 即時區塊標頭:在每個區塊附加到鏈頭時串流 newHeads。
  • 合約事件篩選:串流符合某個地址或特定 topic0 的即時合約 logs。
  • 私有環境:適用於本機腳本、CLI Agent,或位於 NAT 或防火牆後、無法暴露對內公開 HTTPS 埠的後端服務。
  • 網路可用性檢查:WebSocket 在 Robinhood Chain(網路代稱 robinhood_mainnet、Chain ID 4663 與 robinhood_testnet)上支援。HyperEVM 目前不支援 WebSocket(ws: false);嘗試對未提供服務的鏈建立 WebSocket 連線會回傳 HTTP 404(unknown_chain)。
  • 斷線紀律:WebSocket 通知不會在伺服器端跨斷線保留。當 socket 中斷時,用戶端必須以隨機化指數退避重新連線,並透過 eth_getLogs 回填遺漏的區塊。

關於篩選限制、連線上限(每把 key 20 個、每個帳戶 50 個)與 viem 連線範例,請檢閱 WebSocket 訂閱指南。

何時選擇有界 RPC 輪詢

當執行排程 worker、資料管線,或在 WebSocket 不可用的網路上操作時,請選擇有界 JSON-RPC 輪詢:

  • 沒有 WebSocket 的網路:HyperEVM(hyperevm_mainnet)目前提供 JSON-RPC HTTP 存取,但沒有 WebSocket(ws: false)。在支援的區塊範圍內輪詢 eth_blockNumber 並查詢 eth_getLogs,即可支援 HyperEVM 事件處理。
  • 可控的查詢節奏:輪詢讓開發者與 AI Agent 能控管請求頻率、依每把 key 的速率限制管理計算單位消耗,並避免長時間執行工作期間的 socket 中斷。每把 key 的限額——預設 400 CU/s、突發 1,600 CU。
  • 區塊範圍限制:認證的 eth_getLogs 查詢受GET /v1/chains 中網路的 max_logs_block_range限制。超過此限制會回傳錯誤碼 -32602(logs_range_too_large)。將較寬的區間切分為不超過目標網路 max_logs_block_range 的連續批次。
鏈鏈識別碼max_logs_block_range(區塊數)
Arbitrum Onearb_mainnet1,000
Basebase_mainnet1,000
BNB Smart Chainbsc_mainnet1,000
Ethereumeth_mainnet1,000
Ethereum Sepoliaeth_sepolia1,000
HyperEVMhyperevm_mainnet1,000
Polygonpolygon_mainnet1,000
Robinhood Chainrobinhood_mainnet1,000
Robinhood Chain Testnetrobinhood_testnet1,000

關於切分演算法,請參閱 HyperEVM 日誌回填指南 與 eth_getLogs 區塊範圍指南。

如需完整的工作負載檢查清單與自我測試,請從如何選擇 RPC 供應商開始。

為低流量輪詢選擇供應商時,請比較標準 RPC 計費與涵蓋範圍的供應商。比較用量計費與試用及訂閱成本;通知與回填成本使用與 RPC 讀取不同的計量單位。

實作指南

在 Robinhood Chain 上使用 WebSocket

若要在 Robinhood Chain 上取得即時 newHeads 或篩選後的 logs,請依照 WebSocket 訂閱指南 進行認證與訂閱請求。斷線後,以退避重新連線、重新訂閱,並用 eth_getLogs 從儲存的游標回填遺漏的區塊;按 (blockHash, transactionHash, logIndex) 去重日誌。

在 HyperEVM 上使用有界輪詢

若使用 HyperEVM(hyperevm_mainnet),請依照 HyperEVM 日誌回填指南 進行有界輪詢與復原。從儲存的游標出發,在 max_logs_block_range 內分批查詢;成功處理後將事件與進度一起持久化,並重試未完成的範圍。檢查鏈結連續性並掃描重疊範圍以處理重組。

下一步

最後更新:

本頁目錄