Claim
An instruction to recover rent from expired compressible accounts. When a Light Token account’s prepaid rent period expires, any user can claim the rent-exemption lamports stored in the account.Compressibility
The state when a Light Token account can be compressed permissionlessly. An account becomes compressible when its prepaid rent period expires. Theis_compressible() function checks the current slot against the account’s rent configuration.
Compressible extension
An extension on decompressed Light Token accounts that tracks compression configuration and rent data. Fields includedecimals, compression_only, is_ata, and embedded CompressionInfo. Accounts with this extension become eligible for permissionless compression when their rent expires.
Discriminator: 32
CompressibleConfig
A registry account that stores compression policy for a set of Light Token accounts. Controls rent configuration, compression authority, and address space allocation.- PDA seeds:
["compressible_config", version_bytes] - States: Inactive (0), Active (1), Deprecated (2)
Compress
An operation that moves tokens from a decompressed Light Token account into a compressed account stored in a state tree. The token data becomes a leaf in the Merkle tree, and the on-chain Solana account can be closed.CompressAndClose
An instruction that atomically compresses a Light Token account’s balance and closes the Solana account. Rent-exemption lamports return to the rent sponsor. Requires the Compressible extension.Compressed (cold) state
A Light Token state where token data exists as a leaf in a state Merkle tree. No on-chain Solana account exists. Requires a validity proof to read or modify. Uses ZK Compression state trees. Internal identifier:ctoken-cold
Compressed Mint
A mint account for Light Tokens stored in a state tree. Contains SPL-compatible fields (mint_authority, supply, decimals, freeze_authority) plus Light Protocol metadata. Can be decompressed to a Solana account.
Discriminator: 1
Internal type: CMint
CompressedOnly extension
An extension on compressed token accounts indicating they can only be decompressed, not transferred. Created when a Light Token account with this extension is compressed-and-closed. Fields includedelegated_amount, withheld_transfer_fee, and is_ata.
Discriminator: 31
CompressionInfo
A structure embedded in the Compressible extension that tracks rent and compression configuration. Fields includeconfig_account_version, compress_to_pubkey, lamports_per_write, compression_authority, rent_sponsor, last_claimed_slot, rent_exemption_paid, and rent_config.
Decompress
An operation that moves tokens from a compressed account in a state tree to a decompressed Light Token account on-chain. Creates or updates a Solana account with the token data.Decompressed (hot) state
A Light Token state where token data exists in an on-chain Solana account with the Compressible extension. Supports direct read/write access without validity proofs. Standard Solana rent-exemption applies and is reclaimable on compression. Internal identifier:ctoken-hot
Light Token
A token system built on ZK Compression with sponsored rent-exemption. Token data can exist in Merkle trees (compressed state) or on-chain Solana accounts (decompressed state). Uses ZK Compression state trees and validity proofs. Canonical name: Light Token Codebase aliases:light-token (Rust crate), c-token (JS/TS package), CToken (Rust types), compressed-token (npm package)
Light Token account
A decompressed token account on-chain with SPL Token layout plus the Compressible extension. Stores mint, owner, amount, delegate, and state fields. Discriminator: 2 (matches SPL Token) Program owner:light-compressed-token
Internal type: CToken
MintAction
A batch instruction for compressed mint operations. SupportsCreateMint, MintTo, MintToCompressed, UpdateMintAuthority, UpdateFreezeAuthority, UpdateMetadataField, UpdateMetadataAuthority, RemoveMetadataKey, DecompressMint, and CompressAndCloseMint.
Discriminator: 103
Non-unified path
An SDK import path (@lightprotocol/compressed-token) that decompresses compressed tokens without wrapping SPL or Token-2022 balances. Uses wrap=false by default. Output can be SPL, Token-2022, or Light Token. Suited for DeFi integrations where downstream applications may not support Light Token.
Sponsored rent-exemption
The rent model for Light Tokens. Compressed tokens require no lamports because data lives in state Merkle trees. Decompressed tokens pay standard Solana rent-exemption, which the owner reclaims when compressing the account. Canonical term: Sponsored rent-exemption by the light-token program Avoid: “rent-free token”, “rent-free account”Token pool
An SPL token account that holds SPL tokens corresponding to compressed tokens in circulation. Tokens deposit during compression and withdraw during decompression.- PDA seeds:
["pool", mint_pubkey]or["pool", mint_pubkey, "restricted"]for mints with restricted extensions - Max pools: 5 per mint (indices 0-4)
TokenData
The data structure for a compressed Light Token stored in a state tree leaf. Containsmint, owner, amount, delegate, and state fields. State values: Initialized (0), Frozen (1). Supports optional TLV extensions.
TokenMetadata extension
A metadata extension for compressed mints storing name, symbol, uri, and additional key-value pairs. Discriminator: 19 Fields:update_authority, mint, name, symbol, uri, additional_metadata array
Transfer2
A batch instruction for compression operations supporting multiple modes:- Compress (0): Decompressed account to compressed account in state tree
- Decompress (1): State tree to decompressed account
- CompressAndClose (2): Compress and close atomically, rent to sponsor
Unified path
An SDK import path (@lightprotocol/compressed-token/unified) that aggregates balances from hot Light Token, cold Light Token, SPL, and Token-2022 into a single canonical ATA. Enforces wrap=true. Output is a single Light Token ATA derived from CTOKEN_PROGRAM_ID. Suited for closed-loop payment systems where you control the complete transaction flow.