Token-2022 em Profundidade
Token-2022 (Token Extensions) é o programa de token Solana que mantém o modelo familiar de mint, conta e transferência do SPL Token clássico enquanto permite extensões opcionais anexarem campos e regras extras na inicialização.
Não é uma chain nova nem upgrade silencioso do programa clássico. É um ID de programa diferente com layout base compatível, contas maiores quando extensões estão habilitadas, e compatibilidade de cliente e venue que varia por extensão.
Esta página é o guarda-chuva para token-2022-extensions: como Token-2022 se relaciona ao Token clássico, como o modelo de extensão funciona, o que as extensões principais significam para produto e código, e como migração realmente acontece.
Resumo
- Token-2022 (
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb) é um programa de token superset: mesmos conceitos base de mint e conta de token do SPL Token clássico (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA), mais região de extensão type-length-value (TLV) para taxas, hooks, metadata, regras soulbound, exibição de yield e quantidades confidenciais. - Por que Importa: Escolher Token-2022 é decisão de produto e integração, não só flag CLI. ID de programa errado na derivação ATA, contas hook ausentes, ignorar taxas retidas ou assumir saldos clássicos sob mints confidenciais ou interest-bearing quebra carteiras, DEXs e cofres.
- Conceitos Chave: SPL Token clássico, ID de programa Token-2022, extensão de mint, extensão de conta, layout TLV, metadata / metadata pointer, transfer hook, permanent delegate, non-transferable, interest-bearing, default account state, confidential transfer, token_interface, migração (novo mint).
- Quando Usar: Você precisa de política ou dados on-mint que Token clássico não expressa, ou sua stack padroniza em Token-2022 para novos mints com matriz de suporte verificada.
- Limitações / Trade-offs: Nem toda carteira, roteador ou indexador suporta cada extensão. Extensões no init são frequentemente compromissos permanentes de produto. Caminhos confidenciais e pesados em hook elevam CU, complexidade de cliente e custo de conformidade.
- Tópicos Relacionados: Noções básicas Token-2022, taxas de transferência e hooks, metadata, permanent delegate e non-transferable, interest-bearing e default account state, confidential transfers e migrando do SPL Token.
Fundamentos
SPL Token clássico versus Token-2022
SPL Token clássico é o programa de longa data que a maioria das carteiras e DEXs assume por padrão. Seus layouts de mint e conta de token são fixos: supply, decimals, autoridades, saldos, delegates, estado frozen. Política além disso vive em programas separados (marketplaces, PDAs metadata Metaplex, wrappers de transferência customizados).
Token-2022 mantém esse layout base na frente da conta e anexa dados de extensão. Sem extensões, mint Token-2022 se comporta muito como mint clássico para mint, burn e transfer, mas:
- Mints e ATAs são de propriedade do programa Token-2022, não Token clássico.
- Endereços ATA dependem do ID de programa de token passado na derivação.
- Clientes devem codificar instruções contra Token-2022 (ou interfaces dual-aware), não assumir
Tokenkeg....
Não há caminho de upgrade compartilhado que transforme mint clássico existente em Token-2022. Mesma marca, programa novo significa novo mint, novas ATAs e migração operacional de holders e liquidez.
O modelo de extensão
Extensões são módulos opcionais inicializados quando o mint e/ou conta de token é criada (ou, para algumas extensões de conta, quando a conta é configurada). Vivem em região TLV após os campos SPL base.
Regras práticas:
- Escolha no nascimento. Muitas extensões de mint não podem ser removidas depois. Habilitar transfer fee, non-transferable ou permanent delegate é compromisso permanente de produto para aquele mint.
- Escopo mint versus conta. Config de taxa, id de programa hook, metadata pointer, permanent delegate e rate authority de juros ficam no mint. Taxas retidas, saldos confidenciais e algumas flags ficam em contas de token.
- Rent e tamanho escalam. Mais dados de extensão significam contas maiores e minimums rent-exempt mais altos.
- Clientes devem ser conscientes de extensão. Prefira
jsonParsedonde suportado, codecs oficiais Token-2022 ou DAS para leituras; ainda ramifique em ID de programa para escritas.
| Família | Intenção | Dor típica se ignorada |
|---|---|---|
| Transfer fee | Retém bps (e max) em transferências | Valores UX errados; taxas nunca harvestadas |
| Transfer hook | CPI programa customizado na transferência | Contas extras ausentes; txs falhas |
| Metadata / pointer | Name, symbol, URI no ou ao lado do mint | Branding em branco em carteiras não conscientes |
| Permanent delegate | Autoridade fixa pode sempre mover tokens | Poder de apreensão não divulgado |
| Non-transferable | Bloqueia transferências ordinárias (soulbound) | Vendas falhas; listagem DEX impossível |
| Interest-bearing | Exibição de crescimento de saldo por taxa | UI amount obsoleta |
| Default account state | Contas novas começam frozen ou initialized | Freeze surpresa até thaw |
| Confidential transfer | Quantidades ocultas ZK | amount público errado; carteiras não suportadas |
Metadata e metadata pointer
Token metadata embute name, symbol e URI em dados de extensão do mint para fungíveis simples não precisarem de PDA Token Metadata Metaplex para branding básico. Metadata pointer armazena pubkey apontando para conta de metadata externa quando você quer metadata fora do próprio mint.
URI geralmente referencia JSON off-chain (imagem, descrição); prefira armazenamento imutável a hosts HTTP mutáveis. Explorers e DAS indexam cada vez mais metadata Token-2022, mas algumas carteiras ainda esperam Metaplex para ativos tipo NFT. Metadata on-mint não por si só faz um NFT.
Detalhe: Metadata e Metadata Pointer.
Transfer hooks (conceito)
Mint transfer hook armazena id de programa customizado. Em toda transferência (e movimento relacionado), Token-2022 invoca esse programa para política rodar atomicamente com a movimentação do token: allowlists, ledgers de royalties, verificações de conformidade, contabilidade.
Programa hook deve implementar interface que Token-2022 espera e permanecer mínimo (CU é compartilhado com a transferência). Clientes devem resolver e passar contas extras que o hook exige; contas ausentes é a falha de integração mais comum. Prefira extensão transfer fee embutida quando a única necessidade é receita em basis points.
Detalhe: Transfer Hooks. Taxas: Taxas de Transferência.
Permanent delegate e non-transferable
Permanent delegate embute pubkey no mint que pode transferir tokens sem aprovação delegate usual por conta do holder. É controle forte de emissor para caminhos de reclaim, e divulgação séria de confiança para usuários.
Non-transferable marca o mint para transferências padrão falharem. Tokens são efetivamente soulbound após emissão (credenciais, badges, acesso não negociável). Mint e burn podem ainda aplicar sob autoridades que você configura. Mercados secundários e pools AMM são superfície de produto errada.
Frequentemente combinado com default account state frozen para contas novas não moverem fundos até freeze authority thaw após KYC ou fluxo de claim.
Detalhe: Permanent Delegate e Non-Transferable.
Interest-bearing, default account state e confidential transfers
Interest-bearing armazena taxa (e rate authority) no mint. Saldos exibidos ou efetivos crescem conforme fórmula baseada em tempo do Token-2022 sem cofre de empréstimo externo para matemática simples estilo poupança. UIs devem atualizar com leituras conscientes de extensão.
Default account state define se novas contas de token começam initialized ou frozen. Frozen-by-default é padrão de conformidade e airdrop: criação sucede, transferências esperam thaw.
Confidential transfers usam provas zero-knowledge para quantidades repousarem e moverem em forma criptografada enquanto programa ainda aplica conservação de valor. Campo público clássico amount não é o quadro econômico completo uma vez valor depositado em estado confidencial. Geração de prova é no lado do cliente e suporte de carteira ou RPC é mais estreito que transferências simples.
Detalhes: Interest-Bearing e Default Account State, Transferências Confidenciais.
Considerações de migração
Migrar do SPL Token clássico significa: projetar mint Token-2022 e conjunto de extensões; confirmar suporte carteira, DEX, custódia e indexador; snapshot holders (e posições LP); criar novo mint e airdrop ou claim em ATAs Token-2022; dual-run ambos os mints; depois sunset depósitos legados.
Não há instrução on-chain "upgrade este mint" entre programas. Programas que aceitam mints arbitrários de usuário devem usar token_interface (Anchor) ou caminhos dual equivalentes para clássico e Token-2022 coexistirem durante transição.
Detalhe: Migrando do SPL Token.
Mecânica e Interações
De ponta a ponta, um ativo Token-2022 toca três camadas:
Mint init (program ID Token-2022 + extension TLV)
|
v
Token accounts / ATAs (same program ID in derivation)
|
v
Instructions (transfer, mint, freeze, harvest, hook CPI, confidential proofs)
|
v
Clients, wallets, routers, vaults (branch on owner + extensions)
ID de programa é o primeiro ramo. Antes de construir PDAs ATA ou instruções de transferência, leia owner da conta mint. Se for Token-2022, todo builder, alvo CPI e pacote subsequentes devem corresponder.
Derivação ATA inclui programa de token. Com novo mint Token-2022 você sempre obtém novas ATAs. Passar tokenProgram errado produz endereço errado e bugs silenciosos de conta vazia.
Interações de extensão se compõem. Transfer fee mais hook significa matemática de taxa e contas hook ambas aplicam. Non-transferable mais permanent delegate bloqueia transferência de usuário enquanto delegate ainda pode mover valor. Default frozen mais thaw authority cria contas que não transferem até thaw. Confidencial mais depósito/saque público precisa estado UI multi-etapa (público, pendente, confidencial).
Programas dual mint Anchor. Prefira InterfaceAccount + TokenInterface em vez de constraints Token somente clássico quando cofres listam mints externos ou escolhidos pelo usuário.
CLI e stack. Com Solana CLI 3.0.10, aponte spl-token para Token-2022 via --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb. Trabalho local em validadores classe Agave 4.1.1, Surfpool ou LiteSVM ainda exige ordem correta de init de programa e extensão. @solana/kit 7.0.0 fornece RPC tipado e codecs; detecte owner via getAccountInfo, depois codifique com helpers conscientes de Token-2022.
Considerações Avançadas e Aplicações
Escolher Token-2022 de fato
Padrão para SPL Token clássico quando precisa máxima compatibilidade de venue e nenhuma extensão é necessária. Escolha Token-2022 quando extensão é requisito rígido de produto e você verificou suporte. Enviar Token-2022 só porque é mais novo é como lançamentos prendem liquidez.
Conjunto de extensão como modelo de ameaça
Trate init de mint como documento de segurança e legal:
- Permanent delegate e freeze authority são poderes de apreensão e gating; prefira multisig ou governança e divulgação clara.
- Transfer hooks expandem código confiável em toda transferência; audite hook como código de produção.
- Confidential transfers mudam o que outsiders e sistemas de risco podem observar; alinhe com conformidade antes da mainnet.
- Rate authority de juros pode mudar parâmetros de yield exibido; documente propriedade e processo de atualização.
Matriz cliente e venue antes da mainnet
Para cada extensão habilitada, verifique carteiras alvo (exibição, envio, criação ATA, valores líquidos de taxa), rotas DEX ou roteador e contas extras hook, suporte depósito custódia, semântica de saldo indexador ou DAS, e seus próprios caminhos de programa (token_interface, harvest de taxa, metas hook). Smoke-test valores pequenos na devnet e mainnet antes de liquidez grande.
Carga operacional
Transfer fees precisam caminhos harvest ou crank para tokens retidos chegarem à tesouraria. Hooks precisam resolvedores versionados de contas extras em todo caminho de cliente. Interest-bearing precisa política de refresh UI. Confidential precisa arquitetura de custódia de chaves e geração de prova (worker, servidor ou carteira especializada).
Greenfield é um mint e uma árvore ATA. Migração é registro dual mint, pools dual, analytics dual e plano de comunicação. Orçamente engenharia para dual-run; geralmente dura mais que dia de airdrop.
Equívocos Comuns
- "Token-2022 substitui Token clássico para todo mint." Token clássico permanece amplamente suportado. Token-2022 é opt-in por mint via programa diferente.
- "Posso fazer upgrade do meu mint clássico in-place." Não pode. Novo mint, novas ATAs, migração de holders e liquidez.
- "Sem extensões, ID de programa não importa." Sempre importa para propriedade, derivação ATA e codificação de instrução.
- "Extensão metadata é Metaplex." Objetivos de branding relacionados, modelos de conta diferentes.
- "Transfer hooks são política gratuita." Custam CU, contas extras e suporte completo de cliente; taxas simples devem usar extensão de taxa.
- "Permanent delegate é só outro admin opcional." Pode mover tokens de holder sob regras de extensão; trate como alta confiança.
- "Tokens non-transferable ainda podem listar em DEX." Transferências ordinárias falham; pools são encaixe errado.
- "Amount público é sempre riqueza total sob mints confidenciais." Saldos confidenciais não são totalmente refletidos no amount público após depósito.
- "token_interface é opcional para cofres multi-mint." Constraints somente clássico rejeitam depósitos Token-2022.
FAQs
O que é Token-2022 em uma frase?
Um programa de token Solana separado que preserva conceitos clássicos de mint e conta enquanto permite extensões TLV opcionais para taxas, hooks, metadata, política, exibição de yield e quantidades confidenciais.
Qual é o ID de programa Token-2022?
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb. SPL Token clássico permanece TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.
Quando um fungível novo deve usar Token-2022?
Quando precisa de extensão específica que Token clássico não fornece e verificou suporte de carteira, DEX e custódia para esse conjunto; senão Token clássico maximiza compatibilidade.
Posso adicionar extensões após mint criado?
Geralmente você configura extensões na inicialização de mint e conta. Planeje conjunto antes da mainnet; não assuma feature flags depois.
Como ATAs diferem para Token-2022?
Derivação ATA inclui id de programa de token. Sempre passe id de programa Token-2022 ao derivar e criar contas para mints Token-2022.
O que é transfer hook versus transfer fee?
Transfer fee retém basis points dentro do Token-2022. Transfer hook faz CPI para programa customizado para política arbitrária e exige contas extras de todo cliente.
Tokens non-transferable são iguais a contas frozen?
Não. Frozen é estado de conta que pode ser thawed. Non-transferable é regra em nível de mint que bloqueia transferências ordinárias para tokens daquele mint.
O que permanent delegate permite?
Autoridade fixa no mint pode mover tokens sem padrão delegate aprovado pelo holder usual. Divulgue e proteja chave com multisig ou governança quando usado.
Confidential transfers ocultam partes ou só quantidades?
Família de extensão é centrada em privacidade de quantidade via provas ZK e saldos criptografados; não assuma privacidade total de identidade em L1 público sem design mais amplo.
Como suporto Token clássico e Token-2022 em um programa Anchor?
Use tipos token_interface do anchor-spl (InterfaceAccount, TokenInterface) e ramifique clientes no id de programa owner do mint.
Como holders migram do Token clássico?
Operacionalmente: snapshot, novo mint Token-2022, airdrop ou claim em novas ATAs, dual-run, depois sunset. Não há instrução única de upgrade.
Para onde ir a seguir nesta seção?
Comece com Noções Básicas de Token-2022 para passos CLI e cliente concretos, depois páginas de extensão em Relacionados para metadata, política, yield, confidential transfers e migração.
Relacionados
- Noções Básicas de Token-2022 - id de programa, ATAs, CLI mint/transfer, token_interface
- Metadata e Metadata Pointer - branding on-mint e contas pointer
- Permanent Delegate e Non-Transferable - controle de emissor e mints soulbound
- Interest-Bearing e Default Account State - exibição de taxa e contas frozen-by-default
- Transferências Confidenciais - quantidades ZK, deposit/withdraw, provas cliente
- Migrando do SPL Token - suporte dual de programa e cutover de holders
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, Rust 1.91.1 e @solana/kit 7.0.0.