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.
  • Pays the rent-exemption cost
Token AccountsSolana account
  • Stores token balances of mints (SPL, Token-2022, or Light)
  • Pays the rent-exemption cost

Rent Config by Light Token Program

  1. The Light Token Program pays the rent-exemption cost for the account.
  2. Transaction fee payers bump a virtual rent balance when writing to the account, which keeps the account “hot”.
  3. “Cold” accounts virtual rent balance below threshold (eg 24h without write bump) get auto-compressed.
  4. The cold account’s state is cryptographically preserved on the Solana ledger. Users can load a cold account into hot state in-flight when using the account again.

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 Light 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 Light 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(),     // Light 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