Skip to main content
Account TypeKey Features
Mint AccountsSolana Account
  • Represents a unique mint and optionally can store token-metadata.
  • Functionally equivalent to SPL mints.
  • Sponsored rent exemption via custom rent-config
Token AccountsSolana account
  • Stores token balances of mints (SPL, Token-2022, or Light)
  • Sponsored rent exemption via custom rent-config

Rent Config by Light Token Program

  1. The rent-exemption for light account creation is sponsored by the Light Token Program.
  2. Transaction payer’s pay rent
    to keep accounts “active”.
  3. “Inactive” accounts (rent below one epoch) get automatically compressed.
  4. The account’s state is cryptographically preserved and will be loaded into hot account state in-flight, when the account is used again.
The hot state fee is paid for by the transaction payer when writing to the respective account.

Mint Accounts

Light mints are on-chain accounts like SPL mints, but with rent-exemption paid for by the Token program, instead of the user.
Light-mints uniquely represent a token on Solana and store its global metadata, similar to SPL mint accounts with few core differences:
  1. Tokens created from light-mints are light-tokens.
  2. Token metadata (name, symbol, URI) is stored as an extension in the struct.
Light-TokenSPL-Token
Mint Account0.00001 SOL0.0015 SOL
Diagram showing light-mint compressed account structure with three components: Hash (identifier for light-mint in purple box), Account (struct containing BaseMint with SPL-compatible fields, light-mint Data for program state, and optional Extensions for Token Metadata), and BasemintData (containing Supply, Decimals, Mint Authority, and Freeze Authority fields) with Token Metadata extension
The metadata field is used by the Compressed Token Program to store the internal state of a light-mint. The BaseMint field replicates the field layout and serialization format of SPL Mint accounts. The struct is serialized with Borsh to match the on-chain format of SPL tokens and mints. Here is how light-mints and SPL mints compare:
FieldLight-MintSPL Mint
mint_authority
supply
decimals
is_initialized
freeze_authority
Light-Mint Data-
Extensionsvia Token-2022

Token Account

Light token accounts are on-chain accounts like SPL token accounts, but with rent-exemption paid for by the Token program, instead of the user.
A light-token account holds token balances like SPL Token accounts:
  • A wallet needs a light-token account for each light-mint, SPL mint, or Token 2022 mint it wants to hold, with the wallet address set as the light-token account owner.
  • Each wallet can own multiple light-token accounts for the same light-mint.
  • A light-token account can only have one owner and hold units of one light-mint.
Light-TokenSPL-Token
Token Account~0.00001 SOL~0.002 SOL
Additionally Light Token is more compute-efficient than SPL on hot paths:
Light-TokenSPL-Token
ATA Creation4,34814,194
Transfer3124,645
Transfer (rent-free)1,8854,645
Diagram showing light-token Solana account structure with three components: Address (identifier for light-token account in purple box), Account (struct containing Data bytes, Executable flag, Lamports balance, and Owner set to Compressed Token Program), and AccountData (containing Mint, Owner, Amount, and Extensions fields)
Light token accounts replicate the field layout and serialization format of SPL Token accounts. The struct is serialized with Borsh to match the on-chain format of SPL tokens. Here is how light-tokens and SPL tokens compare:
FieldLight TokenSPL Token Account
mint
owner
amount
delegateunimplemented
state
is_native
delegated_amountunimplemented
close_authority
extensionsvia Token-2022

Associated Light Token Account

Associated light-token accounts (light-ATAs) follow the same pattern as associated token accounts (ATA):
  • Each wallet needs its own light-token account to hold tokens from the same light-mint.
  • The address for light-ATAs is deterministically derived with the owner’s address, light token program ID, and mint address.
let seeds = [
    owner.as_ref(),          // Wallet address (32 bytes)
    program_id.as_ref(),     // Compressed Token Program ID (32 bytes)
    mint.as_ref(),           // light-mint address (32 bytes)
    bump.as_ref(),           // Bump seed (1 byte)
];

Compressed Token Account

Under the hood, compressed token accounts store token balance, owner, and other information of inactive light-tokens.
  1. Light token accounts are automatically compressed/decompressed when active/inactive.
  2. Any light-token or SPL token can be compressed/decompressed at will.
You can still use compressed tokens for token distribution. Learn more about this here.
Diagram showing compressed token account structure with three components: Hash (identifier for compressed token account in purple box), Account (struct containing Data bytes, Executable flag, Lamports balance, and Address set to None), and AccountData (containing Mint, Owner, Amount, and Extensions fields marked as unimplemented)

Next Steps

Create Light Token Accounts