Conceptos básicos de Token-2022
9 ejemplos para empezar con Token-2022 (Extensiones de Token) - 7 básicos y 2 intermedios.
Busca en todas las páginas de la documentación
9 ejemplos para empezar con Token-2022 (Extensiones de Token) - 7 básicos y 2 intermedios.
solana config set --url devnet
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --versioncargo add anchor-lang@0.32.1 anchor-spl@0.32.1ID del programa Token-2022: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.
Mismo flujo de CLI que el Token SPL clásico con ID de programa explícito.
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --decimals 6Relacionado: Tarifas de transferencia - extensión de tarifa
La derivación de ATA incluye el ID del programa de token.
spl-token create-account <MINT> --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbRelacionado: Cuentas de Token Asociadas (ATA)
La visualización muestra las extensiones habilitadas en la acuñación/cuenta.
spl-token display <MINT> --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbRelacionado: Metadatos y puntero de metadatos
El Token-2022 base sin extensiones refleja el comportamiento clásico.
spl-token mint <MINT> 1 --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
spl-token transfer <MINT> 0.5 <RECIPIENT> --fund-recipient --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb1 acuña un token@solana-program/token-2022 proporciona constructores de instruccionesRelacionado: Migración desde SPL Token
Los clientes se ramifican según el programa de token antes de construir las instrucciones.
import { createSolanaRpc, address } from "@solana/kit";
const TOKEN_2022 = address("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const { value } = await rpc.getAccountInfo(address("MINT_PUBKEY")).send();
const isToken2022 = value?.owner === TOKEN_2022;
console.log("Token-2022 mint:", isToken2022);owner de la acuñación es el ID del programa de tokenRelacionado: Lectura de NFTs (API DAS)
Extensión de ingresos común configurada en la inicialización de la acuñación.
# No hay una bandera --enable-transfer-fees; la tarifa se configura con estas dos banderas
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
--decimals 6 \
--transfer-fee-basis-points 100 \
--transfer-fee-maximum-fee 1--transfer-fee-maximum-fee es una cantidad de UI: 1 limita la tarifa a un tokenRelacionado: Tarifas de transferencia
Ruta de código única para acuñaciones de Token y Token-2022.
use anchor_lang::prelude::*; // InterfaceAccount, Interface
use anchor_spl::token_interface::{Mint, TokenAccount, TokenInterface};
#[derive(Accounts)]
pub struct Deposit<'info> {
pub mint: InterfaceAccount<'info, Mint>,
#[account(mut, token::mint = mint)]
pub user_token: InterfaceAccount<'info, TokenAccount>,
pub token_program: Interface<'info, TokenInterface>,
}InterfaceAccount deserializa ambos diseños de programaanchor_spl::token::{Mint, TokenAccount} - esos son solo para Token clásico y su verificación de propietario rechaza las cuentas Token-2022token_program real que coincida con el propietario de la acuñaciónRelacionado: SPL Token en Programas
Programa personalizado invocado en cada transferencia.
// ID del programa de gancho de transferencia almacenado en la extensión de acuñación
// Token-2022 CPIs al gancho con cuentas adicionales de remaining_accountsRelacionado: Ganchos de transferencia
| Necesidad | Extensión |
|---|---|
| Ingresos en transferencias | Tarifa de transferencia |
| Puerta de enlace de cumplimiento | Estado de cuenta predeterminado + no transferible |
| Metadatos en la acuñación | Puntero de metadatos |
| Privacidad | Transferencia confidencial |
Relacionado: Mejores prácticas de Token-2022
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 19 jul 2026