Guia técnico completo das diferenças entre Token Program e Token-2022. Extensions, transfer hooks, confidential transfers e quando cada padrão faz sentido.
Disley Souza
5 de maio de 2026
Você está criando um token em Solana em 2026 e a primeira decisão é qual program usar: o Token Program clássico (SPL) ou o Token-2022 (Token Extensions Program). A resposta certa depende do seu caso de uso — este guia detalha cada diferença.
O Token Program original (`TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`) existe desde o início da Solana. É estável, auditado extensivamente e suportado por toda wallet, DEX e indexador existente. Se você quer um token simples de fungível — sem comportamentos customizados — SPL é a escolha segura.
O Token-2022 (`TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb`) é o programa moderno, lançado em 2024 e estabilizado em 2025. Introduz o conceito de Extensions — módulos opcionais que adicionam comportamentos ao token ou às contas de token.
Token-2022 não é "melhor" — é mais poderoso e mais complexo. Extensions adicionam surface de ataque. Sempre audite o Transfer Hook program independentemente do token.
import {
createInitializeMintInstruction,
createInitializeTransferFeeConfigInstruction,
getMintLen,
ExtensionType,
TOKEN_2022_PROGRAM_ID,
} from "@solana/spl-token";
const extensions = [ExtensionType.TransferFeeConfig];
const mintLen = getMintLen(extensions);
// Taxa de 1% (100 basis points), máximo 1000 tokens por transferência
const transferFeeConfigAuthority = keypair.publicKey;
const withdrawWithheldAuthority = keypair.publicKey;
const feeBasisPoints = 100; // 1%
const maxFee = BigInt(1000 * 10 ** decimals);
const transaction = new Transaction().add(
SystemProgram.createAccount({
fromPubkey: payer.publicKey,
newAccountPubkey: mintKeypair.publicKey,
space: mintLen,
lamports: await connection.getMinimumBalanceForRentExemption(mintLen),
programId: TOKEN_2022_PROGRAM_ID,
}),
createInitializeTransferFeeConfigInstruction(
mintKeypair.publicKey,
transferFeeConfigAuthority,
withdrawWithheldAuthority,
feeBasisPoints,
maxFee,
TOKEN_2022_PROGRAM_ID,
),
createInitializeMintInstruction(
mintKeypair.publicKey,
decimals,
mintAuthority,
freezeAuthority,
TOKEN_2022_PROGRAM_ID,
),
);Token-2022 ainda tem gaps de compatibilidade em 2026. DEXs como Raydium adicionaram suporte parcial. Verificar antes de lançar: a DEX onde você quer listar suporta o seu program ID? Wallets populares (Phantom, Solflare) suportam exibição de tokens Token-2022? Indexadores como Helius têm suporte completo.
Transfer Hook adiciona uma CPI obrigatória em toda transferência. Se o seu hook program tiver um bug, transferências falham globalmente. Audite o hook separadamente e implemente circuit breaker.
Próximo passo
Auditoria de segurança, arquitetura de sistemas blockchain, integração Solana — trabalhamos com equipes que não aceitam o suficiente.