Skip to main content
O método RPC getTokenAccountsByDelegate recupera todas as contas SPL Token que aprovaram uma chave pública específica como delegado. Um delegado tem autoridade para realizar certas ações na conta de token, como transferir ou queimar tokens, até o valor delegado. Este método é útil para serviços que gerenciam autoridade delegada ou precisam descobrir em quais contas de token uma chave específica pode atuar em nome de.

Casos Comuns de Uso

  • Listar Ativos Delegados: Exibir todas as contas de token para as quais uma carteira ou programa específico recebeu autoridade delegada.
  • Gerenciamento Automatizado de Tokens: Serviços que executam ações em nome dos usuários (por exemplo, formadores de mercado automatizados, protocolos de staking que gerenciam recompensas tokenizadas) podem usar isso para encontrar contas com as quais estão autorizados a interagir.
  • Auditoria de Delegações: Revisar quais contas delegaram autoridade para um endereço específico.
  • Revogação de Delegações: Identificar contas de token das quais a autoridade delegada precisa ser revogada (embora a revogação em si seja uma transação separada).

Parâmetros de Solicitação

  1. delegatePubkey (string, obrigatório): A chave pública codificada em base-58 da conta do delegado cujas contas de token associadas você deseja encontrar.
  2. filter (objeto, obrigatório): Um objeto JSON que deve especificar mint ou programId para filtrar as contas:
    • mint (string): A chave pública codificada em base-58 de um token mint específico. Se fornecido, a consulta retornará apenas contas de token deste tipo específico que estão delegadas para delegatePubkey.
    • programId (string): A chave pública codificada em base-58 do programa de token que possui as contas. Isso geralmente será o programa padrão SPL Token (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) ou o programa Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
  3. options (objeto, opcional): Um objeto de configuração opcional com os seguintes campos comuns:
    • commitment (string, opcional): Especifica o nível de comprometimento.
    • encoding (string, opcional): A codificação para dados de conta. "jsonParsed" é altamente recomendada, pois retorna informações de conta legíveis para humanos. Outras opções incluem "base64", "base64+zstd". O padrão é "base64" se não especificado.
    • dataSlice (objeto, opcional): Permite recuperar apenas uma fatia específica dos dados da conta. Contém campos offset (usize) e length (usize). Aplicável apenas para codificações base58, base64, ou base64+zstd.
    • minContextSlot (u64, opcional): O slot mínimo em que a solicitação pode ser avaliada.

Estrutura de Resposta

O campo result.value na resposta JSON-RPC é uma matriz de objetos. Cada objeto representa uma conta de token que tem delegatePubkey como seu delegado e corresponde aos critérios filter. Cada objeto na matriz tem dois campos:
  • pubkey (string): A chave pública codificada em base-58 da própria conta de token.
  • account (objeto): Um objeto contendo informações detalhadas sobre a conta de token:
    • lamports (u64): O saldo de lamports da conta de token (para isenção de aluguel).
    • owner (string): A chave pública do programa que possui esta conta (por exemplo, o programa Token).
    • data: Os dados da conta. Se a codificação "jsonParsed" for usada, isso será um objeto com um campo program (por exemplo, "spl-token") e um campo parsed contendo informações estruturadas:
      • parsed.info: Um objeto com detalhes como:
        • mint (string): O endereço de mint do token.
        • owner (string): O proprietário da conta de token (não o delegado).
        • tokenAmount (objeto): O saldo total de tokens nesta conta (amount, decimals, uiAmount, uiAmountString).
        • delegate (string): A chave pública do delegado (deve corresponder ao delegatePubkey da solicitação).
        • delegatedAmount (objeto): A quantidade de tokens que o delegado está autorizado a gerenciar (amount, decimals, uiAmount, uiAmountString).
        • isNative (boolean): Indica se a conta possui SOL encapsulado.
        • state (string): O estado da conta de token (por exemplo, "initialized").
      • parsed.type (string): O tipo da conta (por exemplo, "account").
    • executable (boolean): Se a conta é executável.
    • rentEpoch (u64): A época em que esta conta deverá aluguel novamente.
    • space (u64, se jsonParsed não for usado): O comprimento dos dados brutos da conta em bytes.
Exemplo de Resposta (com codificação jsonParsed):

Exemplos de Código

Dicas para Desenvolvedores

  • Requisito de Filtro: Você deve fornecer mint ou programId no parâmetro de filtro. Não é possível consultar todas as contas delegadas para todos os tipos de token sem um desses filtros.
  • Codificação: Usar "jsonParsed" para a opção encoding é altamente recomendado para facilitar o manuseio dos dados, pois decodifica os dados binários da conta em um formato JSON estruturado.
  • Desempenho: Consultar com programId pode ser mais intensivo em recursos do que consultar com mint, especialmente se o delegado tiver autoridade sobre muitos tipos de token diferentes. Alguns provedores de RPC podem ter limites de taxa mais rígidos para este método.
  • Quantidade Delegada: O delegatedAmount na resposta indica o número máximo de tokens que o delegado está atualmente autorizado a usar. Isso pode ser menos que o total tokenAmount na conta.
  • Revogação de Delegação: Este método apenas recupera informações. Para revogar uma delegação, o proprietário da conta de token deve enviar uma instrução Revoke para o programa SPL Token.
Este guia fornece uma visão geral abrangente de como usar getTokenAccountsByDelegate para encontrar contas SPL Token com base em seu delegado aprovado.