Graduation
One atomic transaction turns the formation reserve into permanent liquidity and activates staking.
Conditions
Formation must be open and circulation must meet the current target, with at least the 300M minimum. Graduation happens once. The boundary buy or a permissionless syncFormation call can trigger it. If pool initialization, funding, or staking activation fails, the whole transaction reverts.
The handoff
- Formation marks the lifecycle graduated and takes the current reservePrincipal as the ETH seed. Unclaimed creator revenue remains in FormationMarket.
- The token seed is reserve principal divided by the marginal reserve price at actual circulation, in fixed-point units.
- LiquidityVault initializes the canonical ETH/SHOOK v4 pool and creates one full-range liquidity position.
- Unused liquidity inventory is returned to FormationMarket. Unused formation inventory and returned liquidity inventory are sent to StakingVault.
- StakingVault snapshots all SHOOK in its balance as the launch budget, requiring at least the base 250M allocation.
- Native ETH left by liquidity rounding is deposited into the reserve’s principal-dust stream.
At the full 500M endpoint
The ideal seed is 450 ETH and 250M SHOOK, for a reserve price of 0.0000018 ETH per SHOOK. Actual position construction can leave tiny token and native remainders due to integer liquidity math. These are accounted for by the surplus and dust paths.
At a lower target
A lower graduation circulation leaves additional formation inventory for staking. The liquidity seed also changes with R(S) / p(S), and its unused inventory joins the staking budget. The staking launch allocation is therefore an outcome of the actual handoff, not always exactly 250M.
What changes for holders
Formation trades permanently close. Existing SHOOK remains the same ERC-20 token; there is no migration or claim required for holders. Trading moves to the v4 pool. Staking becomes active. The curve no longer offers a redemption path after its principal has seeded liquidity.
Source reference
Checked against the source shipped with this documentation. Contract calls and units are detailed in the contract reference.
Imported source files 44
Supporting contracts, interfaces, and libraries imported by the sources above, including their dependencies.