Token Lifecycle

Every token on LP24 passes through a defined set of states, from deployment through bonding curve trading to graduation on Uniswap V4 — or, if the curve doesn't fill, into refund mode.

Lifecycle States

StateFlagDescription
Uninitialized0Proxy deployed but initialize() not yet called. No operations possible.
Active (Bonding)FLAG_INITIALIZED (2)Bonding curve is live. Users can buy and sell lots. Token transfers restricted to minter (the curve).
GraduatedFLAG_GRADUATED (4)All 800,000 lots sold. Uniswap V4 pool created. Token freely tradable. Bonding curve buy/sell disabled.
Refund ModeFLAG_REFUND_MODE (8)Bonding period (3 days) expired without graduation. Pro-rata ETH refunds available to token holders.

State Transitions

Uninitialized ──[initialize()]──→ Active (Bonding)
                                      │
                 ┌────────────────────┤
                 │                    │
    [buy() fills MAX_SUPPLY]    [3 days expire, initiate_refund()]
                 │                    │
                 ▼                    ▼
            Graduated           Refund Mode
         (Uniswap V4 LP)    (pro-rata ETH refunds)

Token Supply Breakdown

AllocationAmountLotsRecipient
Deployer initial mint60,000,000 tokens60,000Deployer wallet (locked, cannot sell)
Bonding curve supply740,000,000 tokens740,000Buyers via buy()
Liquidity tokens400,000,000 tokensMinted to Hook at graduation
Max Total Supply1,200,000,000 tokens800,000 + LP
Lot Size

1 lot = 1,000 tokens (with 9 decimals: 1000 * 10^9). All bonding curve operations are denominated in lots, not raw token amounts. Minimum trade is 1 lot.

User Limits

Each wallet is limited to holding 36,000 lots (36,000,000 tokens) during the bonding phase. This is approximately 4.5% of the max bonding supply. The limit is enforced by checking balanceOf() on the token contract rather than internal storage, saving ~17k gas per new buyer.

Important

Because the limit is checked via balanceOf(), transferring tokens to another wallet during the bonding phase is not possible (transfers are locked to minter only). After graduation, there are no wallet limits.

Deployer Lock

The deployer's initial 60,000 lots are permanently locked on the bonding curve — the sell() function explicitly rejects calls from the deployer address. The deployer cannot sell during the bonding phase, and cannot claim refunds in refund mode. Their compensation comes from fee distributions after graduation.