getMultipleAccounts é uma maneira altamente eficiente de buscar informações para uma lista de contas Solana simultaneamente. Em vez de fazer solicitações getAccountInfo individuais para cada conta, getMultipleAccounts permite que você agrupe essas solicitações, reduzindo a sobrecarga de rede e melhorando a capacidade de resposta da sua aplicação.
Casos Comuns de Uso
- Carregamento em Lote de Dados de Conta: Quando seu aplicativo precisa exibir ou processar dados de várias contas conhecidas (por exemplo, contas de token de um usuário, uma lista de configurações de programa on-chain).
- Rastreadores de Portfólio: Buscando saldos e estados de várias contas de token pertencentes a um usuário.
- Interfaces de Marketplace: Exibindo detalhes de vários NFTs ou itens listados buscando seus dados de conta de uma só vez.
- Melhoria de Desempenho de dApps: Reduzindo significativamente o número de chamadas RPC, levando a tempos de carregamento mais rápidos e uma melhor experiência do usuário, especialmente ao lidar com muitas contas.
Parâmetros de Solicitação
-
pubkeys(arraydestring, obrigatório):- Um array de strings de chave pública codificadas em base-58 para as contas que você deseja consultar.
- No máximo 100 chaves públicas por solicitação.
- Exemplo:
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, opcional): Um objeto de configuração contendo um ou mais dos seguintes campos:commitment(string): Especifica o nível de compromisso para a consulta (por exemplo,"finalized","confirmed","processed").encoding(string): A codificação para os dados da conta. As opções incluem:"base64"(padrão): Codificação padrão base64."base58": Mais lenta, mas pode ser útil em alguns contextos."base64+zstd": Dados comprimidos zstd codificados em base64."jsonParsed": Se a conta for propriedade de um programa para o qual o nó RPC possui um parser (por exemplo, Programa SPL Token, Programa Stake), o campodataserá um objeto JSON. Isso é muito útil para dados estruturados.
dataSlice(object): Permite buscar apenas uma parte específica dos dados da conta. Isso é útil para contas grandes onde você só precisa de uma pequena parte das informações.offset(usize): O deslocamento em bytes a partir do início dos dados da conta.length(usize): O número de bytes a retornar a partir do deslocamento.- Nota:
dataSliceestá disponível apenas para codificaçõesbase58,base64oubase64+zstd.
minContextSlot(u64): O slot mínimo em que a solicitação pode ser avaliada.
Estrutura de Resposta
O objeto de resposta JSON-RPC terá um camporesult contendo:
context(object):slot(u64): O slot no qual a informação foi obtida.apiVersion(string, opcional): A versão da API do nó.
value(array):- Um array onde cada elemento corresponde à chave pública no mesmo índice no array
pubkeysda solicitação. - Cada elemento será:
null: Se a conta na chave pública especificada não existir ou ocorrer um erro específico para aquela conta.- Um Objeto de Conta com os seguintes campos:
lamports(u64): O número de lamports de propriedade da conta.owner(string): A chave pública codificada em base-58 do programa que possui a conta.data(arrayouobject): Os dados da conta. SeencodingforjsonParsede existir um parser, isso será um objeto JSON. Caso contrário, é tipicamente um array["encoded_string", "encoding_format"](por exemplo,["SGVsbG8=", "base64"]).executable(boolean): Indica se a conta contém um programa (é executável).rentEpoch(u64): O próximo epoch no qual esta conta deverá alugar.space(u64): O comprimento dos dados da conta em bytes.
- Um array onde cada elemento corresponde à chave pública no mesmo índice no array
Exemplos
1. Buscar Informações Básicas para Duas Contas
Este exemplo busca dados para duas contas: o SOL Llama (um NFT) e o Serum Dex Program v3.2. Buscar Dados de Conta de Token Analisados
Este exemplo busca dados para duas contas SPL Token e solicita a codificaçãojsonParsed para obter dados estruturados.
Dicas para Desenvolvedores
- Máximo de 100 Contas: Você pode solicitar no máximo 100 contas por chamada.
- Atomicidade: A solicitação não é atômica no sentido de que, se a busca de uma conta falhar, outras ainda podem ter sucesso. Verifique cada elemento no array
valuequanto anull. - Conveniência
jsonParsed: Usar a codificaçãojsonParsedé altamente recomendável ao lidar com tipos comuns de contas, como contas SPL Token, pois isso evita a desserialização manual. dataSlicepara Contas Grandes: Para contas muito grandes (por exemplo, algumas contas de estado de programa), usedataSlicepara buscar apenas os bytes necessários e evitar transferência excessiva de dados.- Tratamento de Erros: Esteja preparado para lidar com as entradas
nullna resposta na arrayvalue, indicando que uma conta não foi encontrada ou não pôde ser buscada.
getMultipleAccounts, você pode criar aplicações Solana mais performantes e escaláveis.
Métodos Relacionados
getAccountInfo
Buscar informações detalhadas para uma única conta
getProgramAccounts
Obter todas as contas de propriedade de um programa específico