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:
O script
Salve isso comoindex.ts, então execute npx ts-node index.ts:
O que o script faz
Uma assinatura, dois blocos de filtro
Uma única chamadasubscribe(...) carrega dois grupos de filtros nomeados:
- O filtro
accountsrecebe cada conta pertencente ao programa Pump.fun (curvas de vínculo, estado de mint, etc.) sempre que seus dados mudam. - O filtro
transactionsrecebe cada transação que interage com o programa Pump.fun. Os flagsvote: false, failed: falsedescartam votos e transações falhadas antes que atinjam seu manipulador.
Lendo os campos brutos
Alguns valores no payload precisam de uma pequena conversão antes de serem fáceis de usar:tx.signatureé umBuffer. Passe-o porbs58.encode(...)para obter a assinatura base58 que você veria em um explorador ou em uma respostagetTransaction.tx.meta.feeé um u64 armazenado como string, para que valores acima deNumber.MAX_SAFE_INTEGERnão percam precisão em JavaScript. Envolva-o emNumber(...)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
UmsetInterval 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 os discriminadores de instrução para rotular as negociações como
buy/sell/create— consulte Decodificação de dados de transações para ver o padrão de análise. - Persista as estatísticas contínuas em um banco de dados (Postgres, Redis, ClickHouse), em vez de usar
Set/ contadores na memória. - Emita alertas ao atingir limites — grandes pagadores de taxas, picos repentinos de volume e novas contas de curva de vinculação.
- Reproduza a atividade perdida na inicialização configurando
fromSlotemSubscribeRequest(até 48 horas atrás — consulte Reprodução histórica). - Combine com o Monitoramento de slots e blocos para obter contexto no nível do bloco.
- Acompanhe um único token em vez de todo o programa: insira o mint em
accountIncludee definamatchMints: trueno filtro de transações para receber todas as transferências, swaps, emissões e queimas desse token (consulte Filtragem por mint de token).
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.