Skip to main content
Transmita cada atualização de conta e transação do Pump.fun em tempo real usando o SDK LaserStream. Esta página percorre um script completo em TypeScript que você pode executar de ponta a ponta: ele imprime cada transação à medida que acontece, relata estatísticas contínuas (taxa de transferência, pagantes de taxas únicos, taxas totais em SOL) uma vez por minuto e permanece conectado automaticamente durante reconexões. É um ponto de partida útil para qualquer coisa que precise de visibilidade contínua do Pump.fun — bots de negociação, painéis analíticos, pipelines de alerta ou apenas explorar o formato dos dados para que você possa construir algo mais especializado em cima.
Pré-requisitos: Uma chave API Helius (Plano Business ou Professional para Mainnet LaserStream) e Node.js 18+. Familiaridade com Assinaturas de Conta e Monitoramento de Transações ajuda, mas não é obrigatório.

Configuração

Crie um projeto novo, instale o SDK + bs58 (usado para decodificar assinaturas de transações) e defina sua chave API:
Escolha o endpoint mais próximo de onde este script será executado — veja as regiões LaserStream.

O script

Salve isso como index.ts, então execute npx ts-node index.ts:

O que o script faz

Uma assinatura, dois blocos de filtro

Uma única chamada subscribe(...) carrega dois grupos de filtros nomeados:
  • O filtro accounts recebe cada conta pertencente ao programa Pump.fun (curvas de vínculo, estado de mint, etc.) sempre que seus dados mudam.
  • O filtro transactions recebe cada transação que interage com o programa Pump.fun. Os flags vote: false, failed: false descartam votos e transações falhadas antes que atinjam seu manipulador.
Ambos chegam por um único stream gRPC, então o SDK só precisa gerenciar uma conexão. Se cair, o SDK reconecta automaticamente e você continua recebendo atualizações de ambos os filtros.

Lendo os campos brutos

Alguns valores no payload precisam de uma pequena conversão antes de serem fáceis de usar:
  • tx.signature é um Buffer. Passe-o por bs58.encode(...) para obter a assinatura base58 que você veria em um explorador ou em uma resposta getTransaction.
  • tx.meta.fee é um u64 armazenado como string, para que valores acima de Number.MAX_SAFE_INTEGER não percam precisão em JavaScript. Envolva-o em Number(...) antes de fazer aritmética. A mesma convenção string-para-u64 se aplica a vários campos de nível de bloco também — veja Monitoramento de Slot & Bloco para o formato completo dos dados.

Estatísticas contínuas

Um setInterval imprime um instantâneo a cada 60 segundos: total de transações, sucessos versus falhas, taxa de transferência, pagantes de taxas únicos e taxas totais em SOL. Pressione Ctrl+C para um último instantâneo antes que o script termine.

Estendendo o script

Algumas direções para expandir isso:
  • Decodifique discriminadores de instrução para rotular transações como buy / sell / create — veja Decodificando Dados de Transação para o padrão de análise.
  • Persista as estatísticas contínuas em um banco de dados (Postgres, Redis, ClickHouse) em vez de em memória Set / contadores.
  • Alerta sobre limites — grandes pagadores de taxas, picos de volume súbitos, novas contas de curva de vínculo.
  • Reproduza a atividade perdida na inicialização definindo fromSlot em SubscribeRequest (até 24 horas atrás — veja Reprodução Histórica).
  • Combine com Monitoramento de Slot & Bloco para contexto em nível de bloco.

Próximos Passos

Monitoramento de Transações

Os padrões gerais de filtragem de transações que este script usa.

Decodificando Dados de Transação

Analise o payload binário da transação em transações Solana legíveis.

Assinaturas de Conta

Observe mudanças específicas no estado da conta com filtros.

Reprodução Histórica

Reproduza até 24h da atividade passada do Pump.fun a partir de um slot inicial.