General
Tokens na Solana

Tokens na Solana

Mint Accounts e Controle de Fornecimento

A USDC possui $28 bilhões em fornecimento circulante. A Circle controla a mint authority. Uma organização decide quantos tokens USDC existem. A mint account torna isso explícito.

Todo token na Solana possui uma mint account que define as regras do token: fornecimento total, decimals, quem pode criar mais tokens, quem pode congelar accounts. Essas informações não estão escondidas no código do contrato — estão armazenadas em uma account pública que qualquer um pode inspecionar.

Mint accounts definem quem controla o fornecimento, quais permissões existem e como os tokens impõem escassez.

A Estrutura da Mint Account

Veja o que uma mint account contém:

rust
pub struct Mint {
    pub mint_authority: COption<Pubkey>,
    pub supply: u64,
    pub decimals: u8,
    pub is_initialized: bool,
    pub freeze_authority: COption<Pubkey>,
}

mint_authority - Quem pode criar novos tokens:

  • Definido como um endereço: Essa account pode fazer mint de tokens, aumentando o fornecimento

  • Definido como None: Ninguém pode fazer mint. O fornecimento é permanentemente fixo

  • Pode ser alterado uma vez, depois revogado

supply - Total de tokens em existência:

  • Aumenta quando tokens são mintados

  • Diminui quando tokens são queimados

  • Armazenado como unidades base brutas (sem considerar decimals)

decimals - Quantas casas decimais:

  • 0 decimals = indivisível (1 token = 1 unidade base)

  • 6 decimals = divisível até milionésimos (1 token = 1.000.000 unidades base)

  • 9 decimals = precisão como SOL (1 token = 1.000.000.000 unidades base)

freeze_authority - Quem pode congelar token accounts:

  • Definido como um endereço: Essa account pode impedir transferências de token accounts específicas

  • Definido como None: Sem capacidade de congelamento

  • Independente da mint authority

is_initialized - Se a mint account foi configurada:

  • Impede o uso de dados de account não inicializada

  • Definido como true quando a mint account é criada

Mint Authority e Controle de Fornecimento

A mint authority determina quem controla o fornecimento do token. Este único campo define se um token tem escassez fixa ou inflação ilimitada.

Tokens de fornecimento fixo:

rust
mint_authority: None

Ninguém pode criar mais tokens. O fornecimento é limitado permanentemente. Exemplos:

  • NFTs (fornecimento de 1, sem mint authority)

  • Moedas meme de fornecimento fixo (fornecimento total mintado no lançamento, authority revogada)

  • Tokens com limite (fornecimento máximo mintado, depois authority renunciada)

Uma vez que a mint authority é definida como None, é irrevogável. Você não pode restaurar a capacidade de minting. O fornecimento máximo do token é o que existe naquele momento.

Tokens de fornecimento ilimitado:

rust
mint_authority: Some(authority_pubkey)

Um endereço pode fazer mint de novos tokens quando quiser. Exemplos:

  • USDC (a Circle faz mint quando usuários depositam USD)

  • Stablecoins (emissores fazem mint contra colateral)

  • Tokens de governança com emissões contínuas

O endereço da authority pode ser uma carteira (controle centralizado), um endereço derivado de programa (controle programático) ou uma multisig (controle distribuído).

Minting controlado por governança:

Muitos protocolos definem a mint authority para um programa de governança. Detentores de tokens votam sobre o minting de novo fornecimento. O programa de governança possui a mint authority e executa operações de mint aprovadas.

Isso cria escassez programática: o fornecimento pode aumentar, mas apenas através de processos de governança definidos.

Freeze Authority

A freeze authority é um controle independente sobre o congelamento de token accounts. Uma account com freeze authority pode impedir que token accounts específicas transfiram tokens.

Por que a freeze authority existe:

Conformidade regulatória para stablecoins reguladas. A freeze authority da USDC permite que a Circle congele accounts vinculadas a atividades ilegais ou ordens judiciais. Sua token account de USDC pode ser congelada sem seu consentimento.

Prevenção de fraudes em plataformas centralizadas. Exchanges podem congelar token accounts se detectarem atividade suspeita.

Como o congelamento funciona:

A freeze authority chama a instrução FreezeAccount em token accounts específicas. Accounts congeladas não podem:

  • Transferir tokens para fora

  • Queimar tokens

  • Fechar a account

Elas ainda podem:

  • Receber tokens

  • Existir como accounts válidas

O descongelamento (thaw) reverte o congelamento. Apenas a freeze authority pode descongelar accounts congeladas.

Tokens sem freeze authority:

rust
freeze_authority: None

Ninguém pode congelar nenhuma token account. Transferências são sempre possíveis (assumindo saldo suficiente). Exemplos:

  • Tokens descentralizados onde congelamento contradiz a missão

  • Tokens de fornecimento fixo onde o controle é totalmente renunciado

  • Tokens comunitários que valorizam resistência à censura

Assim como a mint authority, revogar a freeze authority é permanente. Uma vez definida como None, o congelamento torna-se impossível para sempre.

Decimals e Precisão

Os decimals definem como os tokens se dividem em unidades menores.

0 decimals - Tokens indivisíveis:

rust
decimals: 0

Você pode possuir 1 token ou 5 tokens, mas não 0,5 tokens. Usado para:

  • NFTs (você possui 1, não 0,3 de um NFT)

  • Ingressos (1 ingresso, não um ingresso parcial)

  • Ações de voto (votos inteiros)

6 decimals - Padrão de stablecoins:

rust
decimals: 6

