Token Lifecycle
Every LP24 token moves through the same states. Transitions are triggered by trading activity or elapsed time — never by an operator.
States
| State | Flag | Transfers | What can happen |
|---|---|---|---|
| Bonding | FLAG_INITIALIZED | Locked (minter only) | buy, sell |
| Graduated | FLAG_GRADUATED | Open | DEX trading, fee distribution, CTO |
| Refund mode | FLAG_REFUND_MODE | Locked | refund_claim for 7 days |
| Swept | FLAG_SWEPT | Locked | terminal — nothing further |
| Protocol curve | FLAG_PROTOCOL | Locked until graduation | buy, sell — cannot ever enter refund mode |
Flags are bits in a single packed storage slot alongside supply, timestamps and collected fees, so a state read costs one SLOAD.
Path 1 — Graduation
1
Deploy
The token mints 60,000,000 × 10⁹ (60M) to the deployer and the curve starts at 60,000 lots. Transfers are locked; only the curve (the minter) can move tokens.
2
Bonding
Buys mint, sells burn. Supply climbs toward 800,000 lots. No wallet may hold more than 36,000 lots. The deployer cannot sell at all.
3
Graduation
The buy that reaches 800,000 lots triggers graduation in the same transaction. Fees split 90/10 to deployer and protocol, 400,000,000 × 10⁹ (400M) tokens are minted for liquidity, transfers unlock, and the pool is created.
4
Live
The token trades on the DEX. Swap fees accumulate and can be distributed by anyone. On V4-family chains a secondary token↔$LP24 pool can now be created.
Path 2 — Refund
1
Bonding period expires
259,200 s (3 days) pass without reaching full supply. Anyone may now call
initiate_refund().2
Refund mode opens
10% of collected fees go to the protocol; the remaining balance is divided by eligible lots to fix
refund_per_lot. Buying and selling stop permanently.3
Claim window
Holders have 604,800 s (7 days) to call
refund_claim(lots), which burns their tokens and pays out. The deployer cannot claim.4
Sweep
After the window, anyone may call
sweep_unclaimed_refunds() to move the remainder to the protocol balance. This sets FLAG_SWEPT and is the terminal state.The protocol curve never refunds
$LP24's own bonding curve carries FLAG_PROTOCOL, set at initialization. initiate_refund() rejects it outright, so it stays open indefinitely until it graduates.
Timing Summary
| Window | Duration | Starts at |
|---|---|---|
| Bonding period | 259,200 s (3 days) | Curve initialization |
| Refund claim period | 604,800 s (7 days) | initiate_refund() |
| CTO vote duration | 259,200 s (3 days) | Vote creation |
| CTO early-end lockout | 3,600 s (1 hour) | Vote creation |