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.
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
logMessageseerrnos 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
-
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 (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 dadostransaction. 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
1para 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 como1. Veja Suporte à transação v1.
- Defina como
Estrutura da Resposta
O método retornanull 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 sernullse não disponível.meta(objeto | null): Um objeto contendo metadados sobre a execução da transação. Pode sernullse 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árionull.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 matrizeswritableereadonlyde chaves públicas.returnData(objeto, opcional): Dados retornados pela transação viasol_set_return_dataesol_get_return_data. ContémprogramId(string) edata(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âmetroencoding:- Se
encodingfor"jsonParsed"ou"json": Um objeto commessage(contendoaccountKeys,instructions,recentBlockhash, etc.) esignatures(matriz de strings). - Se
encodingfor"base58","base64": Uma matriz[encoded_string, encoding_format_string].
- Se
version(“legacy” | número | indefinido): A versão da transação. Pode ser"legacy"para transações mais antigas ou um número (0ou1) para transações versionadas.undefinedsemaxSupportedTransactionVersionnão estiver definido e a transação for versionada. Uma transação v1 também carrega um objetotransactionConfigem seumessagecom o orçamento de computação (computeUnitLimit,heapSize,loadedAccountsDataSizeLimit,priorityFee), substituindo as instruções do programa ComputeBudget. SeupriorityFeeé a taxa total em lamports, não micro-lamports por unidade de computaçã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á emnull. - 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.
jsonParsedvs.json: EnquantojsonParsedé 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 comjsonParsed.- Transações Versionadas: Sempre defina
maxSupportedTransactionVersion: 1nas 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.
getTransaction, capacitando você a recuperar e entender dados detalhados de transações Solana.