Docs · Pools
reel pools
What a reel pool is, what it can carry, and the page that covers each piece.
One pool, one market
Ajvhesd3q6yJFgnBL6vppAJDF7gP6nmksA8WkrTM4vcJ. reel and reel-hook were reviewed and verified end to end on Solana mainnet; their upgrade authority is the reel treasury, BA9VJD2ux2XtQ1diiurBR9pmgqtb33ivs6H8fmSgNPXr. reel-vaults, the periphery program, is verified on mainnet module by module, and its upgrade authority moves to the treasury when that finishes.A reel pool is one constant-product market between a base token and a quote token, over the full price range. Its curve is rb · eq = k, where rb is the base reserve and eq is the quote reserve plus a virtual quote. The virtual quote lets a launch open with tokens only, at a chosen price; it scales with shares, so adding or removing liquidity doesn't move the price, and it can never be withdrawn. A sell can never pay out more quote than the pool really holds.
The curve reads tracked reserves, not vault balances, so tokens sent straight to a vault change nothing. A pool may also have a deposit cap, a per-pool setting the admin can set or clear.
Fees live outside the reserves
LP fees don't sit in the reserves. They add to a fee-growth counter per share, and each position keeps a checkpoint. When a position's shares change, or its owner collects, the program settles shares × Δgrowth. So a position collects fees without touching its principal, and a locked position keeps earning.
When a pool opens, the first MIN_SHARES (1,000) are locked forever and belong to no position. LPs’ shares of arbitrage recapture and King of the Pool releases are streamed into fee growth over release_secs; any add restarts that window, so liquidity added just in time only gets what streams after it joins.
What is frozen when a pool opens
PoolInit writes the pool's PoolParams: the base LP fee, the protocol share, the bitmask of Hook Blocks and every block setting, plus the keys the blocks name (royalty recipient, payee, oracle, sibling pool, advisory accounts). It also copies the integrator rate from the root or the listing. Nobody can change these afterwards, the admin included.
Two things can move after opening, both disclosed: the admin can change a pool's deposit cap, which only gates new deposits, and the fee keeper can move a Managed fee inside the cap the pool froze. See the admin model.
What a pool can carry
| Piece | In one line | Page |
|---|---|---|
| Core blocks | The per-pool blocks, their bits and bounds | Core blocks |
| Launch-day blocks | What each block does on day one and what it costs a swap | Launch-day blocks |
| King of the Pool | The biggest buy of each round takes a prize from the pot | King of the Pool |
| Wallet Cap | No wallet buys more than a share of supply during the guard | Wallet Cap |
| Multi-pool launch | One token in up to 8 pools, one per quote | Multi-pool launch |
| Dev buy and lock | The creator's first buy, inside the launch | Dev buy and lock |
| Launch lock | Liquidity held for a beneficiary until a date, or for good | Launch lock |
| Fees and recapture | The protocol share, integrators, referrers and the recapture split | Fees |
| Minimum fee | What a pool pays when no block pays the protocol | Minimum fee |
| Saved hooks | A named, versioned set of blocks on chain | Saved hooks |
| Owned roots | A namespace of your own for pools | Owned roots |
| LP Time-Lock Boost | Extra rewards for locked positions (coming) | LP Time-Lock Boost |
| Referrals | Ref codes paid from the protocol's cut | Referrals |
| Programs | Creator rewards for traders and LPs (funded campaigns: opens Nov 12) | Programs |
| SDK | The TypeScript client | SDK |
Where the money goes
Charges that aren't LP fees accrue in ten buckets on the pool, each with one fixed recipient. BucketCollect is permissionless: anyone can send it, and the program only pays the bucket's own recipient.
| # | Bucket | Paid to |
|---|---|---|
| 0 | PROTOCOL | the treasury's token account |
| 1 | INTEGRATOR | the pool's integrator |
| 2 | OWNER | the liquidity owner: the launch owner, or the lock beneficiary while locked |
| 3 | ROYALTY | the royalty recipient's claim ledger |
| 4 | POT | the King of the Pool pot (not collectable) |
| 5 | HOLDER_POT | the Holder Pot (paid out to holders by reel-vaults' HolderPay, live) |
| 6 | USAGE | a Hook Blocks Market block's split |
| 7 | REWARD_CREATOR | the pool's payee |
| 8 | ZAP | the zap vault named at launch |
| 9 | PAYEE | the pool's payee |