Visão Geral
getTransactionsForAddress é um método RPC exclusivo do Helius que retorna o histórico de transações de um endereço com filtragem avançada, ordenação flexível e paginação eficiente. Não faz parte do RPC padrão do Solana.
Diferentemente do getSignaturesForAddress, que só retorna assinaturas e ignora contas de tokens associadas, o getTransactionsForAddress pode retornar dados completos de transações, incluindo a atividade da conta de token associada (ATA) de uma carteira, em uma única chamada. Isso o torna o caminho mais rápido para um histórico completo de endereços para retroalimentação, indexação e análises.
Este método retorna até 1.000 transações completas por chamada.
Ordenação flexível
Ordenar cronologicamente (mais antigo primeiro) ou inverso (mais recente primeiro).
Filtragem avançada
Filtrar por intervalos de tempo, slots, assinaturas, status e transferências de tokens.
Dados completos de transações
Obtenha detalhes completos das transações em uma única chamada, sem necessidade de getTransaction de acompanhamento.
Contas de tokens
Incluir transações para contas de tokens associadas a um endereço.
Quando usar isso
UsegetTransactionsForAddress quando você precisar de:
- Histórico completo de tokens de carteira, incluindo contas de tokens associadas
- Um retrocesso rápido em uma única chamada para um indexador ou pipeline de dados
- Análise e relatórios de transações baseados em tempo ou slot
- Filtragem de status para manter apenas transações bem-sucedidas ou apenas falhas
- Reprodução histórica cronológica (ordenação do mais antigo para o mais recente)
- Análise de lançamento de tokens: primeiras transações de mint e primeiros detentores
- Histórico de financiamento de carteiras e descoberta de contrapartes
- Relatórios de conformidade e auditoria para um período de tempo específico
getTransfersByAddress em vez disso.
Suporte de rede
Início Rápido
1
Obtenha sua chave API
Obtenha sua chave API no Painel do Helius.
2
Consulta com recursos avançados
Obtenha todas as transações bem-sucedidas para uma carteira entre duas datas, ordenadas cronologicamente:
3
Compreender os parâmetros
Este exemplo mostra os recursos chave:
- transactionDetails: defina como
'full'para obter dados completos de transações em uma única chamada - sortOrder: use
'asc'para ordem cronológica (mais antigo primeiro) ou'desc'para o mais recente primeiro - filters.blockTime: defina intervalos de tempo com
gte(maior ou igual) elte(menor ou igual) - filters.status: filtre apenas
'succeeded'ou'failed'transações - filters.tokenAccounts: inclua transferências, mints e queimas para contas de tokens associadas
Parâmetros de solicitação
string
obrigatório
Chave pública codificada em Base-58 da conta para consultar o histórico de transações
string
padrão:"signatures"
Nível de detalhe da transação a ser retornado:
signatures: Informações básicas de assinatura (mais rápido)full: Dados completos da transação (elimina a necessidade de chamadas getTransaction, suporta limite de até 1.000)
string
padrão:"desc"
Ordem de classificação dos resultados:
desc: Mais recente primeiro (padrão)asc: Mais antigo primeiro (cronológico, ótimo para análise histórica)
number
padrão:"1000"
Máximo de transações a serem retornadas:
- Até 1000 quando
transactionDetails: "signatures" - Até 1000 quando
transactionDetails: "full"
string
Token de paginação da resposta anterior (formato:
"slot:position")string
padrão:"finalized"
Nível de comprometimento:
finalized ou confirmed. O compromisso processed não é suportado.object
Opções avançadas de filtragem para restringir os resultados.
object
Filtrar por número de slot usando operadores de comparação:
gte, gt, lte, ltExemplo: { "slot": { "gte": 1000, "lte": 2000 } }object
Filtrar por timestamp Unix usando operadores de comparação:
gte, gt, lte, lt, eqExemplo: { "blockTime": { "gte": 1640995200, "lte": 1641081600 } }object
Filtrar por assinatura de transação usando operadores de comparação:
gte, gt, lte, ltExemplo: { "signature": { "lt": "SIGNATURE_STRING" } }string
Filtrar por status de sucesso/fracasso da transação:
succeeded: Apenas transações bem-sucedidasfailed: Apenas transações falhasany: Ambas bem-sucedidas e falhas (padrão)
{ "status": "succeeded" }string
padrão:"none"
Filtrar transações para contas de tokens relacionadas:
none: Apenas retornar transações que fazem referência ao endereço fornecido (padrão)balanceChanged: Retornar transações que fazem referência ao endereço fornecido ou modificam o saldo de uma conta de token de propriedade do endereço fornecido (recomendado)all: Retornar transações que fazem referência ao endereço fornecido ou a qualquer conta de token de propriedade do endereço fornecido
{ "tokenAccounts": "balanceChanged" }object
Filtrar para transações onde o endereço consultado participou de uma transferência de token que corresponde a uma contraparte, direção, mint ou faixa de quantidade bruta. Todos os campos são opcionais e combinados com semântica AND.Exemplo:
{ "tokenTransfer": { "direction": "in", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }string
Endereço da contraparte. Combina transferências cuja outra parte é este endereço.
string
padrão:"any"
Filtrar por direção da transferência em relação ao endereço consultado:
in: Transferências recebidas pelo endereço consultadoout: Transferências enviadas pelo endereço consultadoany: Transferências de entrada e saída
string
Mint do token para filtrar.
object
Comparação de valores usando a quantidade bruta on-chain, não a quantidade ajustada pela UI ou por decimais. Suporta
gt, gte, lt, e lte.string
Formato de codificação para dados de transação (apenas aplica-se quando
transactionDetails: "full"). O mesmo que getTransaction API. Opções: json, jsonParsed, base64, base58number
Defina a versão máxima da transação a ser retornada. Se omitido, apenas transações legadas serão retornadas. Defina como
0 para incluir todas as transações versionadas.number
O slot mínimo em que a solicitação pode ser avaliada
Medição
Respostas bem-sucedidas são medidas pelo que é retornado:Resposta
O formato da resposta depende detransactionDetails. O modo de assinaturas retorna registros de assinatura leves; o modo completo retorna objetos completos de transação e metadata.
- Resposta de Assinaturas
- Resposta Completa de Transações
Campos de Resposta
O campo
transactionIndex é exclusivo para getTransactionsForAddress. Outros endpoints semelhantes como getSignaturesForAddress, getTransaction e getTransactions não incluem este campo.
Filtros
Você pode usar operadores de comparação paraslot, blockTime, e signature, além dos filtros especiais status, tokenAccounts, e tokenTransfer. A combinação de múltiplos filtros reduz o resultado à sua interseção.
Operadores de comparação
Esses operadores funcionam como consultas de banco de dados para dar a você controle preciso sobre seu intervalo de dados.Filtros de Enumeração
Exemplos de filtros combinados:
Contas de tokens associadas
No Solana, uma carteira não segura tokens diretamente. Em vez disso, a carteira possui contas de tokens, e essas contas de tokens armazenam os tokens. Quando alguém envia USDC para você, ele vai para sua conta de token USDC, não para o endereço principal da sua carteira. Este método é exclusivo porque pode consultar histórico completo de tokens, incluindo contas de tokens associadas (ATAs) de uma carteira. Métodos RPC nativos comogetSignaturesForAddress não incluem ATAs.
O filtro tokenAccounts controla esse comportamento:
none(padrão): Retorna apenas transações que referenciam diretamente o endereço da carteira. Use isso quando você só se importa com interações diretas da carteira.balanceChanged(recomendado): Retorna transações que referenciam o endereço da carteira ou modificam o saldo de uma conta de token de propriedade da carteira. Isso elimina spam e operações não relacionadas como coletas de taxas ou delegações, fornecendo uma visão limpa da atividade significativa da carteira.all: Retorna todas as transações que referenciam o endereço da carteira ou qualquer conta de token de propriedade da carteira.
tokenAccounts não suporta transações anteriores a dezembro de 2022. Ele depende de metadados de transferência de tokens introduzidos no Solana no slot 111,491,819. Para cobrir atividades anteriores, veja a solução alternativa de conta de token histórica.
Filtro de transferência de tokens
O filtrotokenTransfer restringe os resultados para transações onde o endereço consultado participou de uma transferência de token que corresponde a critérios específicos: uma contraparte particular, mint, direção ou faixa de valores.
Use-o para responder a perguntas como:
- Quando esta carteira recebeu USDC de uma contraparte específica?
- Mostrar todas as transferências de saída acima de 1.000 tokens.
- Quando esta carteira já interagiu com este mint específico?
filters da configuração da solicitação:
tokenTransfer são opcionais. A combinação de múltiplos campos é tratada como AND.
Operadores de faixa de valores:
Você pode combinar operadores de valor, como
{ "gte": 1000000, "lte": 5000000 } para um intervalo fechado. tokenTransfer compõe-se com os outros filtros de nível superior (slot, blockTime, status, e tokenAccounts); o resultado final é a interseção.
Exemplos
Análise baseada no tempo
Gerar relatórios mensais de transações:Criação de mint de token
Encontrar a transação de criação de mint para um token específico:Transações de financiamento
Descobrir quem financiou um endereço específico:Transferências de tokens
Filtrar portokenTransfer para isolar movimentos específicos de tokens.
Entradas de USDC para um endereço:
Paginação
Quando você tem mais transações do que o seu limite, use opaginationToken da resposta para buscar a próxima página. O token é uma string simples no formato "slot:position" que informa a API de onde continuar.
Use o token de paginação de cada resposta para buscar a próxima página:
Múltiplos endereços
Você não pode consultar vários endereços em uma única solicitação. Cada consulta de endereço conta como uma solicitação de API separada e é medida de acordo. Para buscar transações para múltiplos endereços, consulte cada endereço dentro do mesmo tempo ou janela de slots, depois mescle e ordene:Melhores práticas
Desempenho. UsetransactionDetails: "signatures" quando você não precisar de dados completos de transação. Use tamanhos de página razoáveis para melhores tempos de resposta, e filtre por intervalos de tempo ou slots específicos para consultas mais direcionadas.
Filtragem. Comece com filtros amplos e vá estreitando progressivamente. Use filtros baseados em tempo para análises e fluxos de trabalho de relatórios, e combine múltiplos filtros para consultas precisas que visam tipos de transações específicos ou períodos de tempo.
Paginação. Armazene tokens de paginação quando precisar retomar consultas grandes mais tarde. Monitore a profundidade da paginação para planejamento de desempenho, e use ordem ascendente quando precisar reproduzir eventos históricos em ordem cronológica.
Tratamento de erros. Lide com limites de taxa de forma elegante com backoff exponencial. Valide endereços antes de fazer solicitações, e armazene em cache os resultados quando apropriado para reduzir o uso da API.
Limitações e casos extremos
Um pequeno conjunto de endereços roteia para arquivamento legado, são limitados à fallback de escaneamento de slots, ou retornam vazio. A descoberta de contas de tokens antes do slot 111.491.819 também requer uma solução alternativa. Expanda as seções abaixo para obter todos os detalhes.Endereços não suportados e roteados especialmente
Endereços não suportados e roteados especialmente
Roteado para arquivamento antigo. Solicitações para estes endereços são roteadas para nosso sistema de arquivamento antigo.
Fallback de escaneamento de slot. Solicitações para esses endereços são encaminhadas para nosso novo sistema de arquivamento, e podem ser consultadas através de uma abordagem de escaneamento slot a slot (máx. 100 slots). No entanto, esses dados não são indexados.
Retorna vazio (
is_reserved_address). Solicitações são encaminhadas para nosso novo sistema de arquivamento, entretanto, os dados não são indexados, e as consultas retornam vazio.Solução alternativa: descoberta de conta de token histórica (antes do slot 111,491,819)
Solução alternativa: descoberta de conta de token histórica (antes do slot 111,491,819)
Para endereços com atividade de conta de token antes do slot 111,491,819, o filtro
tokenAccounts não pode determinar a propriedade porque o campo owner nos metadados de balanço de tokens ainda não existia. Para obter resultados completos, você pode descobrir essas contas de tokens manualmente, analisando instruções de transações iniciais, depois consultar getTransactionsForAddress em paralelo para cada uma.Como isso é diferente de getSignaturesForAddress?
Se você está familiarizado com o método padrãogetSignaturesForAddress, o getTransactionsForAddress colapsa fluxos de trabalho em várias etapas em uma única chamada e adiciona filtragem, ordenação e suporte a contas de tokens.
Obtenha transações completas em uma única chamada
Com ogetSignaturesForAddress, você precisa de duas etapas:
getTransactionsForAddress, é uma chamada:
Obtenha histórico de tokens em uma única chamada
Com ogetSignaturesForAddress, você precisa primeiro chamar getTokenAccountsByOwner e depois consultar para cada conta de token:
getTransactionsForAddress, você só precisa definir filters.tokenAccounts:
Capacidades adicionais
Ordenação cronológica
Ordenar transações do mais antigo para o mais novo com
sortOrder: 'asc'.Filtragem baseada no tempo
Filtrar por intervalos de tempo usando filtros
blockTime.Filtragem de status
Obtenha apenas transações bem-sucedidas ou falhas com o filtro
status.Paginação mais simples
Use
paginationToken em vez de before / until assinaturas confusas.Próximos passos
Guia de Indexação
Use getTransactionsForAddress para retroalimentar e sincronizar um índice Solana.
getTransfersByAddress
Histórico analisado e apenas transferência para pagamentos e reconciliação.
Referência da API
Esquema completo de solicitação e resposta para getTransactionsForAddress.
Visão geral de dados históricos
Compare todos os métodos de dados históricos do Solana.