Skip to main content
For ZK Compression terms, see Terminology.

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. The is_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 include decimals, 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 include delegated_amount, withheld_transfer_fee, and is_ata. Discriminator: 31

CompressionInfo

A structure embedded in the Compressible extension that tracks rent and compression configuration. Fields include config_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. Supports CreateMint, 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. 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. Contains mint, 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
Discriminator: 101

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.