Escolher Webhooks, WebSocket ou polling de RPC
Compare notificações de endereços, assinaturas via socket e polling com limites por suporte de rede, recuperação, requisitos do receptor e cobrança.
Use Webhooks de endereços para entrega em um receptor HTTPS, WebSocket para assinaturas em tempo real suportadas e polling com limites quando o fluxo exigir seu próprio cursor e recuperação.
Criar ouvintes de eventos on-chain para desenvolvedores e agentes de IA exige alinhar a arquitetura da aplicação com as capacidades da rede, garantias de entrega, restrições do receptor e custo operacional.
Matriz de decisão
A tabela abaixo compara todos os três mecanismos de integração entre capacidades de rede suportadas, requisitos de infraestrutura, estratégias de recuperação e modelos de cobrança:
| Dimensão | Webhooks de endereços | Assinaturas via WebSocket | Polling de RPC com limites |
|---|---|---|---|
| Mecanismo principal | Notificação push entregue via HTTPS POST para um endpoint público | Assinatura de fluxo contínuo (pull-stream) sobre conexão TLS persistente (wss://) | Consultas em lote ou agendadas via HTTP JSON-RPC iniciadas pelo cliente |
| Disponibilidade de redes | Todas as 9 redes suportadas declaradas em GET /v1/push/chains | Suportado na Robinhood Chain (robinhood_mainnet e robinhood_testnet); redes não atendidas têm ws: false e retornam HTTP 404 | Todas as 9 redes suportadas via RPC público sem chave ou JSON-RPC autenticado |
| Requisitos do receptor | URL HTTPS publicamente acessível, certificado TLS válido, resposta 2xx dentro do tempo limite, verificação de assinatura HMAC SHA-256 no corpo bruto | Conexão de cliente TCP/TLS de saída (wss://); gerencia batimentos de coração ping/pong e recuo de reconexão | Cliente HTTP sem estado ou worker agendado; armazena o cursor de bloco local |
| Entrega e ordenação | Entrega de pelo menos uma vez (at-least-once) com recuo exponencial de repetição; o receptor deve deduplicar pelo id do evento ou por ref + type entre assinaturas | Quadros estritamente ordenados em um único socket ativo; notificações descartadas durante desconexões | Respostas determinísticas de consulta para alturas de blocos confirmadas; o cliente dita o ritmo de execução |
| Reorganizações de cadeia | Notificações de controle emitidas para chain.reorg; o receptor descarta eventos substituídos antes de aplicar replays canônicos | Notificações de logs trazem "removed": true para logs reorganizados; newHeads requer verificação do hash do bloco pai | O cliente rastreia a continuidade da cadeia via parentHash entre os ciclos de polling para detectar reorgs |
| Recuperação de falhas | A janela de retenção do servidor permite replay via POST /v1/push/subscriptions/{id}/replay; lacunas anteriores ao bloco de ativação requerem preenchimento retroativo com eth_getLogs | Sem fila no servidor; o cliente reconecta e preenche os intervalos perdidos via eth_getLogs deduplicados por (blockHash, transactionHash, logIndex) | Retoma consultas a partir do last_synced_block armazenado; divide partes pelo max_logs_block_range da rede (1.000 blocos) |
| Modelo de cobrança | Taxa diária de endereço por grupo, baseada na maior contagem de endereços enquanto online durante o dia UTC, mais CU para eventos de dados entregues; consulte a cobrança de Webhook | Handshake e batimentos de coração não são cobrados; chamadas a eth_subscribe / eth_unsubscribe e unidades de notificação de socket descarregadas são cobradas em CU | Medido por requisição em Compute Units: eth_blockNumber (1 CU), eth_call (15 CU), eth_getLogs (30 CU); 10M de CU por $1 |
| Mais indicado para | Monitoramento de depósitos de usuários, rastreamento de endereços de hot wallet, checkouts de comerciantes, webhooks de eventos assíncronos | newHeads em tempo real e logs filtrados, bots reativos, interfaces interativas em redes suportadas | Reconciliação em lote, tarefas cron, pipelines de ETL, redes sem suporte a WebSocket (como HyperEVM) |
Quando escolher Webhooks de endereços
Escolha a API de Webhooks de Blockchain quando seu backend operar como um serviço web padrão capaz de receber requisições HTTPS de entrada:
- Grandes listas de endereços: Monitore depósitos ou saques em milhares de endereços de clientes sem manter sockets persistentes por carteira.
- Receptores serverless ou em contêineres: Funções serverless (AWS Lambda, Cloudflare Workers) são iniciadas com a chegada de webhooks e não precisam manter conexões ativas contínuas.
- Tentativas automáticas e replay: Interrupções transitórias no receptor são mitigadas pelo recuo automático de tentativas. Dentro da janela de retenção do servidor, entregas perdidas podem ser reenviadas usando o endpoint de replay.
- Considerações sobre o limite de ativação: A correspondência começa apenas depois que a alteração da assinatura for aplicada (
applied_from_block). Eventos ocorridos antes da adição de um endereço ou enquanto a assinatura estavaofflinedevem ser consultados pelo histórico de logs de RPC.
Revise os fluxos de verificação de assinatura e replay antes de expor receptores de webhook em produção.
Quando escolher assinaturas via WebSocket
Escolha as Assinaturas via WebSocket quando baixa latência for necessária e seu processo puder manter um socket de saída de longa duração:
- Cabeçalhos de blocos em tempo real: Receba
newHeadsvia streaming assim que cada bloco for anexado ao topo da cadeia. - Filtros de eventos de contrato: Receba via streaming
logsde contratos em tempo real que correspondam a um endereço ou a umtopic0específico. - Ambientes privados: Ideal para scripts locais, agentes de CLI ou serviços de backend atrás de NAT ou firewalls que não podem expor uma porta HTTPS pública de entrada.
- Verificação de disponibilidade de rede: WebSocket é suportado na Robinhood Chain (slug de rede
robinhood_mainnet, Chain ID 4663 erobinhood_testnet). A HyperEVM atualmente não tem suporte a WebSocket (ws: false); tentar uma conexão WebSocket com uma rede não atendida retorna HTTP 404 (unknown_chain). - Disciplina de desconexão: Notificações via WebSocket não são retidas no servidor durante desconexões. Quando o socket cai, os clientes devem se reconectar com recuo exponencial aleatório e preencher retroativamente os blocos perdidos via
eth_getLogs.
Consulte o guia de Assinaturas via WebSocket para obter limites de filtros, limites de conexão (20 por chave, 50 por conta) e exemplos de conexão com viem.
Quando escolher polling de RPC com limites
Escolha o polling de JSON-RPC com limites ao executar workers agendados, pipelines de dados ou operar em redes onde o WebSocket não está disponível:
- Redes sem WebSocket: A HyperEVM (
hyperevm_mainnet) oferece atualmente acesso HTTP a JSON-RPC, mas não a WebSocket (ws: false). Fazer polling deeth_blockNumbere consultareth_getLogsdentro dos intervalos de blocos suportados viabiliza o processamento de eventos na HyperEVM. - Ritmo de consulta controlado: O polling permite que desenvolvedores e agentes de IA regulem a frequência de requisições, gerenciem o consumo de Compute Units em relação aos limites de taxa (400 CU/s por chave por padrão em contas gratuitas) e evitem quedas de socket durante tarefas de longa duração.
- Limites de intervalo de blocos: Consultas autenticadas de
eth_getLogssão limitadas pelomax_logs_block_rangeda rede (1.000 blocos). Exceder esse limite retorna o código de erro-32602(logs_range_too_large). Divida intervalos mais amplos em partes consecutivas que não excedam 1.000 blocos.
Veja o guia de backfill de logs na HyperEVM e o guia de intervalo de blocos do eth_getLogs para algoritmos de divisão em partes.
Para uma lista completa de verificação de cargas de trabalho e testes rápidos, comece com Como escolher um provedor de RPC.
Ao escolher um provedor para polling de baixo volume, compare provedores quanto à cobrança padrão de RPC e cobertura. Compare a cobrança por uso com os custos de períodos de teste e assinaturas; os custos de notificação e backfill utilizam métricas diferentes das leituras de RPC.
Guias de implementação
WebSocket na Robinhood Chain
Para newHeads em tempo real ou logs filtrados na Robinhood Chain, siga o guia de Assinaturas via WebSocket para autenticação e requisições de assinatura. Após uma desconexão, reconecte com recuo, assine novamente e preencha blocos perdidos a partir de um cursor salvo com eth_getLogs; deduplique os logs por (blockHash, transactionHash, logIndex).
Polling com limites na HyperEVM
Para a HyperEVM (hyperevm_mainnet), siga o guia de backfill de logs na HyperEVM para polling com limites e recuperação. Faça consultas a partir do cursor salvo em partes dentro de max_logs_block_range, persista eventos e progresso juntos após o processamento bem-sucedido e repita intervalos incompletos. Verifique a continuidade da cadeia e examine intervalos sobrepostos para tratar reorgs.
Próximos passos
- Explore o diretório de conjuntos de dados para ver todos os conjuntos de dados indexados pela BlockVectra.
- Consulte o plano gratuito e os preços para verificar o que sua conta inclui.
- Entre no console para criar uma API key.
Última atualização:
Push por Webhook
Crie assinaturas de endereços via HTTP, verifique assinaturas no corpo bruto, deduplique IDs de eventos e recupere correspondências retidas ou blocos ausentes.
Assinaturas via WebSocket
Conecte-se aos endpoints WebSocket da BlockVectra para eth_subscribe newHeads e logs. Conheça métodos de conexão, regras de filtro, recuo de reconexão e recuperação.