Ativos na Solana

Tokens são ativos digitais que representam propriedade sobre diversas categorias de ativos. A tokenização permite a digitalização de direitos de propriedade. Tokens na Solana são chamados de tokens SPL (Solana Program Library).

The Token Program updates a mint and its token accounts while owners authorize balance changes

Esta seção aborda os conceitos básicos de como os tokens são representados na Solana. Consulte a seção SPL Token Basics para exemplos de código.

Pontos-chave

  • Token Programs contêm toda a lógica de instrução para interagir com tokens na rede (tanto fungíveis quanto não fungíveis).

  • Uma Mint Account representa um token específico e armazena metadados globais sobre o token, como o fornecimento total e a autoridade de emissão (endereço autorizado a criar novas unidades de um token).

  • Uma Token Account rastreia a propriedade individual de tokens para uma mint account específica para um proprietário específico.

  • Uma Associated Token Account é uma token account criada com um endereço derivado dos endereços do proprietário e da mint account.

Token Programs

O ecossistema Solana possui dois Token Programs principais. Código-fonte para ambos os programas abaixo.

Token Programs contém toda a lógica de instrução para interagir com tokens na rede (tanto fungíveis quanto não fungíveis). Todos os tokens na Solana são efetivamente contas de dados pertencentes a um Token Program.

Token ProgramToken Program

Mint account

Tokens na Solana são identificados exclusivamente pelo endereço de uma Mint Account pertencente ao Token Program. Esta conta atua como um contador global para um token específico e armazena dados como:

  • Supply: Fornecimento total do token
  • Decimals: Precisão decimal do token
  • Mint authority: A conta autorizada a criar novas unidades do token, aumentando o fornecimento
  • Freeze authority: A conta autorizada a congelar tokens numa Token Account, impedindo que sejam transferidos ou queimados

A autoridade de mint é configurada quando o mint account é inicializado. Ela autoriza futures emissões, mas não precisa ser a conta que criou ou pagou pelo mint account.

Mint AccountMint Account

Os detalhes completos armazenados em cada mint account incluem o seguinte:

Mint Account State
pub struct Mint {
/// Optional authority used to mint new tokens. The mint authority may only
/// be provided during mint creation. If no mint authority is present
/// then the mint has a fixed supply and no further tokens may be
/// minted.
pub mint_authority: COption<Pubkey>,
/// Total supply of tokens.
pub supply: u64,
/// Number of base 10 digits to the right of the decimal place.
pub decimals: u8,
/// Is `true` if this structure has been initialized
pub is_initialized: bool,
/// Optional authority to freeze token accounts.
pub freeze_authority: COption<Pubkey>,
}

Para referência, aqui está um link do Solana Explorer para a USDC Mint Account.

Token Account

O Token Program cria Token Accounts para rastrear a propriedade individual de cada unidade de token. Uma token account armazena dados como:

  • Mint: O token do qual a token account detém unidades
  • Owner: A conta autorizada a transferir tokens da token account
  • Amount: Número de tokens que a token account atualmente detém

Token AccountToken Account

Os detalhes completos armazenados em cada token account incluem o seguinte:

Token Account State
pub struct Account {
/// The mint associated with this account
pub mint: Pubkey,
/// The owner of this account.
pub owner: Pubkey,
/// The amount of tokens this account holds.
pub amount: u64,
/// If `delegate` is `Some` then `delegated_amount` represents
/// the amount authorized by the delegate
pub delegate: COption<Pubkey>,
/// The account's state
pub state: AccountState,
/// If is_native.is_some, this is a native token, and the value logs the
/// rent-exempt reserve. An Account is required to be rent-exempt, so
/// the value is used by the Processor to ensure that wrapped SOL
/// accounts do not drop below this threshold.
pub is_native: COption<u64>,
/// The amount delegated
pub delegated_amount: u64,
/// Optional authority to close the account.
pub close_authority: COption<Pubkey>,
}

Uma carteira precisa de uma token account para cada token (mint) que deseja deter, com o endereço da carteira definido como proprietário da token account. Cada carteira pode possuir múltiplas token accounts para o mesmo token (mint), mas uma token account só pode ter um proprietário e deter unidades de um token (mint).

Relação de ContasRelação de Contas

Observe que os dados de cada token account incluem um campo owner que identifica quem tem autoridade sobre o token account. Isso difere do proprietário do programa especificado no tipo base Account, que é o Token Program para todos os token accounts.

Associated Token Account

As Associated Token Accounts simplificam o processo de encontrar o endereço de uma token account para um mint e proprietário específicos. Pense na Associated Token Account como a token account "padrão" para um mint e proprietário específicos.

Uma Associated Token Account é criada com um endereço derivado do endereço do proprietário e do endereço da mint account. É importante entender que uma Associated Token Account é apenas uma token account com um endereço específico.

Isto introduz um conceito-chave no desenvolvimento Solana: Program Derived Address (PDA). Um PDA deriva um endereço deterministicamente usando entradas predefinidas, facilitando a localização do endereço de uma conta.

Associated Token AccountAssociated Token Account

Note que cada carteira precisa da sua própria token account para manter tokens do mesmo mint.

Relacionamento de Contas ExpandidoRelacionamento de Contas Expandido

Is this page helpful?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.