USDC e USDT usam 6 decimals, correspondendo a centavos de USD com precisão extra:

  • 1 USDC = 1.000.000 unidades base

  • 0,01 USDC (1 centavo) = 10.000 unidades base

  • $0,000001 USDC = 1 unidade base

9 decimals - Precisão de SOL:

rust
decimals: 9

SOL usa 9 decimals. 1 SOL = 1.000.000.000 lamports. Muitos tokens na Solana copiam essa precisão para consistência.

Por que isso importa:

Os decimals são definidos na criação da mint e nunca mudam. Escolha com cuidado:

  • Poucos decimals = precisão insuficiente para pequenas quantidades

  • Muitos decimals = números desnecessariamente grandes em unidades base

Programas trabalham com unidades base internamente, convertendo para representação decimal apenas para exibição. 1 USDC na sua carteira é armazenado como 1.000.000 unidades base. Transferências especificam unidades base. O campo decimal informa a carteiras e exploradores como exibir o número.

Exemplos Reais

USDC (EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v):

text
mint_authority: Some(endereço de authority da Circle)
supply: 28.000.000.000.000.000 (28 bilhões com 6 decimals)
decimals: 6
freeze_authority: Some(endereço de freeze authority da Circle)

A Circle pode fazer mint de novo USDC quando usuários depositam USD. A Circle pode congelar accounts para conformidade. O fornecimento flutua com base em depósitos/saques.

BONK (DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263):

text
mint_authority: None
supply: 93.000.000.000.000.000.000 (93 trilhões com 5 decimals)
decimals: 5
freeze_authority: None

Fornecimento fixo. Ninguém pode fazer mint de mais BONK. Ninguém pode congelar accounts. Descentralização total do controle de fornecimento.

Mint de NFT típica:

text
mint_authority: None
supply: 1
decimals: 0
freeze_authority: None

Um token indivisível. Sem capacidade de minting. Sem freeze authority. Escassez pura e liberdade de transferência.

Visualizando Dados da Mint Account

Toda mint account é pública. Qualquer um pode inspecionar a configuração de qualquer token.

No Solana Explorer:

Navegue até o endereço da mint (ex.: mint da USDC). Na aba "Token", veja:

  • Fornecimento atual

  • Decimals

  • Mint authority (ou "disabled" se None)

  • Freeze authority (ou "disabled" se None)

No Solscan:

Pesquise o endereço da mint. "Token Info" mostra todos os campos da mint account com formatação legível.

Programaticamente:

Consulte os dados da mint account usando a RPC da Solana:

typescript
const mint = await getMint(connection, mintAddress);

console.log("Supply:", mint.supply.toString());
console.log("Decimals:", mint.decimals);
console.log("Mint Authority:", mint.mintAuthority);
console.log("Freeze Authority:", mint.freezeAuthority);

Essa transparência é arquitetural. Tokens da Ethereum escondem authority no código do contrato. Tokens da Solana declaram authority em campos públicos da account. Sem necessidade de ler código — basta inspecionar a account.

Criando e Gerenciando Mint Accounts

Criar uma mint account requer:

  1. Alocar espaço para a mint account (82 bytes)

  2. Transferir SOL rent-exempt para a account (atualmente ~0,00144 SOL)

  3. Atribuir ownership ao programa SPL Token

  4. Inicializar a mint com decimals e authorities

Após a criação, a mint authority pode:

  • Fazer mint de novos tokens para qualquer token account

  • Transferir a mint authority para outro endereço

  • Revogar a mint authority (definir como None)

Após a criação, a freeze authority pode:

  • Congelar token accounts específicas

  • Descongelar accounts congeladas

  • Transferir a freeze authority para outro endereço

  • Revogar a freeze authority (definir como None)

O fornecimento aumenta através de minting e diminui através de burning. A mint account rastreia automaticamente o fornecimento total. Programas consultando o fornecimento da mint veem totais em tempo real.

Implicações de Segurança

Mint authority é confiança. Manter um token com mint authority significa confiar que essa authority não inflacionará o fornecimento de forma imprevisível.

Riscos de mint authority centralizada:

  • A authority pode fazer mint de tokens ilimitados, diluindo os detentores

  • Uma única chave privada controla o fornecimento (roubo ou perda)

  • Sem transparência nas decisões de minting

Soluções descentralizadas:

  • Definir mint authority como None (fornecimento fixo)

  • Usar programa de governança como mint authority (controle pelos detentores de tokens)

  • Usar multisig como mint authority (controle distribuído)

  • Publicar cronograma de minting e aplicar programaticamente

Freeze authority é poder. Tokens com freeze authority podem impedir você de transferir. Sua carteira contém tokens que você não pode mover.

Quando a freeze authority é razoável:

  • Stablecoins reguladas (requisitos de conformidade legal)

  • Plataformas centralizadas (prevenção de fraudes)

  • Tokens experimentais (controles de emergência)

Quando evitar:

  • Protocolos descentralizados (resistência à censura importa)

  • Tokens reserva de valor (liberdade de transferência é essencial)

  • Tokens comunitários (nenhuma authority única deve ter controle)

Sempre verifique mint e freeze authority antes de manter valor significativo. Um token com controle centralizado pode ser bom para negociação, mas arriscado para armazenamento a longo prazo.

Mint accounts revelam estruturas de poder. Quem controla o fornecimento? Quem pode congelar accounts? A mint account responde a essas perguntas explicitamente.

Próximo: entendendo token accounts e como os saldos são rastreados por proprietário.

Blueshift © 2026Commit: 1b88646