Conceptos básicos de SPL Token
9 ejemplos para empezar con SPL Token: 7 básicos y 2 intermedios.
Busca en todas las páginas de la documentación
9 ejemplos para empezar con SPL Token: 7 básicos y 2 intermedios.
solana config set --url devnet
solana airdrop 2
spl-token --versioncargo add anchor-lang@0.32.1 anchor-spl@0.32.1
npm install @solana/kit@7.0.0ID del programa SPL Token: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.
Una cuenta de mint define los decimales, el suministro y las autoridades.
spl-token create-token --decimals 6decimals establece cómo las cantidades sin procesar se mapean a valores legibles por humanosNone significa que las cuentas no se pueden congelarRelacionado: Emisión y Quema - cambios de suministro
Lee los campos de suministro y autoridad antes de integrar clientes.
spl-token display <MINT>Supply son unidades enteras sin procesar (no cantidad de UI)Mint authority pubkey controla la inflaciónFreeze authority de disabled significa que no hay capacidad de congelaciónRelacionado: Autoridades - patrones de revocación
Las billeteras mantienen saldos en cuentas de token, no en la mint en sí.
spl-token create-account <MINT>Relacionado: Cuentas de Token Asociadas (ATAs)
Aumenta el suministro acreditando una cuenta de token.
spl-token mint <MINT> 1spl-token son cantidades de UI: 1 emite 1.0 token (entero sin procesar 1000000 con 6 decimales). Pasar 1000000 aquí emitiría un millón de tokens.Relacionado: Decimales y Cantidades
Mueve saldos sin cambiar el suministro total.
spl-token transfer <MINT> 0.5 <RECIPIENT_WALLET> --fund-recipient0.5 = medio token), no unidades base sin procesar--fund-recipient crea la ATA del destinatario si faltaRelacionado: Transferencias y Delegados
Los clientes consultan cuentas de token a través de RPC estándar.
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const owner = address("YOUR_WALLET");
const { value } = await rpc
.getTokenAccountsByOwner(owner, { mint: address("MINT_PUBKEY") }, { encoding: "jsonParsed" })
.send();
const balance = value[0]?.account.data.parsed.info.tokenAmount.uiAmount;
console.log("Balance:", balance);jsonParsed devuelve la cantidad de UI y la cantidad sin procesar juntasRelacionado: SOL Envuelto - SOL nativo como SPL
Elimina permanentemente tokens de la circulación.
# burn toma la dirección de la CUENTA DE TOKEN, no la mint
spl-token burn "$(spl-token address --token <MINT> --verbose | awk '/Associated token address/{print $NF}')" 0.10.1 = una décima parte de un token)Relacionado: Emisión y Quema
Los programas mueven tokens a través de invocaciones entre programas (CPI).
use anchor_lang::prelude::*;
use anchor_spl::token::{self, Mint, Token, TokenAccount, TransferChecked};
#[derive(Accounts)]
pub struct PayFee<'info> {
pub mint: Account<'info, Mint>,
#[account(mut, token::mint = mint, token::authority = authority)]
pub user_token: Account<'info, TokenAccount>,
#[account(mut, token::mint = mint)]
pub treasury_token: Account<'info, TokenAccount>,
pub authority: Signer<'info>,
pub token_program: Program<'info, Token>,
}
pub fn pay_fee(ctx: Context<PayFee>, amount: u64) -> Result<()> {
let decimals = ctx.accounts.mint.decimals;
let cpi = CpiContext::new(
ctx.accounts.token_program.to_account_info(),
TransferChecked {
mint: ctx.accounts.mint.to_account_info(),
from: ctx.accounts.user_token.to_account_info(),
to: ctx.accounts.treasury_token.to_account_info(),
authority: ctx.accounts.authority.to_account_info(),
},
);
token::transfer_checked(cpi, amount, decimals)?;
Ok(())
}Account<'info, TokenAccount> deserializa el diseño SPL y valida que el propietario es el programa Token clásicoTransferChecked pasa la mint y verifica los decimales en la cadena; el Transfer no verificado está obsoletotoken::mint fija ambos lados al mismo activo; una fuente no fijada es el clásico error de drenajeanchor_spl::token rechazan cuentas Token-2022; usa anchor_spl::token_interface para esasRelacionado: SPL Token en Programas
Bloquea el suministro después de la distribución inicial.
spl-token authorize <MINT> mint --disableRelacionado: Mejores Prácticas de SPL Token - lista de verificación de lanzamiento
Versiones de la pila: Esta página fue escrita 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: 16 jul 2026