getAccountInfo é uma ferramenta fundamental para consultar o blockchain Solana. Permite que você recupere todas as informações armazenadas associadas a uma chave pública de conta específica. Isso inclui o saldo de lamports da conta, o programa que a possui, se é executável e seus dados armazenados.
Casos de Uso Comuns
- Verificando Saldo SOL: Determine o saldo SOL nativo de qualquer conta.
- Verificando Existência da Conta: Verifique se uma conta com uma determinada chave pública foi inicializada (ou seja, possui lamports ou dados).
- Inspecionando Contas de Programas: Recupere os dados armazenados em uma conta pertencente a um programa, o que é crucial para entender o estado de um programa.
- Identificando o Proprietário da Conta: Descubra qual programa é o proprietário de uma conta. Isso ajuda a determinar como os dados da conta devem ser interpretados ou se é uma conta pertencente ao sistema.
- Verificando se uma Conta é Executável: Identifique se uma conta contém um programa implantado.
Parâmetros
-
publicKey(string, obrigatório): A chave pública codificada em base-58 da conta a ser consultada. -
config(objeto, opcional): Um objeto de configuração com os seguintes campos:commitment(string, opcional): Especifica o nível de compromisso a ser usado para a consulta. O padrão éfinalized.finalized: O nó consultará o bloco mais recente confirmado pela supermaioria do cluster como tendo atingido o bloqueio máximo.confirmed: O nó consultará o bloco mais recente que foi votado por uma supermaioria do cluster.processed: O nó consultará seu bloco mais recente. Note que o bloco pode não estar completo.
encoding(string, opcional): A codificação para dados da conta. O padrão ébase64.base58(lento)base64base64+zstd(se os dados estiverem comprimidos)jsonParsed: Se os dados da conta forem um estado de programa conhecido (por exemplo, contas de token, contas de staking), o nó tentará analisá-lo em uma estrutura JSON. Para contas de programas genéricos, geralmente retorna para binário (base64).
dataSlice(objeto, opcional): Limita os dados da conta retornados a um segmento específico. Disponível apenas para as codificaçõesbase58,base64oubase64+zstd.offset(número): O número de bytes do início dos dados da conta para começar o segmento.length(número): O número de bytes a serem retornados.
minContextSlot(número, opcional): O slot mínimo em que a solicitação pode ser avaliada.
Resposta
Se a conta for encontrada, o camporesult conterá um objeto com duas propriedades principais:
-
context(objeto): Contém metadados sobre a solicitação.slot(número): O slot em que a informação foi recuperada.apiVersion(string, opcional): A versão da API RPC.
-
value(objeto | null): Se a conta não existir, isso seránull. Caso contrário, é um objeto que contém:lamports(número): O número de lamports (1 SOL = 1.000.000.000 lamports) possuídos pela conta.owner(string): A chave pública codificada em base-58 do programa que possui esta conta.data(array | objeto | string): Os dados armazenados na conta. O formato depende do parâmetroencodingusado na solicitação.- Para
base64(padrão),base58,base64+zstd: Isso geralmente é um array[encoded_string, encoding_format], por exemplo,["string_data", "base64"]. - Para
jsonParsed: Isso pode ser um objeto JSON se os dados forem analisáveis pelo nó RPC (por exemplo, para contas de Token SPL). Caso contrário, pode retornar a["", "base64"]ou similar se os dados não forem reconhecidos como um layout padrão.
- Para
executable(booleano):truese a conta contiver um programa,falsecaso contrário.rentEpoch(número): A próxima época em que esta conta deve aluguel.space(número, opcional): O comprimento dos dados em bytes. (Nota: Os documentos oficiais do Solana listamspace, enquanto alguns provedores de RPC podem incluí-lo. Representa o espaço total alocado para os dados da conta). Para mais detalhes sobre dados de conta e desserialização, consulte nosso guia detalhado.
value no resultado será null.
Exemplo: Obtendo Informações da Conta
Vamos obter informações para o ID do Programa Serum V3 (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) na mainnet.
Nota: Substitua YOUR_API_KEY pela sua chave de API Helius nos exemplos abaixo.
Dicas para Desenvolvedores
- Desempenho: Para aplicativos que exigem verificações frequentes de várias contas, considere usar
getMultipleAccountspara agrupar solicitações e reduzir idas e voltas. - Desserialização de Dados: O campo
datageralmente requer desserialização com base nas estruturas de dados do programa proprietário. Ferramentas e bibliotecas específicas para o programa (por exemplo, biblioteca de Token SPL para contas de token) geralmente são necessárias. Nosso post no blog sobre desserialização de dados de conta fornece técnicas e exemplos úteis. - Limites de Taxa: Esteja atento aos limites de taxa do nó RPC, especialmente ao consultar um grande número de contas ou fazer solicitações frequentes.
- Gestão de Custos:
getAccountInfoé geralmente uma consulta de baixo custo, mas a sondagem frequente pode se acumular. Otimize seus padrões de consulta. - Use
jsonParsedcom Sabedoria: EmborajsonParsedpossa ser conveniente, pode não suportar todos os tipos de conta, e sua saída pode mudar se um programa atualizar suas estruturas de dados. Para aplicativos críticos, analisar dados binários com um layout conhecido oferece mais estabilidade. - Considere
dataSlice: Se você só precisar de uma pequena parte dos dados de uma conta, usedataSlicepara reduzir a quantidade de dados transferidos e potencialmente diminuir os custos de consulta.
Métodos Relacionados
getMultipleAccounts
Obtenha várias contas em uma única solicitação para melhor desempenho
getBalance
Obtenha apenas o saldo SOL sem detalhes completos da conta