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, horário do bloco, metadados (como taxas, status e alterações 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 verificar seu resultado (sucesso ou falha).
- Exibição de Histórico de Transações: Mostrar aos usuários os detalhes de 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 com Falha: Inspecionar 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 fora da cadeia e análise.
Parâmetros da Solicitação
-
transactionSignature (string, obrigatório): A assinatura da transação codificada em base-58 que você deseja consultar.
-
options (objeto, opcional): Um objeto de configuração opcional que pode incluir:
commitment (string, opcional): Especifica o nível de compromisso (por exemplo, "finalized", "confirmed"). Se não for fornecido, o compromisso padrão do nó é usado (normalmente "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 convertidas em uma estrutura JSON legível sempre que possível. Esta é 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 por Helius, mas o padrão Solana pode ser diferente. É melhor especificar isso.
maxSupportedTransactionVersion (número, opcional): A versão máxima da transação que o endpoint RPC deve processar.
- Defina como
0 para incluir transações versionadas (incluindo legados).
- Se omitido, alguns nós podem apenas retornar transações legadas ou erro se transações versionadas forem encontradas. É altamente recomendável configurar isso para
0 para suportar todos os tipos de transações.
Estrutura da Resposta
O método retorna null se a transação não for encontrada (por exemplo, ainda não processada ou assinatura incorreta) ou não confirmada para o 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 época) 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 estiverem 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 de lamports das contas envolvidas antes do processamento da transação.
postBalances (array de u64): Saldos de lamports das contas envolvidas depois do processamento da transação.
preTokenBalances (array de objetos | null): Saldos de tokens das contas de token envolvidas antes da transação.
postTokenBalances (array de objetos | null): Saldos de tokens das contas de token envolvidas depois da transação.
innerInstructions (array de objetos | null): Uma série de instruções executadas como parte do CPI (Cross-Program Invocations) dentro desta transação.
logMessages (array de string | null): Uma série de mensagens de log emitidas pelas instruções da transação e quaisquer instruções internas.
loadedAddresses (objeto, opcional): Especifica as contas carregadas de tabelas de pesquisa de endereços para esta transação. Contém arrays 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 (array: [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 (array de strings).
- Se
encoding for "base58", "base64": Um array [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 (por exemplo, 0) para transações versionadas. undefined se maxSupportedTransactionVersion não estiver configurado e a transação for versionada.
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
commitment apropriado. Solicitar uma transação que não atingiu 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 registros detalhados. Tenha isso em mente ao processar os dados.
jsonParsed vs. json: Embora jsonParsed seja 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 configure
maxSupportedTransactionVersion: 0 em suas opções de 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 em formatos de transações mais recentes.
- Diferenças em Provedores RPC: Embora a API principal seja padrão, alguns provedores RPC podem oferecer análise aprimorada ou campos adicionais. Helius, por exemplo, fornece uma análise rica de transações.
Este guia oferece uma visão abrangente do método RPC getTransaction, capacitando você a buscar e entender dados detalhados de transações Solana.