Pre-launch. The protocol is not publicly live yet. This documentation describes the contracts as implemented; deployed addresses are published at launch.

Token Lifecycle

Every LP24 token moves through the same states. Transitions are triggered by trading activity or elapsed time — never by an operator.

States

StateFlagTransfersWhat can happen
BondingFLAG_INITIALIZEDLocked (minter only)buy, sell
GraduatedFLAG_GRADUATEDOpenDEX trading, fee distribution, CTO
Refund modeFLAG_REFUND_MODELockedrefund_claim for 7 days
SweptFLAG_SWEPTLockedterminal — nothing further
Protocol curveFLAG_PROTOCOLLocked until graduationbuy, 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

WindowDurationStarts at
Bonding period259,200 s (3 days)Curve initialization
Refund claim period604,800 s (7 days)initiate_refund()
CTO vote duration259,200 s (3 days)Vote creation
CTO early-end lockout3,600 s (1 hour)Vote creation