Anchor
SPL Token com Anchor

SPL Token com Anchor

Curso SPL Token com Anchor - Criar e gerenciar tokens usando o framework Anchor

O Token Program

Na Solana, tudo relacionado a tokens é gerenciado pelo SPL Token Program e pelo Token2022 Program: o framework de tokens nativo da Solana que define como todos os tokens são criados, gerenciados e transferidos.

É um programa único e unificado que gerencia todas as operações de tokens na rede, garantindo consistência e interoperabilidade.

A decisão de ter uma interface única e unificada para todos os tokens na Solana cria uma implementação fácil que pode ser replicada em todos os dApps (aplicações descentralizadas) e integrações (como carteiras, ...)

Para o Anchor, tudo relacionado a tokens pode ser encontrado no crate anchor-spl. Por esta razão, após ter inicializado um workspace do Anchor, podemos simplesmente fazer:

cargo add anchor-spl

Se você não está familiarizado com o Anchor, recomendamos que faça nosso Anchor for Dummies antes de continuar.

Contas Mint e Token

Se você está familiarizado com o Anchor, sabe que eles têm um conjunto de macros que ajudam o usuário a abstrair muita da complexidade relacionada à inicialização de contas.

O mesmo funciona aqui para contas Mint, Token e Associated Token.

Conta Mint

Graças às macros que o Anchor oferece, é assim que podemos criar facilmente uma conta Mint:

rust
#[derive(Accounts)]
pub struct CreateMint<'info> {
    #[account(mut)]
    pub signer: Signer<'info>,
    #[account(
        init,
        payer = signer,
        mint::decimals = 6,
        mint::authority = signer.key(),
    )]
    pub mint: Account<'info, Mint>,
    pub system_program: Program<'info, System>,
    pub token_program: Program<'info, Token>,
}

Conta Token

O mesmo se aplica à conta Token. Criar uma conta Token através de macros ficaria assim:

rust
#[derive(Accounts)]
pub struct CreateToken<'info> {
    #[account(mut)]
    pub signer: Signer<'info>,
    pub mint: Account<'info, Mint>,
    #[account(
        mut,
        token::mint = mint,
        token::authority = signer,
    )]
    pub token: Account<'info, TokenAccount>,
    pub system_program: Program<'info, System>,
    pub token_program: Program<'info, Token>,
}

Conta Associated Token

O mesmo vale para a conta Associated Token. Criar uma conta Associated Token através de macros seria similar à criação de uma conta Token, a única diferença são as constraints e ficaria assim:

rust
#[derive(Accounts)]
pub struct CreateToken<'info> {
    #[account(mut)]
    pub signer: Signer<'info>,
    pub mint: Account<'info, Mint>,
    #[account(
        mut,
        associated_token::mint = mint,
        associated_token::authority = signer,
    )]
    pub token: Account<'info, TokenAccount>,
    pub system_program: Program<'info, System>,
    pub token_program: Program<'info, Token>,
    pub associated_token_program: Program<'info, AssociatedToken>,
}
Blueshift © 2026Commit: 1b88646