Skip to main content
O método RPC getTransaction permite que você recupere informações detalhadas sobre uma transação confirmada fornecendo sua assinatura. Isso inclui o slot da transação, tempo de bloqueio, metadados (como taxas, status e mudanças de saldo) e a própria estrutura da transação.
Evite Agrupamento para Melhor DesempenhoAgrupar métodos de arquivamento aumenta significativamente a latência. Lotes com mais de 100 solicitações não são permitidos.

Casos de Uso Comuns

  • Verificação de Transação: Confirmar que uma transação foi processada e checar seu resultado (sucesso ou falha).
  • Exibição do Histórico de Transações: Mostrar aos usuários os detalhes de suas transações passadas em uma carteira ou explorador.
  • Auditoria e Análise: Examinar os detalhes de uma transação, incluindo instruções executadas, taxas pagas e contas envolvidas.
  • Depuração de Transações Falhadas: Inspecionar os campos logMessages e err nos metadados para entender por que uma transação falhou.
  • Indexação de Dados: Extrair informações específicas de transações para armazenamento e análise off-chain.

Parâmetros da Solicitação

  1. transactionSignature (string, obrigatório): A assinatura da transação codificada em base-58 que você deseja consultar.
  2. options (objeto, opcional): Um objeto de configuração opcional que pode incluir:
    • commitment (string, opcional): Especifica o nível de compromisso (ex., "finalized", "confirmed"). Se não for fornecido, o compromisso padrão do nó é usado (geralmente "finalized").
    • encoding (string, opcional): A codificação para os dados transaction. Valores comuns:
      • "json": Retorna os dados da transação em um formato JSON estruturado (mas as instruções ainda podem ser codificadas em base64).
      • "jsonParsed": Retorna os dados da transação com instruções específicas do programa analisadas em uma estrutura JSON legível para humanos sempre que possível. Essa é frequentemente a codificação mais útil para análise.
      • "base58": Retorna os dados da transação como uma string codificada em base-58.
      • "base64": Retorna os dados da transação como uma string codificada em base-64.
      • O padrão é "json" se não especificado pelo Helius, mas o padrão do Solana pode ser diferente. É melhor especificar isso.
    • maxSupportedTransactionVersion (número, opcional): A versão máxima de transação que o endpoint RPC deve processar.
      • Defina como 1 para incluir transações legadas, v0 e v1.
      • Se omitido ou definido abaixo da versão da transação, a solicitação falha com erro JSON-RPC -32015 (Transaction version (1) is not supported by the requesting client). Sempre defina isso como 1. Veja Suporte à transação v1.

Estrutura da Resposta

O método retorna null se a transação não for encontrada (ex., ainda não processada ou assinatura incorreta) ou não confirmada ao nível de compromisso especificado. Caso contrário, retorna um objeto com os seguintes campos:
  • slot (u64): O número do slot no qual a transação foi incluída em um bloco.
  • blockTime (i64 | null): O timestamp Unix estimado (segundos desde a era) quando o bloco contendo a transação foi produzido. Pode ser null se não disponível.
  • meta (objeto | null): Um objeto contendo metadados sobre a execução da transação. Pode ser null se a transação falhou antes de ser processada ou se os metadados não estão disponíveis.
    • err (objeto | null): Um objeto de erro se a transação falhou, caso contrário null.
    • fee (u64): A taxa em lamports paga pela transação.
    • preBalances (array de u64): Saldos em lamports de contas envolvidas antes da transação ser processada.
    • postBalances (array de u64): Saldos em lamports de contas envolvidas depois da transação ser processada.
    • preTokenBalances (array de objetos | null): Saldos de token das contas de token envolvidas antes da transação.
    • postTokenBalances (array de objetos | null): Saldos de token das contas de token envolvidas depois da transação.
    • innerInstructions (array de objetos | null): Uma matriz de instruções executadas como parte de CPI (Convocações entre Programas) dentro desta transação.
    • logMessages (array de string | null): Uma matriz de mensagens de log emitidas pelas instruções da transação e quaisquer instruções internas.
    • loadedAddresses (objeto, opcional): Especifica as contas carregadas das tabelas de consulta de endereços para esta transação. Contém matrizes writable e readonly de chaves públicas.
    • returnData (objeto, opcional): Dados retornados pela transação via sol_set_return_data e sol_get_return_data. Contém programId (string) e data (matriz: [string, encoding]).
    • computeUnitsConsumed (u64, opcional): O número de unidades de computação consumidas por esta transação.
  • transaction (objeto | array): A própria estrutura da transação. O formato depende do parâmetro encoding:
    • Se encoding for "jsonParsed" ou "json": Um objeto com message (contendo accountKeys, instructions, recentBlockhash, etc.) e signatures (matriz de strings).
    • Se encoding for "base58", "base64": Uma matriz [encoded_string, encoding_format_string].
  • version (“legacy” | número | indefinido): A versão da transação. Pode ser "legacy" para transações mais antigas ou um número (0 ou 1) para transações versionadas. undefined se maxSupportedTransactionVersion não estiver definido e a transação for versionada. Uma transação v1 também carrega um objeto transactionConfig em seu message com o orçamento de computação (computeUnitLimit, heapSize, loadedAccountsDataSizeLimit, priorityFee), substituindo as instruções do programa ComputeBudget. Seu priorityFee é a taxa total em lamports, não micro-lamports por unidade de computação.
Exemplo de Resposta (codificação jsonParsed):

Exemplos de Código

Dicas para Desenvolvedores

  • Finalidade da Transação: Certifique-se de consultar com um nível adequado commitment. Solicitar uma transação que não alcançou o compromisso especificado resultará em null.
  • Volume de Dados: O objeto de resposta pode ser muito grande, especialmente para transações complexas com muitas instruções ou logs detalhados. Tenha isso em mente ao processar os dados.
  • jsonParsed vs. json: Enquanto jsonParsed é muito conveniente, o suporte à análise depende das capacidades do nó RPC para programas específicos. Se um programa não for reconhecido, suas instruções podem voltar a um formato menos analisado mesmo com jsonParsed.
  • Transações Versionadas: Sempre defina maxSupportedTransactionVersion: 1 nas opções de sua solicitação para garantir que sua aplicação possa lidar com transações legadas e versionadas. Caso contrário, você pode perder dados ou encontrar erros para formatos de transações mais recentes.
  • Diferenças entre Provedores RPC: Embora a API principal seja padrão, alguns provedores RPC podem oferecer análise aprimorada ou campos adicionais. Helius, por exemplo, fornece rica análise de transações.
Este guia fornece uma visão geral abrangente do método RPC getTransaction, capacitando você a recuperar e entender dados detalhados de transações Solana.