Noções Básicas de Token-2022
9 exemplos para você começar com Token-2022 (Token Extensions) - 7 básicos e 2 intermediários.
Busque em todas as páginas da documentação
9 exemplos para você começar com Token-2022 (Token Extensions) - 7 básicos e 2 intermediários.
solana config set --url devnet
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --versioncargo add anchor-lang@0.32.1 anchor-spl@0.32.1ID do programa Token-2022: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.
Mesmo fluxo CLI do SPL clássico com ID de programa explícito.
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb --decimals 6Relacionado: Taxas de Transferência - extensão de taxa
A derivação da ATA inclui o ID do programa do token.
spl-token create-account <MINT> --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbRelacionado: Contas de Token Associadas (ATAs)
A exibição mostra as extensões habilitadas no mint/conta.
spl-token display <MINT> --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbRelacionado: Metadados e Ponteiro de Metadados
O Token-2022 base sem extensões espelha o comportamento clássico.
spl-token mint <MINT> 1 --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
spl-token transfer <MINT> 0.5 <RECIPIENT> --fund-recipient --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb1 minta um tokenowner da conta mint@solana-program/token-2022 fornece construtores de instruçãoRelacionado: Migrando do SPL Token
Clientes ramificam com base no programa do token antes de construir instruções.
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 do mint é o ID do programa do tokenRelacionado: Lendo NFTs (API DAS)
Extensão de receita comum configurada na inicialização do mint.
# Não há flag --enable-transfer-fees; a taxa é configurada por estas duas flags
spl-token create-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
--decimals 6 \
--transfer-fee-basis-points 100 \
--transfer-fee-maximum-fee 1--transfer-fee-maximum-fee é uma quantidade de UI: 1 limita a taxa a um tokenRelacionado: Taxas de Transferência
Caminho de código único para mints Token e 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 desserializa ambos os layouts de programaanchor_spl::token::{Mint, TokenAccount} - estes são apenas para Token clássico e sua verificação de proprietário rejeita contas Token-2022token_program real correspondendo ao proprietário do mintRelacionado: SPL Token em Programas
Programa personalizado invocado em cada transferência.
// ID do programa de hook de transferência armazenado na extensão do mint
// Token-2022 faz CPI para o hook com contas extras de remaining_accountsRelacionado: Transfer Hooks
| Necessidade | Extensão |
|---|---|
| Receita em transferências | Taxa de Transferência |
| Controle de conformidade | Estado de conta padrão + não transferível |
| Metadados no mint | Ponteiro de metadados |
| Privacidade | Transferência confidencial |
Relacionado: Melhores Práticas do Token-2022
Versões da stack: Esta página foi 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 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026