Ir al contenido principal

¿Qué son las extensiones de tokens SPL de Solana y cómo empezar a utilizarlas?

Actualizado el
26 de noviembre de 2025

4 minutos de lectura

Resumen

Solana Labs ha lanzado una ampliación del programa de tokens SPL nativo, denominada Token-2022. Token-2022 es un nuevo estándar que amplía el programa de tokens SPL y añade funcionalidades adicionales a través de las «Token Extensions». El programa Token-2022 está diseñado para ser un estándar de tokens más flexible y ampliable que permite una tokenómica más compleja y un mayor control para los desarrolladores.

¿Qué son las extensiones de tokens?

Las extensiones de tokens (también conocidas como Token-2022) son un programa avanzado de tokens en la cadena de bloques de Solana que amplía las capacidades del programa de tokens existente. Está diseñado para ofrecer a los desarrolladores una mayor flexibilidad y funcionalidades adicionales sin comprometer la seguridad de los tokens actuales.

Este programa incluye todas las características de su versión anterior (mantiene la compatibilidad con las instrucciones y los diseños de cuentas originales de Token) y, al mismo tiempo, ofrece nuevas instrucciones y funcionalidades. Estas ampliaciones introducen nuevos campos en las casas de moneda y en las cuentas.

Las extensiones de Mint incluyen actualmente:

CaracterísticaDescripción
Gastos de transferenciaComisiones (o impuestos) asociadas a la transferencia de tokens.
Cierre de la Casa de la MonedaPermite la cancelación de cuentas vacías de Mint.
Tokens que devengan interesesTokens que acumulan intereses con el paso del tiempo.
Tokens no transferiblesLos tokens no se pueden transferir una vez emitidos (también conocidos como «tokens vinculados al alma»).
Delegados permanentesEsta autoridad tiene privilegios de delegación ilimitados sobre cualquier cuenta de esa casa de emisión, lo que significa que puede quemar o transferir cualquier cantidad de tokens.
Gancho de transferenciaUn programa que debe interactuar con una instrucción de token (por ejemplo, la ejecución de regalías)
Puntero de metadatosUn puntero a una cuenta de metadatos que contiene información sobre la casa de la moneda.
MetadatosAlmacena información sobre la casa de la moneda, como el nombre, el símbolo y el logotipo (u otros campos personalizados).
(aún no disponible) Transferencias confidencialesPermite la transferencia de tokens con importes cifrados.

Actualmente, las extensiones de cuenta incluyen:

CaracterísticaDescripción
Se requiere una nota explicativa en las transferencias entrantesTodas las transferencias entrantes deben ir acompañadas de una nota (al igual que en una cuenta bancaria).
Propiedad inmutableUna vez establecido, el titular de una cuenta no se puede cambiar.
Estado predeterminado de la cuentaCondiciones preestablecidas que se aplican a la cuenta.
CPI GuardProhíbe determinadas acciones en las invocaciones entre programas

Es importante señalar que el Programa de Tokens Asociados no ha sufrido cambios, lo que significa que puede utilizarse tanto con el Programa de Tokens original como con el Programa de Tokens-2022. Sin embargo, para utilizar los métodos, programas e instrucciones existentes, tendrás que pasar el Token-2022 ID del programa como el programId parámetro. Por ejemplo, veamos el getAssociatedTokenAddressSync del @solana/spl-token biblioteca:

/**
* Get the address of the associated token account for a given mint and owner
*
* @param mint Token mint account
* @param owner Owner of the new account
* @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)
* @param programId SPL Token program account
* @param associatedTokenProgramId SPL Associated Token program account
*
* @return Address of the associated token account
*/
export function getAssociatedTokenAddressSync(
mint: PublicKey,
owner: PublicKey,
allowOwnerOffCurve = false,
programId = TOKEN_PROGRAM_ID,
associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID
): PublicKey {
if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();

const [address] = PublicKey.findProgramAddressSync(
[owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],
associatedTokenProgramId
);

return address;
}

Como puedes ver más arriba, el getAssociatedTokenAddressSync La función toma como argumento un programId parámetro cuyo valor por defecto es el ID original del programa Token (algo habitual en muchos métodos de tokens SPL). Para utilizar el programa Token-2022, debes introducir el ID del programa Token-2022 como el programId parámetro. El ejemplo siguiente muestra la derivación de las direcciones ATA tanto para el programa Token original como para el programa Token-2022:

import { TOKEN_2022_PROGRAM_ID, getAssociatedTokenAddressSync } from "@solana/spl-token";
// ...
const mint: PublicKey = new PublicKey(SOME_TOKEN_MINT); // a mint of a token created with the original standard
const mint2022: PublicKey = new PublicKey(SOME_TOKEN_MINT_2022); // a mint of a token created with the Token-2022 standard
const ataOld = getAssociatedTokenAddressSync(mint, owner, false);
const ata2022 = getAssociatedTokenAddressSync(mint2022, owner, false, TOKEN_2022_PROGRAM_ID); // 👈 pass in the Token-2022 program ID

Ten en cuenta que para mint2022, tuvimos que pasar por el TOKEN_2022_PROGRAM_ID (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb) como el programId parámetro.

El programa de 2022 aún se encuentra en fase de auditoría, pero está disponible para pruebas y desarrollo.

Cómo empezar a utilizar las extensiones de tokens

Echa un vistazo a nuestras guías sobre cómo dar los primeros pasos con el programa Token-2022:

¡Nos encanta recibir comentarios!

Si tienes algún comentario o sugerencia sobre nuevos temas, no dudes en hacérnoslo saber. Nos encantaría saber tu opinión.

Comparte esta guía