Anchor
SPL Token com Anchor

SPL Token com Anchor

Instrução Set Authority

Altera a autoridade de uma conta. Isso pode ser usado para revogar ou transferir autoridades em contas Mint e contas de Token.

Antes de podermos alterar qualquer autoridade, precisaremos já ter:

  • Inicializado uma conta Mint ou conta Token.

  • A conta deve ter a autoridade que desejamos alterar configurada.

Instrução com Anchor

Com o Anchor, podemos usar o método set_authority do programa Token para alterar autoridades.

rust
use anchor_spl::token::{self, SetAuthority, AuthorityType};

// Definir nova autoridade
token::set_authority(
    ctx.accounts.set_authority_ctx(),
    Some(new_authority),
    AuthorityType::MintTokens,
)?;

// Revogar autoridade (passar None)
token::set_authority(
    ctx.accounts.set_authority_ctx(),
    None,
    AuthorityType::MintTokens,
)?;

Contexto da Instrução

Aqui está como definir a estrutura de contexto para a instrução set_authority:

rust
#[derive(Accounts)]
pub struct SetTokenAuthority<'info> {
    pub current_authority: Signer<'info>,
    #[account(mut)]
    pub account: Account<'info, TokenAccount>,
    pub token_program: Program<'info, Token>,
}

impl<'info> SetTokenAuthority<'info> {
    pub fn set_authority_ctx(&self) -> CpiContext<'_, '_, '_, 'info, SetAuthority<'info>> {
        let cpi_program = self.token_program.to_account_info();
        let cpi_accounts = SetAuthority {
            current_authority: self.current_authority.to_account_info(),
            account: self.account.to_account_info(),
        };
        CpiContext::new(cpi_program, cpi_accounts)
    }
}
Blueshift © 2026Commit: 1b88646