getTokenAccountsByDelegate recupera todas las cuentas de tokens SPL que han autorizado una clave pública específica como delegada. Un delegado tiene autoridad para realizar determinadas acciones en la cuenta de tokens, como transferir o quemar tokens, hasta el importe delegado.
Este método resulta útil para servicios que administran autoridad delegada o necesitan descubrir sobre qué cuentas de tokens puede actuar una clave específica.
Casos de uso comunes
- Listar activos delegados: Muestra todas las cuentas de tokens para las que una billetera o un programa específicos han recibido autoridad delegada.
- Administración automatizada de tokens: Los servicios que realizan acciones en nombre de los usuarios (p. ej., creadores de mercado automatizados o protocolos de staking que administran recompensas tokenizadas) pueden usar este método para encontrar las cuentas con las que tienen autorización para interactuar.
- Auditar delegaciones: Revisa qué cuentas han delegado autoridad a una dirección específica.
- Revocar delegaciones: Identifica las cuentas de tokens cuya autoridad delegada debe revocarse (aunque la revocación en sí requiere una transacción independiente).
Parámetros de solicitud
-
delegatePubkey(string, obligatorio): La clave pública de la cuenta delegada codificada en base 58 cuyas cuentas de tokens asociadas quieres encontrar. -
filter(object, obligatorio): Un objeto JSON que debe especificarmintoprogramIdpara filtrar las cuentas:mint(string): La clave pública codificada en base 58 de una acuñación de token específica. Si se proporciona, la consulta solo devolverá las cuentas de tokens de este tipo específico que estén delegadas adelegatePubkey.programId(string): La clave pública codificada en base 58 del programa de tokens propietario de las cuentas. Normalmente será el programa de tokens SPL estándar (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA) o el programa Token-2022 (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb).
-
options(object, opcional): Un objeto de configuración opcional con los siguientes campos comunes:commitment(string, opcional): Especifica el nivel de compromiso.encoding(string, opcional): La codificación de los datos de la cuenta. Se recomienda ampliamente"jsonParsed"porque devuelve información de la cuenta legible para humanos. Otras opciones incluyen"base64"y"base64+zstd". Si no se especifica, el valor predeterminado es"base64".dataSlice(object, opcional): Te permite recuperar solo una sección específica de los datos de la cuenta. Contiene los camposoffset(usize) ylength(usize). Solo se aplica a las codificacionesbase58,base64obase64+zstd.minContextSlot(u64, opcional): El slot mínimo en el que se puede evaluar la solicitud.
Estructura de la respuesta
El camporesult.value de la respuesta JSON-RPC es un arreglo de objetos. Cada objeto representa una cuenta de tokens que tiene a delegatePubkey como delegado y coincide con los criterios de filter. Cada objeto del arreglo tiene dos campos:
pubkey(string): La clave pública de la propia cuenta de tokens codificada en base 58.account(object): Un objeto que contiene información detallada sobre la cuenta de tokens:lamports(u64): El saldo en lamports de la cuenta de tokens (para la exención del alquiler).owner(string): La clave pública del programa propietario de esta cuenta (p. ej., el programa de tokens).data: Los datos de la cuenta. Si se usa la codificación"jsonParsed", será un objeto con un campoprogram(p. ej.,"spl-token") y un campoparsedque contiene información estructurada:parsed.info: Un objeto con detalles como:mint(string): La dirección de acuñación del token.owner(string): El propietario de la cuenta de tokens (no el delegado).tokenAmount(object): El saldo total de tokens de esta cuenta (amount,decimals,uiAmount,uiAmountString).delegate(string): La clave pública del delegado (debe coincidir con el valordelegatePubkeyde la solicitud).delegatedAmount(object): La cantidad de tokens que el delegado tiene autorización para administrar (amount,decimals,uiAmount,uiAmountString).isNative(boolean): Indica si la cuenta contiene SOL envuelto.state(string): El estado de la cuenta de tokens (p. ej.,"initialized").
parsed.type(string): El tipo de cuenta (p. ej.,"account").
executable(boolean): Indica si la cuenta es ejecutable.rentEpoch(u64): La época en la que esta cuenta deberá pagar alquiler nuevamente.space(u64, si no se usajsonParsed): La longitud de los datos sin procesar de la cuenta en bytes.
jsonParsed):
Ejemplos de código
Consejos para desarrolladores
- Requisito de filtro: Debes proporcionar
mintoprogramIden el parámetro de filtro. No puedes consultar todas las cuentas delegadas de todos los tipos de tokens sin uno de estos filtros. - Codificación: Se recomienda ampliamente usar
"jsonParsed"en la opciónencodingpara facilitar el manejo de los datos, ya que decodifica los datos binarios de la cuenta en un formato JSON estructurado. - Rendimiento: Consultar con
programIdpuede consumir más recursos que consultar conmint, especialmente si el delegado tiene autoridad sobre muchos tipos de tokens diferentes. Algunos proveedores de RPC pueden aplicar límites de frecuencia más estrictos a este método. - Cantidad delegada: El valor
delegatedAmountde la respuesta indica la cantidad máxima de tokens que el delegado tiene autorización para usar actualmente. Puede ser menor que el valor totaltokenAmountde la cuenta. - Revocar la delegación: Este método solo recupera información. Para revocar una delegación, el propietario de la cuenta de tokens debe enviar una instrucción
Revokeal programa de tokens SPL.
getTokenAccountsByDelegate para encontrar cuentas de tokens SPL según su delegado autorizado.