Skip to main content
O método RPC 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

  1. publicKey (string, obrigatório): A chave pública codificada em base-58 da conta a ser consultada.
  2. 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)
      • base64
      • base64+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ções base58, base64 ou base64+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 campo result 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âmetro encoding usado 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.
    • executable (booleano): true se a conta contiver um programa, false caso 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 listam space, 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.
Se a conta não for encontrada, o campo 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 getMultipleAccounts para agrupar solicitações e reduzir idas e voltas.
  • Desserialização de Dados: O campo data geralmente 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 jsonParsed com Sabedoria: Embora jsonParsed possa 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, use dataSlice para 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