Mint Accounts and Supply Control
USDC has $28 billion in circulating supply. Circle controls the mint authority. One organization decides how many USDC tokens exist. The mint account makes this explicit.
Every token on Solana has a mint account that defines the token's rules: total supply, decimals, who can create more tokens, who can freeze accounts. These aren't hidden in contract code—they're stored in a public account anyone can inspect.
Mint accounts define who controls supply, what permissions exist, and how tokens enforce scarcity.
The Mint Account Structure
Here's what a mint account contains:
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 - Who can create new tokens:
Set to an address: That account can mint tokens, increasing supply
Set to
None: No one can mint. Supply is permanently fixedCan be changed once, then revoked
supply - Total tokens in existence:
Increases when tokens are minted
Decreases when tokens are burned
Stored as raw base units (not accounting for decimals)
decimals - How many decimal places:
0decimals = indivisible (1 token = 1 base unit)6decimals = divisible to millionths (1 token = 1,000,000 base units)9decimals = SOL-like precision (1 token = 1,000,000,000 base units)
freeze_authority - Who can freeze token accounts:
Set to an address: That account can prevent transfers from specific token accounts
Set to
None: No freezing capabilityIndependent from mint authority
is_initialized - Whether the mint account has been set up:
Prevents using uninitialized account data
Set to true when mint account is created
Mint Authority and Supply Control
Mint authority determines who controls token supply. This single field defines whether a token has fixed scarcity or unlimited inflation.
Fixed supply tokens:
mint_authority: NoneNo one can create more tokens. Supply is capped permanently. Examples:
NFTs (supply of 1, no mint authority)
Fixed-supply meme coins (total supply minted at launch, authority revoked)
Capped tokens (max supply minted, then authority renounced)
Once mint authority is set to None, it's irrevocable. You cannot restore minting capability. The token's maximum supply is whatever exists at that moment.
Unlimited supply tokens:
mint_authority: Some(authority_pubkey)One address can mint new tokens whenever they want. Examples:
USDC (Circle mints when users deposit USD)
Stablecoins (issuers mint against collateral)
Governance tokens with ongoing emissions
The authority address could be a wallet (centralized control), a program-derived address (programmatic control), or a multisig (distributed control).
Governance-controlled minting:
Many protocols set mint authority to a governance program. Token holders vote on minting new supply. The governance program has mint authority and executes approved mint operations.
This creates programmatic scarcity: supply can increase, but only through defined governance processes.
Freeze Authority
Freeze authority is independent control over token account freezing. An account with freeze authority can prevent specific token accounts from transferring tokens.
Why freeze authority exists:
Compliance for regulated stablecoins. USDC's freeze authority allows Circle to freeze accounts linked to illegal activity or court orders. Your USDC token account can be frozen without your consent.
Fraud prevention for centralized platforms. Exchanges can freeze token accounts if they detect suspicious activity.
How freezing works:
Freeze authority calls FreezeAccount instruction on specific token accounts. Frozen accounts cannot:
Transfer tokens out
Burn tokens
Close the account
They can still:
Receive tokens
Exist as valid accounts
Thawing reverses the freeze. Only freeze authority can thaw frozen accounts.
Tokens without freeze authority:
freeze_authority: NoneNo one can freeze any token account. Transfers are always possible (assuming sufficient balance). Examples:
Decentralized tokens where freezing contradicts the mission
Fixed-supply tokens where control is fully renounced
Community tokens valuing censorship resistance
Like mint authority, revoking freeze authority is permanent. Once set to None, freezing becomes impossible forever.
Decimals and Precision
Decimals define how tokens split into smaller units.
0 decimals - Indivisible tokens:
decimals: 0You can own 1 token or 5 tokens, but not 0.5 tokens. Used for:
NFTs (you own 1, not 0.3 of an NFT)
Tickets (1 ticket, not a partial ticket)
Voting shares (whole votes)
6 decimals - Stablecoin standard:
decimals: 6USDC and USDT use 6 decimals, matching USD cents with extra precision:
1 USDC = 1,000,000 base units
0.01 USDC (1 cent) = 10,000 base units
$0.000001 USDC = 1 base unit
9 decimals - SOL precision:
decimals: 9SOL uses 9 decimals. 1 SOL = 1,000,000,000 lamports. Many Solana tokens copy this precision for consistency.
Why this matters:
Decimals are set at mint creation and never change. Choose carefully:
Too few decimals = insufficient precision for small amounts
Too many decimals = unnecessarily large numbers in base units
Programs work with base units internally, converting to decimal representation only for display. 1 USDC in your wallet is stored as 1,000,000 base units. Transfers specify base units. The decimal field tells wallets and explorers how to display the number.
Real Examples
USDC (EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v):
mint_authority: Some(Circle's authority address)
supply: 28,000,000,000,000,000 (28 billion with 6 decimals)
decimals: 6
freeze_authority: Some(Circle's freeze authority address)Circle can mint new USDC when users deposit USD. Circle can freeze accounts for compliance. Supply fluctuates based on deposits/withdrawals.
BONK (DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263):
mint_authority: None
supply: 93,000,000,000,000,000,000 (93 trillion with 5 decimals)
decimals: 5
freeze_authority: NoneFixed supply. No one can mint more BONK. No one can freeze accounts. Total decentralization of supply control.
Typical NFT mint:
mint_authority: None
supply: 1
decimals: 0
freeze_authority: NoneOne indivisible token. No minting capability. No freeze authority. Pure scarcity and transfer freedom.
Viewing Mint Account Data
Every mint account is public. Anyone can inspect any token's configuration.
On Solana Explorer:
Navigate to the mint address (e.g., USDC's mint). Under "Token" tab, see:
Current supply
Decimals
Mint authority (or "disabled" if None)
Freeze authority (or "disabled" if None)
On Solscan:
Search mint address. "Token Info" shows all mint account fields with human-readable formatting.
Programmatically:
Query the mint account data using Solana RPC:
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);This transparency is architectural. Ethereum tokens hide authority in contract code. Solana tokens declare authority in public account fields. No code reading required—just inspect the account.
Creating and Managing Mint Accounts
Creating a mint account requires:
Allocate space for the mint account (82 bytes)
Transfer rent-exempt SOL to the account (currently ~0.00144 SOL)
Assign ownership to SPL Token program
Initialize the mint with decimals and authorities
After creation, mint authority can:
Mint new tokens to any token account
Transfer mint authority to another address
Revoke mint authority (set to None)
After creation, freeze authority can:
Freeze specific token accounts
Thaw frozen accounts
Transfer freeze authority to another address
Revoke freeze authority (set to None)
Supply increases through minting, decreases through burning. The mint account automatically tracks total supply. Programs querying mint supply see real-time totals.
Security Implications
Mint authority is trust. Holding a token with mint authority means trusting that authority won't inflate supply unpredictably.
Centralized mint authority risks:
Authority can mint unlimited tokens, diluting holders
Single private key controls supply (theft or loss)
No transparency on minting decisions
Decentralized solutions:
Set mint authority to None (fixed supply)
Use governance program as mint authority (token holder control)
Use multisig as mint authority (distributed control)
Publish minting schedule and enforce programmatically
Freeze authority is power. Tokens with freeze authority can prevent you from transferring. Your wallet holds tokens you can't move.
When freeze authority is reasonable:
Regulated stablecoins (legal compliance requirements)
Centralized platforms (fraud prevention)
Experimental tokens (emergency controls)
When to avoid it:
Decentralized protocols (censorship resistance matters)
Store-of-value tokens (transfer freedom essential)
Community tokens (no single authority should control)
Always check mint and freeze authority before holding significant value. A token with centralized control might be fine for trading but risky for long-term storage.
Mint accounts reveal power structures. Who controls supply? Who can freeze accounts? The mint account answers these questions explicitly.
Next: understanding token accounts and how balances are tracked per owner.