# reel docs

Every page of /docs as markdown, in sidebar order, then the ReelBook.


# Overview

## What you can do with reel

> Every task reel supports, from launching a token to running a crank, with the page or route that does it.

### Before you start

> This deployment is configured with the reel program at `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.

reel is a pool program on Solana with Hook Blocks: rules a pool runs on every swap, chosen when the pool opens and frozen for its life. Anything a pool charges, refuses or pays out is written in its `PoolParams` account, so you can read it before you trade. The [Hook Blocks catalog](/hooks) lists every block, its settings and its status.

### Launch a new token

Open [Launch](/launch) to create a Token-2022 token and open it in 1 to 8 pools at once, each on its own quote (SOL, USDC or another listed token) with its own blocks. The launch creates the mint with a fixed supply, revokes the mint authority, sets no freeze authority and drops the metadata update authority, all in the first transaction. The token's transfer hook is reel-hook, which enforces launch-day rules such as [Wallet Cap](/docs/pools/wallet-cap) on every venue.

Read [Multi-pool launch](/docs/pools/multi-pool-launch) for what a creator sets, and [Launch-day blocks](/docs/pools/launch-day-blocks) for what each block costs a swap.

### Open pools for a token that already trades

The same launch flow takes an existing mint. reel records the mint and opens pools for it, seeded from the creator's own tokens and quote. It takes no authority over the token, and the token's other markets keep running as they are. Read [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens) before you pair a mint with extensions.

### Compose a hook in the builder

The [builder](/builder) places Hook Blocks on a pool, fills their defaults, and checks the combination the way `PoolInit` will: conflicts, required blocks, bounds and the fee caps. A board travels as a link (`/builder?h=…`), and the same link opens the launch floor (`/launch?draft=…`). The [ReelBook](/docs/reelbook) has worked setups to start from.

### Keep a hook of your own

Save a set of blocks on chain as a [saved hook](/docs/pools/saved-hooks): an immutable, versioned account that pools can follow. Or open an [owned root](/docs/pools/owned-roots): a namespace your pools open under, with the blocks you allow and an integrator payee of your choice. Both run on the same reel program; neither deploys new code.

### Trade and provide liquidity

Every pool is a full-range constant-product market. Swaps run the pool's blocks in a fixed order and settle in one instruction: see [Swapping and quoting](/docs/guides/swapping-and-quoting). Liquidity providers hold positions that earn fees without touching principal, and locked positions keep earning: see [Providing liquidity](/docs/guides/providing-liquidity).

### Play King of the Pool

On pools that run it, the largest single buy of each round takes a prize from a pot that arbitrage recapture fills. The [Kings](/kings) board shows the rounds, and [King of the Pool](/docs/pools/king-of-the-pool) explains the rules.

### Claim what you are owed

Prizes, royalties, referral credits and recapture credits land in a per-wallet, per-mint `ClaimLedger`, backed by a claims vault that receives the tokens in the same instruction. [Portfolio](/portfolio) shows what each ledger owes, and `Claim` pays it out.

### Integrate reel

- A launchpad can open pools under its own root and take an integrator share: [Integrating as a launcher](/docs/guides/integrating-as-a-launcher).
- An app or router can read pools, quote and build swaps with the TypeScript client: [SDK](/docs/integrations/sdk) and [Aggregator routing](/docs/integrations/aggregator-routing).
- An agent can register on chain and run the permissionless instructions any wallet may send: [Jobs for agents](/docs/integrations/agent-jobs). Agents can also use reel's live MCP server at `/api/mcp`: [MCP server](/docs/integrations/mcp).

### Build a block, or a revenue token

Builders can publish an add-on block to the Hook Blocks Market, bonded and admitted before any pool installs it: [Publishing and partner review](/docs/integrations/partner-review). Revenue tokens, which turn a fee right into a token its stakers share, are reel-vaults' tokenizer module (coming): [Revenue tokens](/docs/revenue-tokens/overview).

Page: /docs/overview/what-you-can-do

# Pools

## reel pools

> What a reel pool is, what it can carry, and the page that covers each piece.

### One pool, one market

> This deployment is configured with the reel program at `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](/docs/concepts/architecture#admin-powers).

### What a pool can carry

| Piece | In one line | Page |
|---|---|---|
| Core blocks | The per-pool blocks, their bits and bounds | [Core blocks](/docs/pools/core-blocks) |
| Launch-day blocks | What each block does on day one and what it costs a swap | [Launch-day blocks](/docs/pools/launch-day-blocks) |
| King of the Pool | The biggest buy of each round takes a prize from the pot | [King of the Pool](/docs/pools/king-of-the-pool) |
| Wallet Cap | No wallet buys more than a share of supply during the guard | [Wallet Cap](/docs/pools/wallet-cap) |
| Multi-pool launch | One token in up to 8 pools, one per quote | [Multi-pool launch](/docs/pools/multi-pool-launch) |
| Dev buy and lock | The creator's first buy, inside the launch | [Dev buy and lock](/docs/pools/dev-buy) |
| Launch lock | Liquidity held for a beneficiary until a date, or for good | [Launch lock](/docs/pools/launch-lock) |
| Fees and recapture | The protocol share, integrators, referrers and the recapture split | [Fees](/docs/pools/fees) |
| Minimum fee | What a pool pays when no block pays the protocol | [Minimum fee](/docs/pools/minimum-fee) |
| Saved hooks | A named, versioned set of blocks on chain | [Saved hooks](/docs/pools/saved-hooks) |
| Owned roots | A namespace of your own for pools | [Owned roots](/docs/pools/owned-roots) |
| LP Time-Lock Boost | Extra rewards for locked positions (coming) | [LP Time-Lock Boost](/docs/pools/lp-time-lock-boost) |
| Referrals | Ref codes paid from the protocol's cut | [Referrals](/docs/pools/referrals) |
| Programs | Creator rewards for traders and LPs (funded campaigns: opens Nov 12) | [Programs](/docs/pools/programs) |
| SDK | The TypeScript client | [SDK](/docs/pools/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 |

Page: /docs/pools/overview

## Core blocks

> The Hook Blocks in the reel program, what a creator sets on each, and the ranges the program accepts.

### How a block sits on a pool

Each per-pool block is a bit in `PoolParams.blocks` with its settings beside it. `PoolInit` validates the whole set against the bounds below and the caps further down, then freezes it. Bits 14 to 21 are **advisory** blocks: a pool carries at most one. Bit 22, the minimum fee, is set by the program, not by the creator.

Block fees take the protocol share first: the share `s` is chosen at launch between 20% and 50%, and the rest goes to the block's destination. The base LP fee and the advisory surcharges are LP-only and pay no share.

### Pool terms

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `base_fee_pips` | Base LP fee | 0.01% | 0.3% | 10% | Counted once in the 600,000-pip LP-fee room (PROGRAM.md §5a). |
| `protocol_share_bps` | Protocol share | 20% | 20% | 50% | — |

### Every per-pool block

| Bit | Block | What it does | Status |
|---:|---|---|---|
| 0 | [Anti-Snipe](/hooks/anti-snipe) | Caps and taxes early buys while the launch guard lasts. Sells never pay it. | In the program |
| 1 | [Dynamic fees](/hooks/dynamic-fees) | The fee rises with how far a swap pushes the price. Pushing it back is free. | In the program |
| 2 | [Auto Burn](/hooks/auto-burn) | Burns a set share of every buy's tokens in the same swap. | In the program |
| 3 | [LP Rewards](/hooks/lp-rewards) | An extra fee on buys, kept by the LPs whose liquidity filled them. | In the program |
| 4 | [Creator royalty](/hooks/creator-royalty) | A share of LP Rewards on every buy, paid to a recipient fixed at launch. | In the program |
| 5 | [Swap Cut](/hooks/swap-cut) | A fixed cut of every buy and sell for the pool's liquidity owner. | In the program |
| 6 | [Exit Clock](/hooks/exit-clock) | Sells pay a fee that falls the longer the tokens were held. | In the program |
| 7 | [Holder Pot](/hooks/holder-pot) | Sandwich Guard's charges fill a pot paid to holders by tokens × time held. | In the program |
| 8 | [Storm Fee](/hooks/storm-fee) | The fee rises when price turns choppy and eases as it calms, within fixed bounds. | In the program |
| 9 | [Wallet Cap](/hooks/wallet-cap) | While the guard lasts, no wallet buys more than a set share of the supply. | In the program |
| 10 | [Buy/Sell Block](/hooks/buy-sell-block) | Pauses buys and locks sells for a set time after launch. Charges nothing. | In the program |
| 11 | [Sandwich Guard](/hooks/sandwich-guard) | A swap that moves price back toward where its window opened pays that move. | In the program |
| 12 | [King of the Pool](/hooks/king-of-the-pool) | Each round's biggest single buy takes a prize from a pot recapture fills. | In the program |
| 13 | [Arb recapture](/hooks/arb-recapture) | The pool keeps most of the price-gap profit instead of outside bots. | Partial |
| 14 | [Market Guard](/hooks/market-guard) | Swaps that stray from a live Pyth price pay the pool's LPs a surcharge. | In the program |
| 15 | [Market-hours fee](/hooks/market-hours-fee) | A fee that follows the US stock market's sessions. | In the program |
| 16 | [Managed fee](/hooks/managed-fee) | A surcharge reel's keeper moves as price moves, inside a cap you fix at launch. | In the program |
| 17 | [Agent gate](/hooks/agent-gate) | Only registered agents can buy, sell or add liquidity. Removing is never gated. | In the program |
| 18 | [Zap Relay source](/hooks/zap-relay-source) | Routes a cut of every buy to a zap vault that buys another pool. | Partial |
| 19 | [Zap Relay target](/hooks/zap-relay-target) | A pool only its feeder zap vaults may buy; anyone may sell. | Partial |
| 20 | [Swap Reward Mint](/hooks/swap-reward-mint) | Pays traders a reward token for each swap, funded by a slice of the trade. | In the program |
| 21 | [Usage fee](/hooks/usage-fee) | Every swap pays a market block's builder, its backers, reel and a reserve. | In the program |
| 22 | [Minimum fee](/hooks/min-fee) | A small fee to reel on a new token's pool that pays reel nothing else. | In the program |

### Settings of the most used blocks

Generated from the catalog. Every other block's settings are on its [catalog page](/hooks).

#### Anti-Snipe

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `guard_secs` | Guard length | 12 s | 10 min | 1,200,000 s (13d 21h) | A pool-level setting (§5a) that Wallet Cap and Buy/Sell Block share. |
| `snipe_cap` | Buy cap per slot | 0 (off) | Named at launch | — | — |
| `snipe_tax_pips` | Snipe tax | 0% | 10% | 60% | At most 600,000 − the base fee. |
| `snipe_floor_pips` | Tax floor | 0% | 0% | See rule | Below the Snipe tax. |
| `snipe_decay_secs` | Tax decay | 0 s | 5 min | See rule | At most 3,600 s, or the guard length if longer. |
| `snipe_curve` | Decay curve | Linear | Linear | Step | — |

#### Dynamic fees

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `dyn_max_pips` | Fee ceiling | See rule | 2.3% | 60% | From the base fee + 1 up to 600,000; it includes the base fee. |
| `dyn_sens` | Sensitivity | 1 | 5 | 10 | — |
| `dyn_window_secs` | Step every | 12 s | 30 s | 5 min | — |
| `dyn_reset_secs` | Reset after | 30 s | 2 min | 30 min | At least twice the step. |
| `dyn_carry_bps` | Gap kept per step | 0% | 75% | 95% | — |
| `dyn_move_bps` | Counted move | 0.5% | 2% | 20% | — |
| `dyn_divisor` | Liquidity divisor | 2 | 100 | 10,000 | — |

#### Auto Burn

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `burn_bps` | Burn share | 0.01% | 1% | 10% | LP Rewards + Auto Burn ≤ 1,000 bps. |

#### LP Rewards

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `lp_bps` | LP fee on buys | 0.01% | 2% | 10% | LP Rewards + Auto Burn ≤ 1,000 bps. |

#### Creator royalty

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `royalty_bps` | Royalty | 0.01% | 10% | 10% | — |

### Caps PoolInit checks

Each cap is checked with every block at its maximum, and the swap clamps again at run time.

- LP fees: base fee, Snipe tax, dynamic ceiling, Storm Fee to LPs, LP Rewards and the advisory LP surcharge together ≤ 600,000 pips (60%).
- Quote takes: Auto Burn, the larger Swap Cut side, usage fee, reward slice, zap cut and minimum fee together ≤ 350,000 pips (35%).
- LP Rewards plus Auto Burn ≤ 1,000 bps (10%).
- Sell-side charges: Swap Cut sell, Exit Clock top, Storm ceiling and Sandwich maximum together ≤ 200,000 pips (20%).
- Royalty ≤ 10% of LP Rewards after the protocol share.
- At most one advisory block.

A set that breaks a cap fails with `FeeRoomExceeded`; a bad combination fails with `BlockConflict`; a setting out of bounds fails with `InvalidParams`.

### Rules between blocks

- [Dynamic fees](/hooks/dynamic-fees) can’t share a pool with Storm Fee.
- [Creator royalty](/hooks/creator-royalty) needs [LP Rewards](/hooks/lp-rewards).
- [Holder Pot](/hooks/holder-pot) needs [Sandwich Guard](/hooks/sandwich-guard).
- [Storm Fee](/hooks/storm-fee) can’t share a pool with Dynamic fees.
- [King of the Pool](/hooks/king-of-the-pool) needs [Arb recapture](/hooks/arb-recapture).
- [Arb recapture](/hooks/arb-recapture) can’t share a pool with Zap Relay target.
- [Zap Relay target](/hooks/zap-relay-target) can’t share a pool with Arb recapture, Dev buy and lock.

Page: /docs/pools/core-blocks

## King of the Pool

> The biggest single buy of each round takes a prize from a pot that arbitrage recapture fills, capped by what that buy paid the protocol.

### What it does

King of the Pool turns a pool's arbitrage income into a contest. Rounds are aligned to UTC. During a round, the largest single buy leads; when the round closes, the leader (or a podium of two or three) is credited a prize from the pool's pot. What the prizes don't take is partly released to the pool's LPs.

It is bit 12 of `PoolParams.blocks`. It needs [Arb recapture](/hooks/arb-recapture), which fills the pot, and [LP Rewards](/hooks/lp-rewards) or [Auto Burn](/hooks/auto-burn), which set each prize's cap. The [Kings](/kings) board lists the rounds.

### Who can take the crown

- A buy counts when its gross spend in the quote is at least `kotp_min_buy`. Sells never lead.
- The signer must be an **on-curve wallet invoking reel at the top level** (stack height 1), not a program calling in. This is Solana's stand-in for “a person's wallet, not a contract”; it can't tell a person from a bot with a key.
- Each wallet holds at most one place on the podium. A buy that ties the leader doesn't pass it.
- If a wallet buys and then sells in the same slot, the podium returns to the snapshot taken at that slot's first change of crown, so a buy-and-dump in one slot can't win.

### Rounds

A round lasts `kotp_round_secs` (1 hour to 30 days, 1 day by default) and starts on a UTC boundary of that length. A pool that opens mid-round joins it only if at least half of it remains; otherwise its first round is the next one.

`KotpSettle` closes a round. Anyone may send it: it is permissionless, and the sender pays the transaction fee and any rent for accounts it opens. A client puts it before the first swap after a round ends (`ix.kotpSettle` in the SDK), so rounds settle as trading continues.

### The pot and the prizes

The pot fills from two places: `kotp_pot_bps` of what is left of each arbitrage recapture after the protocol and the gap opener (25% by default), and any block charge routed to destination 3 (a Swap Cut, Exit Clock or Sandwich charge, for example). The pot is bucket 4 on the pool; it can't be collected by anyone.

Each podium place stores a **cap** when it is set: half of what that buy paid the protocol through LP Rewards and Auto Burn, after the integrator's part. At settlement, each place is credited the smallest of three amounts: its podium share of the pot (100%; 70/30; or 50/30/20), its cap, and a limit proportional to its spend. Prizes go to the winners' claim ledgers in the quote token, and the tokens move to the claims vault in the same instruction.

Then `kotp_release_bps` (25% to 100%, 50% by default) of what remains is released to LPs through the pool's stream, compounded over the rounds since the last settlement (everything after 256 rounds).

### Worked example

Sample settings, not live data. A pool with LP Rewards 2%, Auto Burn 1% and a 20% protocol share. The round's largest buy spends 20 SOL. It pays reel 0.08 SOL of LP Rewards and 0.04 SOL of burn quote, so 0.12 SOL; its prize cap is half of that, 0.06 SOL.

With 0.6 SOL in the pot and a single king, the prize is 0.06 SOL. Of the 0.54 SOL left, a 50% release streams 0.27 SOL to LPs and 0.27 SOL stays for the next round.

### Settings

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `kotp_pot_bps` | Pot share | 0.01% | 25% | 50% | — |
| `kotp_round_secs` | Round length | 1 h | 1 day | 30 days | — |
| `kotp_release_bps` | Pot released per round | 25% | 50% | 100% | — |
| `kotp_min_buy` | Least buy that counts | 1 atoms | Named at launch | — | — |
| `kotp_podium` | Podium | One king | One king | Top three, 50/30/20 | — |

### What to read on chain

- The pool's `rounds`, `crowns` and `prizes_total` counters.
- The `Crowned` event (pool, wallet, spend) for each change of leader, and `RoundSettled` (pool, round start, three prizes, released) for each close.
- Each winner's `ClaimLedger` for the quote mint: `lifetime[prize]` and `owed`.

Page: /docs/pools/king-of-the-pool

## Wallet Cap

> No wallet can buy more than a set share of the supply while the launch guard lasts, counted across every pool of the launch.

### What it does

Wallet Cap limits how much of a new token any one wallet can take during the launch guard. The cap is `wallet_cap_bps` of the supply (0.1% to 10%, 2% by default), fixed at launch: `Launch.wallet_cap = supply × bps / 10⁴`.

It is bit 9 of `PoolParams.blocks` and needs the [Anti-Snipe](/hooks/anti-snipe) guard to be at least 96 seconds. When the guard ends, the cap lifts by itself.

### What counts

Each buyer has a `WalletCounter` for the launch (`["wcount", launch, wallet]`). Every buy on any pool of the launch adds the tokens actually delivered, after any burn, and the swap fails with `WalletCapExceeded` if the tally would pass the cap. Anyone may open a wallet's counter (`WalletCounterOpen`); the SDK adds it when it's missing.

- The creator's [dev buy](/docs/pools/dev-buy) doesn't count.
- Sells don't lower the tally: it counts what a wallet bought, not what it holds.

### On every venue, through the transfer hook

A new reel token's transfer hook, reel-hook, enforces the cap on transfers too. During the guard, any transfer that would leave the receiving wallet's balance above the cap fails (`WalletCap`, 7004). reel's own vaults and the creator are exempt. So buying elsewhere, or collecting from several wallets into one, can't pass the cap while it lasts.

The hook runs only on Token-2022 transfers of the reel-launched mint, so this part applies to new tokens only. On an existing token, Wallet Cap counts reel buys alone.

### What it can't do

> A cap per wallet is not a cap per person. Anyone can split a buy across fresh wallets. Wallet Cap raises the cost of taking a large share early; it doesn't make that impossible.

It runs beside the other launch-day blocks: Anti-Snipe's per-slot buy cap and decaying tax, and [Buy/Sell Block](/hooks/buy-sell-block), which can pause buys or lock sells for the first seconds.

### Settings

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `guard_secs` | Guard length | 0 s | 0 s | 1,200,000 s (13d 21h) | Shared with Anti-Snipe, which sets 600 s. |
| `wallet_cap_bps` | Cap per wallet | 0.1% | 2% | 10% | grid 0.1% |

Page: /docs/pools/wallet-cap

## Launch-day blocks

> The Hook Blocks a pool can carry, what each one does, and what it costs a swap.

### Reading this page

Each block below is on its own pool at its default settings, on top of the default 0.3% base LP fee (which isn't counted here). “—” means the block charges nothing on that side: it refuses, limits or redirects instead. Ranges move with the block's own rules, such as a Snipe tax that decays over the guard or a dynamic fee that climbs with the size of a move. Recapture charges arbitrage profit, not the swap, so its column shows “—”.

Sample settings, not live data: a real pool's numbers are in its `PoolParams`, and the [builder](/builder) prices any combination.

### What each block costs

| Block | Acts | Buy pays | Sell pays | Status |
|---|---|---|---|---|
| [Anti-Snipe](/hooks/anti-snipe) | before | 0% up to 10% | — | In the program |
| [Dynamic fees](/hooks/dynamic-fees) | fee | 0% up to 2% | 0% up to 2% | In the program |
| [Auto Burn](/hooks/auto-burn) | after | 1% | — | In the program |
| [LP Rewards](/hooks/lp-rewards) | after | 2% | — | In the program |
| [Creator royalty](/hooks/creator-royalty) | switch | — | — | In the program |
| [Swap Cut](/hooks/swap-cut) | fee | 1% | 1% | In the program |
| [Exit Clock](/hooks/exit-clock) | fee | — | 0% up to 3% | In the program |
| [Holder Pot](/hooks/holder-pot) | after | — | — | In the program |
| [Storm Fee](/hooks/storm-fee) | fee | 0% up to 0.6% | 0% up to 0.6% | In the program |
| [Wallet Cap](/hooks/wallet-cap) | before | — | — | In the program |
| [Buy/Sell Block](/hooks/buy-sell-block) | before | — | — | In the program |
| [Sandwich Guard](/hooks/sandwich-guard) | fee | 0% up to 10% | 0% up to 10% | In the program |
| [King of the Pool](/hooks/king-of-the-pool) | switch | — | — | In the program |
| [Arb recapture](/hooks/arb-recapture) | fee | — | — | Partial |
| [Market Guard](/hooks/market-guard) | advisory | 0% up to 1% | 0% up to 1% | In the program |
| [Market-hours fee](/hooks/market-hours-fee) | advisory | 0% up to 0.6% | 0% up to 0.6% | In the program |
| [Managed fee](/hooks/managed-fee) | advisory | 0% up to 1% | 0% up to 1% | In the program |
| [Agent gate](/hooks/agent-gate) | advisory | — | — | In the program |
| [Zap Relay source](/hooks/zap-relay-source) | advisory | 1% | — | Partial |
| [Zap Relay target](/hooks/zap-relay-target) | advisory | — | — | Partial |
| [Swap Reward Mint](/hooks/swap-reward-mint) | advisory | 0% up to 1% | 0% up to 1% | In the program |
| [Usage fee](/hooks/usage-fee) | advisory | 0.5% | 0.5% | In the program |

### Guards for the first minutes

- [Anti-Snipe](/hooks/anti-snipe) opens a guard window. Buys pay a decaying Snipe tax to LPs, each slot has a buy budget for the whole launch (`BuyCapExceeded`), exact-out buys are refused, and only the launch position may add liquidity until it ends.
- [Wallet Cap](/hooks/wallet-cap) caps what each wallet buys during the guard, across every pool of the launch: see [Wallet Cap](/docs/pools/wallet-cap).
- [Buy/Sell Block](/hooks/buy-sell-block) can hold buys for up to an hour after opening and lock sells for up to a minute.
- A new token's buys open 12 seconds after the launch finalizes in any case, so the opening price is visible before the first buy.

### Launch options

These aren't per-swap blocks; they are set once by the launch flow.

- [Canonical Venue Token](/hooks/canonical-venue-token) · Partial. A new token that moves only between wallets and reel's own vaults.
- [Revenue Router](/hooks/revenue-router) · In reel-vaults. Shares the creator royalty among up to 8 payees at fixed shares.
- [Dev buy and lock](/hooks/dev-buy) · Launch option. One first buy per pool inside the launch, then the launch liquidity stays locked.
- [Liquidity lock](/hooks/liquidity-lock) · Launch option. Keeps the launch liquidity in its pools for a set time, or hands the launch to a lock.
- [Supply you keep](/hooks/supply-you-keep) · Launch option. Declares on chain the most of a new token's supply the creator may hold at launch.
- [Vesting Milestone](/hooks/vesting-milestone) · Periphery, coming. Locks a team allocation that vests after a cliff, then linearly.
- [Dev Drip](/hooks/dev-drip) · Periphery, coming. Releases the creator's own allocation through the pool, a slice per window.
- [Multi-pool launch](/hooks/multi-pool-launch) · Launch option. Opens one token in up to 8 pools at once, each with its own quote and blocks.
- [Supply split](/hooks/supply-split) · Launch option. Seeds each pool of a new token with an exact share of the supply.
- [Opening price check](/hooks/opening-price-check) · Launch option. Fails the launch if a pool opens too far from pool 1's price.

Page: /docs/pools/launch-day-blocks

## Multi-pool launch

> One token in up to 8 pools at once, one per quote: what a creator sets, which quotes a pool can take and how the pools trade together.

### What it is

A launch opens a token in 1 to 8 pools, each on a different quote and each with its own base fee, protocol share and blocks. One `Launch` account links the pools, and one owner holds every launch position. A new token's launch uses nonce 0; a later launch of the same token, or a launch of an existing token, takes another nonce.

### The launch, step by step

A launch spans several transactions, linked by the `Launch` account:

1. `LaunchCreate` creates the launch. For a new token it also creates the Token-2022 mint (metadata pointing at itself, reel-hook as transfer hook, no freeze authority), mints the whole supply into an escrow and revokes the mint authority. The same transaction should initialise reel-hook's extra account metas for the mint.
2. `PoolInit` once per pool: creates the pool with its frozen `PoolParams` and checks every rule.
3. `PoolSeed` once per pool: creates the vaults, moves the seed (from the escrow for a new token, from the creator for an existing one, plus the creator's quote) and mints the launch position, owned by the `Launch` account.
4. `LaunchDevBuy`, optional, once per pool: see [Dev buy and lock](/docs/pools/dev-buy).
5. `LaunchFinalize` when every pool is seeded: checks the supply split, the opening prices and what the creator keeps, then opens every pool at once.
6. `LaunchReturn`, which anyone may send, returns what is left in the escrow to the creator.

If a launch stalls before it finalizes, the owner can abort it (`LaunchAbort`) and withdraw the launch positions from pools that never opened. A launch also carries a deadline; instructions after it fail with `Deadline`.

### What a creator sets

- **Pools and quotes.** 1 to 8, each quote distinct.
- **Supply split** (new tokens): a weight per pool, all set or none, adding up to at most 100%. Each seed must match its weight exactly (`WeightMismatch`).
- **Opening price check:** a tolerance of 0.01% to 10%; each pool after the first must open within it of the first pool's price, converted through live reel reference pools (`OpeningOutsideTolerance`).
- **Supply you keep:** what may stay with the creator after finalize, escrow leftovers plus dev buys. With a dev buy it is capped at 5% (`RetainedAboveCap`).
- **Liquidity lock:** up to 1,200,000 seconds after opening, on top of the guard and the dev-buy lock.

### Which quotes a pool can take

SOL trades as wrapped SOL; the SDK wraps and unwraps in the same transaction. Other quotes are reviewed and listed by the admin in a `QuoteListing`, each with its own per-pool deposit cap; an unlisted quote is accepted only if the config allows one, at the config's unlisted cap, and otherwise fails with `QuoteNotAllowed`. Every quote must pass the mint policy: read [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).

### How the pools trade together

Each pool is its own market with its own reserves. They share three things:

- the launch's guard: [Wallet Cap](/docs/pools/wallet-cap) and Anti-Snipe's per-slot buy budget are counted across every pool;
- references: [Arb recapture](/hooks/arb-recapture) on one pool can price against a sibling (`recap_ref` 2 or 3), so a two-pool launch gives each pool a reference;
- ownership: one launch owner, one [launch lock](/docs/pools/launch-lock) over every launch position.

The principal of every launch position stays in its pool until the latest of: the end of the guard, the dev-buy lock, and the liquidity lock. Fees are collectable throughout.

Page: /docs/pools/multi-pool-launch

## Dev buy and its lock

> The creator's first buy, made inside the launch before trading opens: its limits, and the liquidity lock it starts.

### What it is

A new token's creator may buy their own token on each pool before the launch finalizes, at the opening price, with `LaunchDevBuy`. It is a real swap through the pool's pipeline, so it **pays every fee** the pool charges, and it is recorded in a `DevBuy` event with the price before and after. There is at most one per pool, and none on an existing token's launch.

### Its limits

- **On a guarded pool** (Anti-Snipe), the dev buy needs a Snipe tax above 0 and a per-slot cap at least as large as the buy. A dev buy that breaks this fails with `DevBuyRefused`.
- **Supply you keep.** With a dev buy, what the creator ends up with (escrow left over plus every dev buy) is capped at 5% of supply, checked at finalize (`RetainedAboveCap`).
- **Not on a Zap Relay target pool**, whose buys come only from its feeders.
- It takes `min_out`, like any swap, so a creator never buys at a worse price than they signed for.

A dev buy doesn't count toward [Wallet Cap](/docs/pools/wallet-cap), and a Buy/Sell Block pause doesn't apply to it.

### The lock it starts

A dev buy carries `lock_secs`: 0 to 31,536,000 seconds (365 days), 604,800 (7 days) by default. It locks the **launch's liquidity**, not the bought tokens. At finalize the launch sets

~~~text
principal_lock_until = max(guard end, open + dev_lock, open + lock_end)
~~~

so no launch position can withdraw principal before then (`PrincipalLocked`). The bought tokens are the creator's at once, and the pools' fees stay collectable throughout.

### Why lock liquidity, not tokens

A dev buy's risk to everyone else is that the creator buys cheap, then pulls the liquidity the price stands on. Locking the liquidity for a period traders can read removes that path, while the creator keeps an ordinary position in the token. The lock, the dev buy's size and its price impact are all on chain: read the `Launch` account's `dev_bought` and `principal_lock_until`, and the `DevBuy` event.

Page: /docs/pools/dev-buy

## Launch lock

> Hold a launch's liquidity in its pools until a date you pick, or for good, while a beneficiary collects every fee it earns.

### What it does

`LaunchLock` puts a launch under a lock with two settings: a **beneficiary** and an **unlock time**, either a unix timestamp or `FOREVER`. The launch owner sends it, once, at any time after the launch, as long as the launch isn't already locked. The beneficiary can't be one of reel's own PDAs.

While the lock holds:

- no launch position can remove liquidity (`LaunchLocked`), and the launch can't change owner;
- the beneficiary collects the launch positions' fees and is paid the pool's OWNER bucket;
- the pools trade as usual.

### Ending a lock

Once the unlock time has passed, the beneficiary sends `LaunchUnlock` and names the new owner, who then holds the launch with no lock. A lock set to `FOREVER` (`i64::MAX`) never ends: the liquidity stays in its pools and the beneficiary collects its fees for the life of the pools.

A lock only moves forward: there is no instruction to shorten or cancel one.

### How it differs from the other locks

| Lock | Set by | Covers | Ends |
|---|---|---|---|
| Guard | Anti-Snipe at launch | launch positions' principal | when the guard ends |
| Dev-buy lock | `LaunchDevBuy` | launch positions' principal | open + `lock_secs` |
| Liquidity lock | `lock_end_secs` at launch | launch positions' principal | open + up to 1,200,000 s |
| Launch lock | `LaunchLock` after launch | principal and ownership, with a beneficiary | the chosen time, or never |
| Position lock | `PositionLock` on any position | one position's shares | the chosen time, or never |

The first three are fixed when the launch is created and combine into `principal_lock_until`. The launch lock can be added later, adds a beneficiary, and can last for good.

### What to read on chain

The `Launch` account's `beneficiary` and `lock_until` fields, and the `LaunchLocked` event (launch, beneficiary, until). A pool page can state whether a launch's liquidity is locked for good, until a date, or not at all, from those two fields alone.

Page: /docs/pools/launch-lock

## Fees and the recapture split

> How reel is paid on a pool: its share of block fees, what integrators and referrers take from it, and how each arbitrage recapture splits.

### The base LP fee is the LPs’

Every swap pays the pool's base LP fee, and 100% of it goes to the pool's LPs as fee growth. reel takes none of it. The same holds for the advisory surcharges: Market Guard, the market-hours fee, the managed fee and the agent-tier fee are LP-only.

### The protocol share of block fees

Block fees are the charges Hook Blocks add: the Snipe tax, the dynamic fee, Storm Fee, LP Rewards, Auto Burn, Swap Cut, Exit Clock, Sandwich Guard, the zap cut and the reward slice. Each is split first: the protocol share `s` goes to reel, the rest to the block's destination. A creator picks `s` at launch, from the config's floor (20% in the spec's initial config) up to 50%, and it is frozen with the pool.

Every fee rounds **up**, so the trader pays the dust; every split rounds **down**, so the LP or the destination keeps it.

### Integrators and referrers

The protocol's cut of a swap, `P`, is the block-fee shares plus the burn's quote part, the minimum fee and recapture's protocol part. It is divided before any of it reaches the treasury:

- **Integrator:** `floor(P × integrator_bps / 10⁴)`, where the rate (at most 50% of the cut) is copied from the root's or the listing's `Integrator` when the pool opens, and never changes after.
- **Referrer:** `floor(P_blocks × referral_bps / 10⁴)`, where `P_blocks` is `P` without recapture, paid only while the trader's [referral link](/docs/pools/referrals) is live, to the referrer's claim ledger.
- **Protocol:** the rest, to the PROTOCOL bucket and from there to the treasury.

The trader pays the same either way: integrators and referrers are paid out of reel's cut, never added on top.

### Worked example

Sample settings, not live data. A buy of 1 SOL on a pool with a 0.3% base fee, LP Rewards 2%, Auto Burn 1% and a 20% protocol share:

| Charge | Amount | To LPs | To reel |
|---|---:|---:|---:|
| Base LP fee 0.3% | 0.003 | 0.003 | — |
| LP Rewards 2% | 0.020 | 0.016 | 0.004 |
| Auto Burn 1%, quote part | 0.002 | — | 0.002 |
| **Total** | **0.025** | **0.019** | **0.006** |

The curve receives `net = 0.975` SOL. Of the tokens it pays out, 0.8% (1% × (1 − 20%)) is burned from the base vault and the buyer gets the rest. Exact amounts are in atoms, and the SDK's test vectors pin them.

### The recapture split

On a pool running [Arb recapture](/hooks/arb-recapture), a swap that closes a price gap against the pool's reference pays a charge on the arbitrage profit, not on the swap. At the defaults, with King of the Pool on:

| Of each unit of arbitrage profit | Share |
|---|---:|
| Arber keeps | 25% |
| Protocol | 15% |
| Gap opener | 10% |
| King of the Pool pot | 12.5% |
| LPs, streamed | 37.5% |

reel's part is the config's recapture rate (15% of profit in the spec), to which the integrator split applies; referrers take no part of it. The gap opener is the last on-curve wallet, signing at top level, whose swap widened the gap; if there is none, or it is the same wallet, that part goes to LPs. The LPs’ part streams into fee growth over `release_secs`. A stale or missing reference skips recapture; it never refuses the swap.

### Other fees

- **Usage fee** (a Hook Blocks Market block): the block's builder and backers share it at the split fixed when the block was published; reel takes 20% and the block's reserve 10%.
- **Minimum fee:** 0.1% of a swap on a new token's pool that pays the protocol nothing else: see [Minimum fee](/docs/pools/minimum-fee).
- **Launch fee:** set by the admin, at most 0.01 SOL per launch, paid to the treasury; 0 in the spec's initial config.
- **Root fee:** at most 1 SOL to open an [owned root](/docs/pools/owned-roots).

The admin can change these for future pools and launches only. Existing pools keep the terms they opened with.

Page: /docs/pools/fees

## The minimum fee

> When a pool pays reel a minimum share of each swap, how much it is, and which blocks replace it.

### When it applies

A new token's pool must pay the protocol something. If none of its blocks does, `PoolInit` sets the minimum fee (bit 22) itself. The creator doesn't choose it and can't turn it off.

It binds when a new token's pool runs none of: Arb recapture, LP Rewards, Auto Burn, an Anti-Snipe tax, Dynamic fees, Storm Fee, Swap Cut, Exit Clock or Sandwich Guard. Running any one of them replaces it. Pools of an existing token never pay it.

### How much

`min_fee_pips` is copied from the config when the pool opens: 1,000 pips (0.1% of each swap) in the spec's initial config, and at most 1% if the admin changes it, for future pools only. It goes 100% to the protocol cut, so the integrator and referrer splits apply to it like any other protocol income.

### Example

Sample settings, not live data. A new token's pool with no blocks, only a 0.3% base LP fee. A 1 SOL buy pays 0.003 SOL to LPs and 0.001 SOL minimum fee; the curve receives 0.996 SOL. Add LP Rewards to the same pool and the minimum fee is gone: reel is paid by its share of LP Rewards instead.

### Why it exists

reel is paid through block fees. Without a floor, a new token's pool could leave out every block that pays the protocol and trade on reel for nothing. The minimum is small, fixed when the pool opens, and listed in the pool's parameters like every other charge.

Page: /docs/pools/minimum-fee

## Saved hooks

> A named set of Hook Blocks kept on chain: what it holds, how pools follow it, and how its versions work.

### What a saved hook holds

A saved hook is a `SavedHook` account written by `HookSave`. It holds:

- a name (up to 32 bytes) and the owner's wallet;
- a full `PoolParams` record: the default settings for every block, checked by the same validation `PoolInit` runs;
- `allowed_blocks`, a bitmask of the blocks a following pool may run;
- two fee ceilings: `max_lp_fee_pips`, the most LP-fee room a following pool may use, and `max_take_pips`, the most it may take in quote charges;
- a `following` counter.

Its address is `["hook", owner, salt, version]` under the reel program. It costs the account's rent and the transaction fee; reel charges nothing to save one.

### Versions

Every saved hook is immutable. To change one, the owner saves a new version under the same salt: `HookSave` with the previous version named writes `version + 1`, and only the same owner can. Version 1 has no predecessor. Older versions stay on chain, so a pool that followed version 2 can always show exactly what version 2 said.

### How a pool follows one

A pool names a saved hook at `PoolInit`. The program then checks that the pool conforms:

1. its blocks are a subset of `allowed_blocks`;
2. its LP-fee room is at most `max_lp_fee_pips`;
3. its quote takes are at most `max_take_pips`.

A pool that doesn't conform fails with `HookMismatch`. A pool that does increments the hook's `following` count. The pool still freezes its own settings: following a hook constrains what it may run, and doesn't link it to later versions.

### Saving one from the builder

Compose a board in the [builder](/builder), check it, then save it as a hook from the same page. A link to the board (`/builder?h=…`) is not a saved hook: it lives in the URL, costs nothing and binds nobody. A saved hook is on chain, versioned, and can bound an [owned root](/docs/pools/owned-roots).

Page: /docs/pools/saved-hooks

## Owned roots

> Open pools under a namespace of your own: the blocks it allows, who may open pools in it, and the integrator it pays.

### Roots on reel

Every pool opens under a **root**: a `Root` account (`["root", id]`) that pools take as part of their address, `["pool", root, base, quote, index]`. Root 0 is reel's shared root: the admin owns it, it is public, it allows every block and allows recapture.

An **owned root** is one you open with `RootCreate`. It runs on the same reel program: nothing new is deployed, and there is no code of yours to audit. What you get is a namespace with your own rules and your own integrator.

### What a root fixes

- **Allowed blocks.** A bitmask fixed at `RootCreate`. If you name a saved hook, the mask must be a subset of that hook's. Pools under the root can't run anything outside it.
- **Public or owner-only.** A public root lets anyone open pools in it, and must allow at least Anti-Snipe, Dynamic fees, LP Rewards and Creator royalty. An owner-only root takes pools from its owner alone.
- **Recapture.** A flag for whether its pools may run arbitrage recapture.
- **The root fee.** Paid once to the treasury when the root is created: at most 1 SOL, set by the admin.

### What the owner can do later

- Pause new pools. Pools already open keep trading; a paused root only refuses new ones (`RootClosed`).
- Switch between public and owner-only.
- Set the integrator: a wallet the admin has listed as an `Integrator`, active, with its rate. Pools opened afterwards copy it, and keep that rate for life.
- Hand the root over in two steps: `RootTransfer` names the new owner, `RootAccept` completes it.

The owner can't change a pool that is already open, and can't touch its funds.

### When to use one

- A launchpad that wants its own house rules and an integrator share on every pool its users open: see [Integrating as a launcher](/docs/guides/integrating-as-a-launcher).
- A community that wants every pool of its token family under one name, bounded by a [saved hook](/docs/pools/saved-hooks).
- A team that wants owner-only pools for its own markets.

If you only want to share a set of blocks, a saved hook is enough; a root adds who may open pools and who is paid.

Page: /docs/pools/owned-roots

## LP Time-Lock Boost

> Lock a position for weeks and earn extra rewards from a budget a creator or partner funds: reel-vaults' gauge module.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### What is in the program today

Two pieces the boost builds on are already in the reel program:

- **Position locks.** `PositionLock` locks a position's shares until a time, or for good (`PERMANENT`). A lock can only be extended, never shortened.
- **Locked positions keep earning.** Fees settle through fee growth, so a locked position collects its fees whenever its owner likes, without touching principal.

So an LP can lock today and earn the pool's ordinary fees. The boost adds an extra reward for locking.

### What is coming

> Coming: the `gauge` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.

The boost is a reward gauge beside one reel pool (PROGRAM.md §19, `gauge`):

- An LP stakes a reel position in the gauge for a lock of 1 to 104 weeks, inside the gauge's own minimum and maximum.
- Rewards accrue at a weight of `shares × boost`; the boost grows linearly with the lock length, up to the gauge's maximum (at most 3×).
- Anyone funds it, in the pool's quote or base token. A tranche is spread evenly per second over the weeks the funder picks, up to 104.
- The position keeps earning and paying out its ordinary LP fees while staked, and goes back to the staker when the lock ends.

### Planning for it

- The lock lives in the gauge: it doesn't set a reel `PositionLock`, and its authority never removes liquidity. A reel lock the position already has is kept and comes back with it.
- Split a position first (`PositionSplit`) if you want to stake part of it; the new position inherits the source's lock.
- Read [Providing liquidity](/docs/guides/providing-liquidity) for how positions, locks and fee collection work now.

Page: /docs/pools/lp-time-lock-boost

## Referrals

> Claim a ref code and share it. Wallets that link to it pay you part of the protocol's cut of their swaps for 365 days, at no cost to them.

### Claim a code

`ReferrerRegister` claims a code of 3 to 24 characters: lowercase letters, digits and dashes. The program stores it twice, under `["referrer", wallet]` and `["refcode", code]`, so a code resolves to one wallet and a wallet to one code. A code that breaks the rules fails with `InvalidCode`; a taken one fails with `AlreadyExists`.

### Link a wallet

A trader links to a code once with `ReferralLink`. The link is stored at `["reflink", wallet]` and can't be changed for 365 days. A wallet can't link to its own code (`SelfReferral`).

### What a referrer earns

While a trader's link is live, every swap they make credits the referrer `referral_bps` of the swap's protocol cut from block fees, the minimum fee and the burn's quote part. Recapture's protocol part is excluded. The credit lands in the referrer's claim ledger in the same instruction, with the tokens moved to the claims vault, and `lifetime[referral]` counts it.

The trader pays exactly the same with or without a link: the referrer is paid out of reel's cut. The rate is set by the admin in the config, at most 50% of the cut, and applies to future swaps.

### Funded campaigns

Funded referral campaigns, paid in epochs from a Merkle root, run in reel-vaults' `programs` module: Deployed in reel-vaults (the `programs` module); it opens Nov 12, once its mainnet check passes. Everything above runs in the reel program.

Page: /docs/pools/referrals

## Programs

> Creator rewards for trading or providing liquidity on a token's pools: Swap Reward Mint in the reel program, and funded campaigns in reel-vaults.

Status: partial. Part of this runs today and part is coming.

### In the program today: Swap Reward Mint

[Swap Reward Mint](/hooks/swap-reward-mint) is an advisory block (bit 20). Each charged swap pays a slice of its quote, and the same swap mints a reward token to the trader: `min(slice × rate / 10⁹, max per swap, cap − minted)`. The reward mint's authority must be reel's `VAULT_AUTH`, so only swaps can mint it. It stops once the cap is reached or the run time ends. The slice takes the protocol share first, and the rest goes to the pool's payee.

| Key | Setting | Min | Default | Max | Rule |
|---|---|---|---|---|---|
| `reward_pips[0]` | Buy slice | 0% | 1% | 5% | At least one side above 0. |
| `reward_pips[1]` | Sell slice | 0% | 1% | 5% | At least one side above 0. |
| `reward_rate` | Reward rate | 1 | 1,000,000,000 | 1,000,000,000,000,000,000 | — |
| `reward_max_swap` | Most per swap | 1 atoms | Named at launch | — | — |
| `reward_cap` | Total reward | 0 (off) | Named at launch | See rule | At least the most per swap. |
| `reward_run_secs` | Runs for | 0 s | 0 s | 4,294,967,295 s (49710d 6h) | — |

### Funded campaigns in reel-vaults

reel-vaults' `programs` module is a funded Merkle distributor: a funder deposits a budget in one mint, a poster proposes one Merkle root per epoch, a reviewer can veto it during a review delay of 6 to 30 days, and after that anyone submits claims with a proof. Points, milestones and referral bindings stay off chain; the poster turns them into amounts. Claims run until 30 days after the campaign ends, then the funder withdraws what is left.

Deployed in reel-vaults (the `programs` module); it opens Nov 12, once its mainnet check passes.

Dev Drip and Vesting Milestone, the creator tools around programs, are reel-vaults' `escrow` module (coming). [Product updates](/updates) moves each one when it ships.

Page: /docs/pools/programs

## SDK

> The reel TypeScript client: program ids, PDAs, account decoders, the launch builders and exact quotes. It lives in the reel repository; the npm package is coming.

### Where it is

The client is in the reel repository under `sdk/src`, built on `@solana/web3.js` 1.x with no `@solana/spl-token` dependency. The reel app imports it as `@/sdk/src`. A published npm package is coming; until then, copy the folder or depend on the repository.

> The program ids default to the keys generated for the program and can be overridden with `NEXT_PUBLIC_REEL_PROGRAM_ID` and `NEXT_PUBLIC_REEL_HOOK_PROGRAM_ID`. Nothing is deployed yet: check [Programs and addresses](/docs/reference/programs-and-addresses) before you send anything.

### What it exports

| Area | Exports |
|---|---|
| Ids | `REEL_PROGRAM_ID`, `REEL_HOOK_PROGRAM_ID`, `VAULT_AUTH`, token program ids, `NATIVE_MINT` |
| PDAs | `configPda`, `rootPda`, `launchPda`, `poolPda`, `vaultPda`, `positionPda`, `ledgerPda`, `claimsVaultPda`, `walletCounterPda`, `savedHookPda`, `refCodePda`, `hookHolderPda` and the rest of the seeds table |
| Accounts | `decodePool`, `decodeLaunch`, `decodePosition`, `decodeLedger`, `decodeConfig`, `decodeRoot`, `decodeSavedHook`, `accountFilters` for `getProgramAccounts` |
| Params | `encodeParams`, the `PoolParams` type and its validation |
| Quotes | `quoteSwap`, `minOut`, `maxIn`: the swap pipeline in TypeScript, atom for atom |
| Instructions | `ix.*`: one builder per reel and reel-hook instruction |
| Errors | `parseCustomError`, `errorName` |
| Tokens | `wrapSolIxs`, `unwrapSolIx`, `createAtaIdempotentIx` |

### Building a launch

A launch spans several transactions (see [Multi-pool launch](/docs/pools/multi-pool-launch)). The builders follow the instruction order. `PoolParams` comes from a builder board through the catalog, so the app, the docs and the SDK agree on every bound.

~~~ts
import { PublicKey, Keypair } from "@solana/web3.js"
import { ix, launchPda, poolPda, rootPda } from "@/sdk/src"
import { poolParams, presetBoard, preset } from "@/lib/blocks"

const mint = Keypair.generate() // a new token's mint signs LaunchCreate
const launch = launchPda(mint.publicKey, 0)

const create = ix.launchCreate({
  creator, mint: mint.publicKey, newToken: true, treasury,
  decimals: 6, supply: 1_000_000_000_000_000n, poolCount: 2,
  weights: [7_000, 3_000], maxRetainedBps: 200, toleranceBps: 100,
  name: "Example", symbol: "EXMPL", uri: "https://example.com/meta.json",
})
const hookMetas = ix.initExtraMetas(creator, mint.publicKey) // same transaction

const board = presetBoard(preset("recommended-new")!)
const initSol = ix.poolInit({
  creator, launch, base: mint.publicKey, quote: NATIVE_MINT, index: 0,
  params: poolParams(board),
})
~~~

Then `ix.poolSeed` for each pool (from the escrow for a new token), an optional `ix.devBuy`, and `ix.launchFinalize` with every pool, plus the reference pools when the launch sets an opening price check.

### Quotes match the program

`quoteSwap` runs the same steps as the program's swap: it advances the pool's clock-driven state, applies every charge in order with the same rounding, and returns the input, the output, the full charge breakdown and the pool as it would be afterwards. The SDK's tests check it against vectors produced by running the program itself in LiteSVM (`sdk/test-vectors/swaps.json`).

Read [Swapping and quoting](/docs/guides/swapping-and-quoting) for a complete swap, and [SDK for integrators](/docs/integrations/sdk) for routers and apps.

### How the reel app uses it

The reel app builds its transactions with these builders and reads accounts with the decoders through its server-side RPC proxy. Every transaction goes through one pipeline: build, simulate, sign, send, confirm. A wallet is asked to sign only after the simulation passes, and a failure is reported as a sentence from the program's logs. The app never signs for a wallet.

Page: /docs/pools/sdk

# Revenue tokens

## Revenue tokens

> Lock a fee right a reel pool pays, and mint a fixed supply of tokens whose stakers share its income: how reel-vaults' Revenue Tokenizer works and the pieces it builds on.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### What a revenue token is

A revenue token turns a right to income into something people can hold and trade. Someone who owns a fee right on a reel pool, such as a launch or an LP position, locks it behind a token. The token's supply is minted once, and every staker's share of the fee right's income is their share of the staked supply.

On hookr this is the HookRevenue Tokenizer. On reel it is the **Revenue Tokenizer**, the `tokenizer` module of reel's periphery program, reel-vaults. See its catalog entry at [Revenue Tokenizer](/hooks/revenue-tokenizer).

### Status on reel

> Coming: the `tokenizer` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address. No revenue token exists on reel yet. The Revenue Router, a split usable as `royalty_to`, is reel-vaults' `router` module (live).

The tokenizer's accounts, instructions and limits are specified in PROGRAM.md §19 and the SDK's `sdk/vaults/tokenizer.ts`. It stands on fee rights the reel program already pays: launch ownership and LP positions. Each one is paid by a fixed path that nobody can redirect, the admin included (PROGRAM.md §10).

### The pieces

| Piece | What it does | Status |
| --- | --- | --- |
| Fee right | Earns income from a pool: LP fees, a bucket, a royalty ledger | In the reel program |
| Lock | Holds the fee right for a term or forever: `LaunchLock`, `PositionLock`, or a recipient frozen at `PoolInit` | In the reel program |
| Claims | `ClaimLedger` per wallet and mint, paid from the mint's claims vault by `Claim` | In the reel program |
| Revenue Router | A split PDA with up to 8 payees, usable as `royalty_to` | In reel-vaults |
| Revenue Tokenizer | Takes the fee rights, mints the token, streams income to stakers | reel-vaults, coming |
| The token's own market | A pool for the revenue token itself | A plain SPL token: any venue that lists SPL tokens |

### One tokenization

The steps below are reel-vaults' tokenizer instructions (PROGRAM.md §19).

1. **Hold a fee right.** A reel LP position, or a live, unlocked launch you own: each pool of it you register is one right (its launch position's LP fees and its OWNER bucket).
2. **Mint the supply.** `Init` mints a fixed SPL Token supply (decimals up to 9) into the stake vault as your stake and revokes the mint authority in the same instruction. It fixes a treasury leg of at most 5%, a release period of up to 14 days, and a term: forever, or at least 7 days with a `return_to` address.
3. **Hand the right over.** Send `PositionTransfer` or `LaunchTransfer` naming the tokenizer's authority, then `AddRight` accepts it. Up to 8 rights, paying in up to 4 quote mints.
4. **Pass income on.** Anyone runs `Sync`: the tokenizer collects through reel, sends the leg to reel's treasury and streams the rest to stakers over the release period. Stakers `Claim` per income mint; unstaked tokens earn nothing.
5. **Return or keep.** After a finite term ends, anyone sends `Return` and the rights go back to `return_to`, which accepts them. A forever term never returns.

### Read next

- [What you can tokenize](/docs/revenue-tokens/what-you-can-tokenize): each fee right in the reel program and how it moves.
- [How pools pay it](/docs/revenue-tokens/how-pools-pay-it): every stream a swap pays, and which ones a revenue token could receive.
- [Terms and endings](/docs/revenue-tokens/terms-and-endings): the lock primitives a term would use.
- [FAQ and risks](/docs/revenue-tokens/faq-and-risks): what can stop income, and what a holder should check.
- The app pages [Revenue tokens](/revenue) and [Tokenize](/tokenize) will list tokens and take new ones once the tokenizer ships.

Page: /docs/revenue-tokens/overview

## What you can tokenize

> The fee rights the reel program pays today, who holds each one, and the instructions that move it: the ones a revenue token can lock, and the ones it can't.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### Fee rights in the reel program

A fee right is anything that earns from a pool on its own, with a holder the program checks. The reel program has four. reel-vaults' tokenizer (coming) takes the first two as rights; the royalty and the payee are fixed in the pool.

| Fee right | Held by | What it earns | How it moves |
| --- | --- | --- | --- |
| Launch ownership | `Launch.owner`, or the beneficiary while launch-locked | The launch positions' LP fees (`FeesCollect`), and the OWNER bucket (`BucketCollect`, kind 2) | `LaunchTransfer` + `LaunchAccept`; `LaunchLock`; `LaunchUnlock` |
| An LP position | `Position.owner` | Its share of fee growth, collected without touching principal | `PositionTransfer` + `PositionAccept`; `PositionSplit`; `PositionLock` |
| Creator royalty | `royalty_to`, frozen at `PoolInit` | The ROYALTY bucket, credited to its `ClaimLedger` | Never moves; name the right address at launch |
| Payee | `Pool.payee`, frozen at `PoolInit` | The PAYEE bucket (Swap Cut or Exit Clock routed to 4) and REWARD_CREATOR (Swap Reward Mint's remainder) | Never moves; name the right address at launch |

### Launch ownership

The launch position of each pool belongs to the `Launch` PDA (kind LAUNCH), and the launch's owner acts for it. The owner collects the launch positions' LP fees and is paid the OWNER bucket, which fills from any block routed to destination 1: Swap Cut, Exit Clock, Storm Fee and Sandwich Guard. One launch can hold up to 8 pools, so one launch ownership can carry the income of all of them.

While a launch is locked with `LaunchLock`, the beneficiary collects instead, and the liquidity can't be withdrawn. `LaunchTransfer` is refused while the launch is locked. Read [Launch lock](/docs/pools/launch-lock).

### LP positions

A `Position` earns by fee growth: `owed += shares·Δgrowth >> 64`, settled before every share change and on collect. Collecting never touches principal, and a locked position keeps earning, so a position locked for a term is a clean fee right. `PositionSplit` can carve out part of a position (the new one inherits the lock); the launch position can't be split or transferred on its own, only through the launch.

### Royalty and payee

`royalty_to` and `payee` are written into the pool at `PoolInit` and can never change. A revenue token can receive them only if its address, or a split that pays it, was named when the pool opened. That is why the [Revenue Router](/hooks/revenue-router) (live) is a split PDA whose address is known before it exists: name it as `royalty_to` at launch, and a payee can be a tokenizer later. The tokenizer books income by its income account's balance, so whatever reaches that account counts.

The royalty is credited to the recipient's `ClaimLedger` for the pool's quote mint, and the recipient withdraws it with `Claim`. A program-owned recipient claims through its own program.

### What reel can't hold

- **The protocol share and its splits.** reel's cut, the integrator's part and the referrer's part are not fee rights a creator owns.
- **Other LPs' fees.** Only positions the tokenizer holds would pay it.
- **Fee rights on other venues.** hookr takes Uniswap positions, fee NFTs and other launchpads' fee rights through "doors". reel's tokenizer takes only reel positions and reel launches.
- **More than 8 rights.** One revenue token holds up to 8 fee rights, paying in up to 4 quote mints.

Page: /docs/revenue-tokens/what-you-can-tokenize

## How pools pay a revenue token

> Every stream a reel swap pays, the account it lands in and who can collect it: the income a revenue token can receive, and the parts it never could.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### Why a pool can pay a token at all

On Uniswap v4, hookr's hook sits inside every swap, so it can route a pool's take to a token. On reel the pool program itself runs the Hook Blocks, so the routing is part of the swap. Each charge is computed, split, and parked in a fixed place in the same instruction: fee growth for LPs, or one of ten buckets in the `Pool` account. Nothing about the destination can change after `PoolInit`.

A revenue token never needs to be inside the swap. It only needs to hold the right that a fixed destination pays.

### The streams

| Stream | Lands in | Collected by | Who can hold it |
| --- | --- | --- | --- |
| Base LP fee, LP-routed block fees, surcharges | `fee_growth_quote` | `FeesCollect` on each position | Position owners; the launch owner for launch positions |
| Recapture LPs' part, King of the Pool releases | The LP stream, released into fee growth over `release_secs` | `FeesCollect` | Same as above |
| Blocks routed to 1 (owner) | OWNER bucket (2) | `BucketCollect` | Launch owner, or the beneficiary while launch-locked |
| Creator royalty | ROYALTY bucket (3) → ledger | `BucketCollect`, then `Claim` | `royalty_to` |
| Blocks routed to 4 (payee) | PAYEE bucket (9) | `BucketCollect` | `Pool.payee` |
| Swap Reward Mint remainder | REWARD_CREATOR bucket (7) | `BucketCollect` | `Pool.payee` |
| Sandwich and other charges routed to 2 | HOLDER_POT bucket (5) | `BucketCollect`, then `HolderPay` (reel-vaults) | The token's holders, by tokens × time |

Buckets hold quote atoms. LP income settles per position on both sides: a `Position` tracks quote and base growth, and `FeesCollect` pays what it is owed of each.

### Collecting is permissionless where it can be

`BucketCollect` takes any signer. It checks that the destination's owner is the bucket's fixed recipient, so a keeper can push a creator's or a payee's income without being able to divert it. `FeesCollect` is signed by the position owner, or by the launch-lock beneficiary for a locked launch. A tokenizer that holds a position signs through its authority PDA when anyone runs its `Sync`.

### What never reaches a revenue token

- The protocol share of block fees, the minimum fee, burn quote and recapture's protocol part. These go to the PROTOCOL bucket, less the integrator's and referrer's parts (PROGRAM.md §6).
- Auto Burn's burned tokens: they are destroyed, not paid.
- The King of the Pool pot: it pays round winners and releases to LPs.
- Market block usage fees: they split between the block's builder, its backers, reel and a reserve.

> A stream only pays while its pool trades. A revenue token's income is whatever its locked fee rights earn, nothing more.

Page: /docs/revenue-tokens/how-pools-pay-it

## Holding a revenue token

> What staking a reel revenue token gives you, what you can check on chain before you buy one, and how the tokenizer answers hookr's design questions.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### What a staker gets

A share of the income of the fee rights the token locks, in proportion to the staked supply, claimed per income mint whenever the staker likes. The supply is fixed at `Init`. Income streams over the tokenizer's release period (up to 14 days; the SDK defaults to 1 day), and a stake earns the share of each second it is staked. Tokens left in a wallet or a pool earn nothing.

### What you can check today

Every fee right a revenue token holds is readable on chain without trusting the token:

1. **The launch.** Read the `Launch` account: `owner`, `beneficiary` and `lock_until`. A launch held for a token shows the tokenizer's authority as its owner.
2. **The positions.** Read each `Position`: `owner`, `shares` and `lock_until`. A permanent lock is `i64::MAX`.
3. **The royalty and payee.** Read the `Pool`: `royalty_to` and `payee` were frozen at `PoolInit`, and aren't part of a tokenizer's rights.
4. **The income so far.** `Pool` keeps `lp_fees_total` and `fees_by_block`; a `ClaimLedger` keeps `lifetime` per category and `claimed`.

reel's own pages show these reads with their source, and a dash where a read fails. Read [Where the numbers come from](/docs/reference/where-the-numbers-come-from).

### How the tokenizer answers hookr's questions

hookr decides these on its own design; reel-vaults' tokenizer answers them this way (PROGRAM.md §19):

- **Accounting across transfers.** Only staked tokens earn, so transfers stay plain SPL Token transfers with no hook and no fee. A stake → sync → unstake in one second earns nothing.
- **Release period.** Fixed at `Init`, up to 14 days. A period of 0 books each arrival at the next second against whoever is staked then; the SDK defaults to 1 day.
- **Several assets.** Up to 4 income mints, one per quote of the rights; stakers claim each separately.
- **Syncing.** Anyone runs `Sync`, untipped.
- **Drops.** Income is booked by balance, so anything sent to an income account reaches stakers at the next sync.
- **Where not to send it.** Revenue tokens held outside the stake vault, in a pool or a program, earn nothing.

### Claims on reel today

Ledger income, such as a royalty, a King of the Pool prize, a referral or a recapture share, is claimed with `Claim(amount)` from the wallet's `ClaimLedger` for that mint, where `0` claims everything owed. The claims vault always holds at least what every ledger of that mint is owed, because each credit moves tokens in the same instruction. A revenue token sits on top of these paths; it doesn't replace them.

Page: /docs/revenue-tokens/holding-a-revenue-token

## Terms and endings

> A fee right locked for a term or forever: the reel lock primitives under it, the tokenizer's own terms, and how a term ends.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### The locks reel already has

A revenue token is only as durable as the lock behind its fee right. reel specifies three, and its tests hold that locks only extend and that a forever lock never releases (PROGRAM.md §16).

| Fee right | Lock | Term | Ending |
| --- | --- | --- | --- |
| Launch ownership | `LaunchLock(beneficiary, unlock_ts)` | Any `unlock_ts`, or `i64::MAX` for forever | The beneficiary calls `LaunchUnlock(new_owner)` once `unlock_ts` has passed; forever never unlocks |
| LP position | `PositionLock(until)` | Extend only; `i64::MAX` is permanent | The lock lapses and the owner may remove liquidity |
| Royalty, payee | Frozen at `PoolInit` | Forever by construction | Never; the pool pays the named address for life |

### While a launch is locked

- The beneficiary collects the launch positions' fees and is paid the OWNER bucket.
- The launch positions can't be withdrawn, and `LaunchTransfer` is refused.
- `LaunchLock` is refused on a launch that is already locked, and the beneficiary can't be one of reel's own PDAs.

A tokenizer doesn't use `LaunchLock`: it takes the launch as its owner, and only accepts a launch that is live and unlocked. While it holds it, nobody can lock it, withdraw its principal or add to it. Read [Launch lock](/docs/pools/launch-lock).

### The tokenizer's terms

Fixed at `Init` (PROGRAM.md §19):

- **Term.** Forever, or at least 7 days, as on hookr.
- **Who ends it.** Anyone: after the term, `Return` runs a last sync of each right and hands it back. From 7 days after the end, a forced return skips that last collect, so a paused quote can't keep a right from going back.
- **Where it goes.** To `return_to`, named at `Init`, which then accepts the position or launch with reel's `PositionAccept` or `LaunchAccept`.
- **Unclaimed income.** Booked income stays claimable after a return.
- **Fees.** A treasury leg of at most 5% of income, fixed at `Init` and paid to reel's `Config.treasury`.

### How an ending shows

Every lock and unlock emits an event: `LaunchLocked` (launch, beneficiary, until), `LaunchOwner` (from, to, kind) and `PositionLocked` (position, until). reel's pages will read a token's locks from chain and show "forever", a date, or "ended", never an estimate.

Page: /docs/revenue-tokens/terms-and-endings

## Revenue tokens: FAQ and risks

> What can stop a revenue token's income, which risks come from the pool and its quote, and what reel's admin can and can't touch.

Status: coming. Built in reel-vaults' source, not in the deployed build yet; nothing on this page is live.

### Is there a revenue token on reel now?

No. The Revenue Tokenizer is built in reel-vaults' source but not in the deployed build yet, so anything offered today as a "reel revenue token" is not one. reel has no airdrop and never asks for a seed phrase. Read [Security](/security).

### What if the pool stops trading?

Then the fee right earns nothing and the token receives nothing. Income comes only from swaps on the pools behind the fee right. Nothing else tops it up.

### Can the admin redirect the income?

Not under the spec. The admin can't move user funds, change a pool's parameters, or send any bucket anywhere but its fixed recipient, and can't pause withdrawals, fee collection or claims (PROGRAM.md §10). The admin can change fees for **future** pools only.

> The program's upgrade authority, held by the reel treasury, remains the largest power until it is revoked.

### Risks that come from the quote

A revenue token is paid in its pools' quote mints, so it inherits their risks:

- A quote mint with a freeze authority, as USDC has, can freeze a pool's vault.
- A Pausable mint stops swaps and withdrawals while paused.
- A quote with a permanent delegate is only allowed when listed in `QuoteListing`, because its issuer could move vault funds.

Read [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).

### Can the supply change?

No. `Init` mints the whole supply once and sets the mint authority to `None` in the same instruction, and the mint never has a freeze authority. Check both on chain before you rely on a token.

### Is a revenue token a security, or advice?

reel doesn't give legal, tax or financial advice, and these pages are not an offer. Rules for income-sharing tokens differ by jurisdiction. Read the [Terms](/terms).

Page: /docs/revenue-tokens/faq-and-risks

## Build on revenue tokens

> For wallets, indexers, keepers and launch platforms: the reel accounts, instructions and events that carry fee-right income, and what the tokenizer adds.

Status: partial. Part of this runs today and part is coming.

### Start from the fee rights

The tokenizer is reel-vaults' `tokenizer` module (coming); the income paths under it are in the reel program. An integration built on those paths keeps working with revenue tokens, because a token holds the same rights. Read [What you can tokenize](/docs/revenue-tokens/what-you-can-tokenize) for the four rights and [How pools pay it](/docs/revenue-tokens/how-pools-pay-it) for every stream.

### Wallets and portfolio apps

Show what a wallet is owed, per mint, from its `ClaimLedger` accounts. A ledger is the PDA `["ledger", wallet, mint]`; `owed` is claimable now, `claimed` is paid out, and `lifetime` splits credits into prize, royalty, holder pot, referral, recapture and other.

~~~ts
import { PublicKey } from "@solana/web3.js"
import { REEL_PROGRAM_ID, accountFilters, decodeLedger } from "@/sdk/src"

// Every ledger of one wallet: the tag and size filter, plus the wallet at offset 8.
const filters = [...accountFilters("ClaimLedger"), { memcmp: { offset: 8, bytes: wallet.toBase58() } }]
const accounts = await connection.getProgramAccounts(REEL_PROGRAM_ID, { filters })
const ledgers = accounts.map((a) => decodeLedger(a.account.data))
~~~

Position income is separate: read each `Position` the wallet owns and compute what it is owed with the SDK's `owedFees`. Uncollected fees are not yet the wallet's tokens, so label them as owed, not as a balance.

### Explorers and indexers

reel logs events with `sol_log_data`, so each appears as `Program data: <base64>` in the transaction's logs, with an event id byte first and packed little-endian fields after (PROGRAM.md §15). The ones that trace fee-right income:

| Id | Event | Use |
| --- | --- | --- |
| 4 | FeesCollected | A position's fees paid, base and quote |
| 10 | BucketPaid | A bucket paid to its recipient, by kind |
| 11 | Credited | A ledger credited, with a category byte |
| 12 | Claimed | A wallet withdrew from its ledger |
| 17 | LaunchOwner | A launch changed hands |
| 18 | LaunchLocked | A launch locked, with its beneficiary and end |
| 6 | PositionLocked | A position's lock set or extended |

Read [Errors and events](/docs/reference/errors-and-events) for every field.

### Keepers and bots

`BucketCollect` is permissionless: any signer can push a pool's bucket to its fixed recipient, and the program checks the destination's owner. `KotpSettle` is permissionless too. The program pays no tip for either today, and the tokenizer's `Sync` is permissionless and untipped too. Read [Jobs for agents](/docs/integrations/agent-jobs).

### Launch platforms

A platform that wants its creators' income tokenizable later should get the addresses right at launch, because `royalty_to` and `payee` never change after `PoolInit`:

- Name the creator's chosen recipient, or a split, as `royalty_to` and `payee`.
- Keep launch ownership with the creator, so a launch lock or a hand-over to a tokenizer stays possible.
- List the platform as an integrator to share the protocol cut. Read [Integrating as a launcher](/docs/guides/integrating-as-a-launcher).

The [Revenue Router](/hooks/revenue-router), a split PDA usable as `royalty_to`, is reel-vaults' `router` module (live).

### What to build on the tokenizer

hookr's add-ons show the shape: vaults that compound a token's income into its pool, time shares that sell a day's income, wallets that show income per asset. None of these exists on reel yet. The tokenizer's accounts, instructions and events are specified in PROGRAM.md §19 and decoded by the SDK's `sdk/vaults/tokenizer.ts`, so an integration can be written now and run once the module is in the deployed build. Ledgers, positions and buckets underneath won't change.

Page: /docs/revenue-tokens/build-and-integrate

# Concepts

## Architecture

> reel's programs on Solana in one map: what each one does, the vault authority they share, the accounts they keep, and what the admin can and can't do.

### Three programs

> This deployment is configured with the reel program at `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.

| Program | Id | What it does |
|---|---|---|
| reel | `Ajvhesd3q6yJFgnBL6vppAJDF7gP6nmksA8WkrTM4vcJ` | Constant-product pools with the Hook Block pipeline, the launcher, positions, claims and the registries (roots, saved hooks, integrators, referrals, agents, the Hook Blocks Market) |
| reel-hook | `oF7b3JDvBhT34SjHPsC1xiZrkgNKwFzPncTxk2TYGdx` | The Token-2022 transfer hook of every token reel launches. Holds no funds and never moves tokens |
| reel-vaults | `98oS15W2xt8fa4NCZvHMEv6ZdzVEVeu45prSt85Mb7fK` | Periphery beside the pools, off the swap path. Live on Solana mainnet: Holder Pot payouts; the Fee Bridge; the Revenue Router; the recovery reserve; limit orders and the Floor bid, with fill bounties. Deployed, and opens Nov 12 once its mainnet check passes: funded referral and points campaigns. Coming with an upgrade at the same address: Vesting Milestone and Dev Drip; zap vaults, Pool Mesh and Family Pinger; the LP Time-Lock Boost; the Revenue Tokenizer; Pay Later; the Entry Ratio Guarantee. |

reel is written in Pinocchio for SBPF v3. Other venues are planned only at the edges (a locker, a lane for exotic quotes), never on the swap path of a reel pool; limit orders and floor bids run in reel-vaults. Naming a venue implies no partnership.

### Why the hook is its own program

Solana lets a program call itself directly, but not re-enter through another program: reel → Token-2022 → reel fails with `ReentrancyNotAllowed`. A pool sending its own token would trigger exactly that if the hook lived inside reel. So reel-hook is a small separate program. It reads reel's accounts and writes only its own `HookHolder` records.

A Token-2022 hook runs after balances move and can only allow or refuse a transfer. It **can't take a fee or redirect tokens**, and it doesn't run on mint or burn. That's why every tax on reel is charged in the pool, and the hook only enforces rules.

### VAULT_AUTH

`VAULT_AUTH` is one PDA, `["vault_auth"]` under the reel program, and it owns every token account reel holds: pool vaults, launch escrows, claims vaults and bond vaults. It signs every transfer out of them. Its address: `63XMzPvCCSWq9ygsgshA6bJg5buZNJ3FX6e6YDVrSZ5S`.

reel-hook recognises reel's vaults by that owner. reel itself never trusts the owner alone: every instruction checks a vault's address against the pool, launch or mint it belongs to. A vault can only pay (a) the trader in a swap, (b) a position's owner on a remove or a fee collect, (c) a bucket's fixed recipient, (d) the claims vault for a ledger credit, or (e) the burn.

### Accounts

Every account starts with an 8-byte tag and stores its canonical bump. Every PDA below is under the reel program unless noted.

| Account | Seeds | Created by |
|---|---|---|
| Config | `["config"]` | `InitConfig` |
| Root | `["root", id]` | `InitConfig` (root 0), `RootCreate` |
| QuoteListing | `["quote", mint]` | `QuoteList` (admin) |
| Integrator | `["integrator", wallet]` | `IntegratorSet` (admin) |
| SavedHook | `["hook", owner, salt, version]` | `HookSave` |
| Launch | `["launch", base_mint, nonce]` | `LaunchCreate` |
| MintGuard | `["mintguard", mint]` | `LaunchCreate` (new token) |
| Pool | `["pool", root, base_mint, quote_mint, index]` | `PoolInit` |
| Pool vault | `["vault", pool, mint]` | `PoolSeed` |
| Position | `["position", pool, seed_key, nonce]` | `PositionOpen`, `PoolSeed`, `PositionSplit` |
| ClaimLedger | `["ledger", wallet, mint]` | `LedgerOpen` (anyone pays) |
| Claims vault | `["claims", mint]` | `ClaimsVaultOpen` |
| WalletCounter | `["wcount", launch, wallet]` | `WalletCounterOpen` |
| Agent | `["agent", wallet]` | `AgentRegister` |
| Referrer | `["referrer", wallet]`, `["refcode", code]` | `ReferrerRegister` |
| ReferralLink | `["reflink", wallet]` | `ReferralLink` |
| MarketBlock | `["mblock", block_id]` | `MarketPublish` |
| HookHolder (reel-hook) | `["holder", mint, wallet]` | reel-hook `HolderInit` |
| Extra metas (reel-hook) | `["extra-account-metas", mint]` | reel-hook `InitializeExtraAccountMetaList` |

Instruction tags, errors and events are in the [errors and events reference](/docs/reference/errors-and-events); byte layouts ship with the SDK (`sdk/src/layouts.json`).

### What a swap does, in order

1. Check the accounts and that the pool is live; read the clock.
2. Advance time-driven state: release the LP stream, step the dynamic-fee reference, roll the Storm sample, lapse the managed fee.
3. Run the gates: buy pause, sell lock, exact-out during the guard, zap-target feeders, the agent gate, and Market Guard's oracle.
4. Price the swap on the curve and compute every charge on the gross amount.
5. Charge arbitrage recapture, if the pool runs it and its reference is fresh.
6. Settle the amounts and the burn, then the bookkeeping: Wallet Cap, King of the Pool, the gap opener, the sandwich window and the counters.
7. Move tokens in, then out (signed by `VAULT_AUTH`), then the burn, the ledger credits and any reward mint.
8. Check that every vault still covers what the pool owes.

### Admin powers

The admin is `Config.admin`, transferable in two steps. Every power is listed here.

**Can:** set the treasury, the fee keeper and the bond mint; set fees for future pools and launches within bounds (launch fee ≤ 0.01 SOL, root fee ≤ 1 SOL, minimum fee ≤ 1%, share floor 20–50%, referral ≤ 50%, recapture protocol ≤ 25%, integrator ≤ 50%); list quotes and integrators; keep the market-hours calendar; admit market blocks; set a pool's deposit cap, which only gates new deposits; pause new pools, launches or roots.

**Can't:** move user funds or any bucket anywhere but its fixed recipient; change a pool's parameters; pause swaps, withdrawals, fee collection or claims; mint, freeze, or change a mint's hook.

**The fee keeper** (`Config.fee_keeper`, set by the admin) records and drips every [Fee Bridge](/hooks/fee-bridge) in reel-vaults. It chooses when, within each bridge's `max_per_drip` per `min_interval`, and can't send a bridge's funds anywhere but its destination pool's LP stream and the drip tip. After 7 days without a keeper call on a bridge, anyone may record and drip it under the same caps.

> The **upgrade authority** is the largest power: it can replace the program. reel's and reel-hook's is held by the reel treasury; reel-vaults' is still the deploy wallet while its mainnet verification finishes, and moves to the treasury after. It stays the largest power until it is revoked; no date is set for that. The [security page](/security) shows how to check who holds it.

Page: /docs/concepts/architecture

## Quote tokens and Token-2022 risks

> Which mints a reel pool accepts on each side, what each Token-2022 extension brings into a pool, and the risks you inherit from a quote's issuer.

### Two token programs

Solana has two token programs: SPL Token and Token-2022, which adds optional **extensions** to a mint. A reel pool records the token program of each side when it opens, and every transfer uses `TransferChecked`, which checks the mint and its decimals.

SOL trades as wrapped SOL (`So11111111111111111111111111111111111111112`, SPL Token). The SDK wraps before a buy and unwraps after a sell in the same transaction.

### The mint policy

`PoolInit` checks both mints and fails with `MintRejected` on any of these:

- `TransferFeeConfig`, `ConfidentialTransferMint`, `ConfidentialTransferFeeConfig`, `ConfidentialMintBurn`, `NonTransferable`, `DefaultAccountState`, or an extension type the program doesn't know;
- a `TransferHook` pointing at any program other than reel-hook;
- a hooked mint used as the **quote**: a reel-launched token can be a pool's base, never another pool's quote;
- a `PermanentDelegate` on a quote that the admin hasn't listed.

Allowed: `MetadataPointer`, `TokenMetadata`, `MintCloseAuthority`, `InterestBearing`, `ScaledUiAmount`, `Pausable`, the group extensions, `PermissionedBurn`, and a listed `PermanentDelegate`.

### Listed and unlisted quotes

The admin reviews quotes and lists them in a `QuoteListing` (`["quote", mint]`) with a per-pool deposit cap, a badge and a pause flag. A pool on a listed quote takes that cap. An unlisted quote is accepted only when the config allows unlisted quotes, and then at the config's unlisted cap; otherwise `PoolInit` fails with `QuoteNotAllowed`. A listing is a review of the mint's mechanics, not an endorsement of its issuer.

### Risks a quote brings

> These come from the mint's issuer, not from reel, and no pool setting removes them. Read a mint's authorities and extensions before you pair it.

- **Freeze authority.** An issuer with a freeze authority can freeze any token account of its mint, including a pool's vault. USDC's mint has one. A frozen vault stops swaps and withdrawals on that pool until it is thawed.
- **Pausable.** While the issuer pauses the mint, no transfer of it succeeds, so the pool can't swap and LPs can't withdraw.
- **Permanent delegate.** The delegate can move or burn tokens from any account of the mint, a vault included. That's why reel only accepts it on a quote the admin has listed.
- **Scaled UI amount and interest-bearing.** They change how a balance is displayed, not the raw amount. Pool math, quotes and caps all use raw atoms; a wallet may show a different figure.
- **Mint close authority.** A mint can be closed only when its supply is zero, which can't happen while a pool holds it.

### Tokenized stocks

Tokenized stocks on Solana are Token-2022 mints that usually carry several extensions at once: a pause, a scaled UI amount for corporate actions, a permanent delegate held by the issuer, and in some cases confidential transfers. A stock mint that carries any rejected extension, such as `ConfidentialTransferMint`, can't be a reel pool's quote or base as the program is specified; one that passes must still be listed for its permanent delegate.

When a stock is paired, it brings its issuer's powers with it: a pause halts the pool, and the delegate can move vault balances. The [Market-hours fee](/hooks/market-hours-fee) is designed for such pools. A lane for stock and exotic quotes through another venue is planned at the periphery, not built.

### Tokens reel launches

A new reel token is a Token-2022 mint with metadata pointing at itself and reel-hook as its transfer hook, with no hook authority. Its mint authority is revoked after the supply is minted, it never had a freeze authority, and its metadata update authority is removed. So its supply is fixed, nobody can freeze a holder, and its name and symbol can't change.

Because it is hooked, it trades only on venues that pass hook accounts with each transfer. reel's pools do; many other venues don't accept a live hook. A creator who wants a token to stay on reel can launch it as a [Canonical Venue Token](/hooks/canonical-venue-token).

Page: /docs/concepts/quote-tokens

# Guides

## The reel guide

> One pool program, the Hook Blocks you build a pool from, what each one charges, and where to find each part in the app.

### The picture

On reel a pool is a line, and Hook Blocks are threaded onto it. A swap runs along the line; each block has its say in a fixed order (guards first, then fees, then what happens after the fill); and at the end every charge splits into a money map anyone can read. The blocks and their settings are frozen when the pool opens.

This deployment is configured with the reel program at `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.

### Where things are

| Page | What it's for |
|---|---|
| [Discover](/app) | Pools, hooks, tokens and revenue tokens, read from chain |
| [Hook Blocks](/hooks) | Every block: what it does, its settings and bounds, its status |
| [Builder](/builder) | Compose a board, check it, share it or save it as a hook |
| [Launch](/launch) | Open a new or existing token in up to 8 pools |
| [Kings](/kings) | King of the Pool rounds and winners |
| [Portfolio](/portfolio) | Your positions, ledgers and what you can claim |
| [Scan](/scan) | Read an address: a mint's authorities and extensions |

### Statuses

Every block in the catalog carries one status. Only “In the program” and “Launch option” are things a pool can use once the program is deployed.

| Status | Blocks | Meaning |
|---|---:|---|
| In the program | 21 | A per-pool block (or per-swap feature) in the reel program, frozen at PoolInit. |
| Launch option | 6 | Set in the reel launch flow (LaunchCreate to LaunchFinalize). |
| In reel-vaults | 4 | Beside the pool, in a reel-vaults module that runs on Solana mainnet. Set up next to a pool, off the swap path. |
| Partial | 8 | reel runs part of it; the reason says which part. |
| Periphery, coming | 7 | Beside the pool, in a reel-vaults module that is not in the deployed build yet. The reason says which. |
| Not on reel | 2 | Not offered on reel; the reason says why. |

### Every block, by category

#### Protection and access

Who may trade, when, and how much.

- [Anti-Snipe](/hooks/anti-snipe) · In the program. Caps and taxes early buys while the launch guard lasts. Sells never pay it.
- [Buy/Sell Block](/hooks/buy-sell-block) · In the program. Pauses buys and locks sells for a set time after launch. Charges nothing.
- [Wallet Cap](/hooks/wallet-cap) · In the program. While the guard lasts, no wallet buys more than a set share of the supply.
- [Sandwich Guard](/hooks/sandwich-guard) · In the program. A swap that moves price back toward where its window opened pays that move.
- [Exit Clock](/hooks/exit-clock) · In the program. Sells pay a fee that falls the longer the tokens were held.
- [Market Guard](/hooks/market-guard) · In the program. Swaps that stray from a live Pyth price pay the pool's LPs a surcharge.
- [Agent gate](/hooks/agent-gate) · In the program. Only registered agents can buy, sell or add liquidity. Removing is never gated.
- [Canonical Venue Token](/hooks/canonical-venue-token) · Partial. A new token that moves only between wallets and reel's own vaults.
- [Recovery reserve](/hooks/recovery-reserve) · In reel-vaults. A public fund that repays LPs or traders after a reviewed incident.

#### Fees

What a swap pays, and how it moves with the market.

- [Dynamic fees](/hooks/dynamic-fees) · In the program. The fee rises with how far a swap pushes the price. Pushing it back is free.
- [Storm Fee](/hooks/storm-fee) · In the program. The fee rises when price turns choppy and eases as it calms, within fixed bounds.
- [Swap Cut](/hooks/swap-cut) · In the program. A fixed cut of every buy and sell for the pool's liquidity owner.
- [Minimum fee](/hooks/min-fee) · In the program. A small fee to reel on a new token's pool that pays reel nothing else.
- [Market-hours fee](/hooks/market-hours-fee) · In the program. A fee that follows the US stock market's sessions.
- [Managed fee](/hooks/managed-fee) · In the program. A surcharge reel's keeper moves as price moves, inside a cap you fix at launch.
- [Usage fee](/hooks/usage-fee) · In the program. Every swap pays a market block's builder, its backers, reel and a reserve.
- [Hook Blocks Market](/hooks/hook-blocks-market) · Partial. Builders publish bonded add-on blocks; pools that install one pay its usage fee.

#### Creator income

Royalties and taxes for the creator.

- [Creator royalty](/hooks/creator-royalty) · In the program. A share of LP Rewards on every buy, paid to a recipient fixed at launch.
- [Tax + Conversion](/hooks/tax-conversion) · Partial. A buy tax and a sell tax in the quote, paid to a recipient fixed at launch.
- [Revenue Router](/hooks/revenue-router) · In reel-vaults. Shares the creator royalty among up to 8 payees at fixed shares.
- [Revenue Tokenizer](/hooks/revenue-tokenizer) · Periphery, coming. Turns a fee right into a fixed supply of tokens whose holders share its income.

#### Rewards

Burns, prizes, pots and rewards for traders and holders.

- [Auto Burn](/hooks/auto-burn) · In the program. Burns a set share of every buy's tokens in the same swap.
- [Arb recapture](/hooks/arb-recapture) · Partial. The pool keeps most of the price-gap profit instead of outside bots.
- [King of the Pool](/hooks/king-of-the-pool) · In the program. Each round's biggest single buy takes a prize from a pot recapture fills.
- [Holder Pot](/hooks/holder-pot) · In the program. Sandwich Guard's charges fill a pot paid to holders by tokens × time held.
- [Swap Reward Mint](/hooks/swap-reward-mint) · In the program. Pays traders a reward token for each swap, funded by a slice of the trade.
- [Referrals](/hooks/referrals) · In the program. Ref codes and links that pay referrers part of the protocol's cut.
- [Nth-buy Pot](/hooks/nth-buy-pot) · Not on reel. Held on hookr: King of the Pool takes its place.

#### Liquidity and yield

What LPs earn and how liquidity is held.

- [LP Rewards](/hooks/lp-rewards) · In the program. An extra fee on buys, kept by the LPs whose liquidity filled them.
- [Pay Later](/hooks/pay-later) · Periphery, coming. Buyers pay a premium now to reserve tokens at a fixed price for a term.
- [Entry Ratio Guarantee](/hooks/entry-ratio-guarantee) · Periphery, coming. LPs can exit with the token amounts they put in, covered by forfeited fees.
- [Floor bid](/hooks/floor-bid) · Partial. A treasury's standing bid below the price that buys the token as it falls.
- [Fee Bridge](/hooks/fee-bridge) · In reel-vaults. Pays a royalty or a tax, a capped drip at a time, to another pool's LPs.

#### Team tokens

The creator's own buys, locks and allocations.

- [Dev buy and lock](/hooks/dev-buy) · Launch option. One first buy per pool inside the launch, then the launch liquidity stays locked.
- [Liquidity lock](/hooks/liquidity-lock) · Launch option. Keeps the launch liquidity in its pools for a set time, or hands the launch to a lock.
- [Supply you keep](/hooks/supply-you-keep) · Launch option. Declares on chain the most of a new token's supply the creator may hold at launch.
- [Vesting Milestone](/hooks/vesting-milestone) · Periphery, coming. Locks a team allocation that vests after a cliff, then linearly.
- [Dev Drip](/hooks/dev-drip) · Periphery, coming. Releases the creator's own allocation through the pool, a slice per window.

#### Pools and trading

Many pools, routes between them, and orders.

- [Zap Relay source](/hooks/zap-relay-source) · Partial. Routes a cut of every buy to a zap vault that buys another pool.
- [Zap Relay target](/hooks/zap-relay-target) · Partial. A pool only its feeder zap vaults may buy; anyone may sell.
- [Pool Mesh](/hooks/pool-mesh) · Periphery, coming. One zap vault, fed by many pools, that buys up to four target pools.
- [Family Pinger](/hooks/family-pinger) · Periphery, coming. Runs every due zap and payout of a launch in one call, for a tip.
- [Multi-pool launch](/hooks/multi-pool-launch) · Launch option. Opens one token in up to 8 pools at once, each with its own quote and blocks.
- [Supply split](/hooks/supply-split) · Launch option. Seeds each pool of a new token with an exact share of the supply.
- [Opening price check](/hooks/opening-price-check) · Launch option. Fails the launch if a pool opens too far from pool 1's price.
- [Limit orders](/hooks/limit-orders) · In reel-vaults. Escrow a trade with a price limit; anyone fills it once the pool pays the limit.
- [Best route](/hooks/best-route) · Partial. Compares the pool with other venues before a trade and offers a clearly better route.
- [Outside Fill](/hooks/outside-fill) · Not on reel. Fills part of a swap from an outside venue when it gives more than the pool.

### Reading what a pool charges

A pool's page shows its base LP fee, its protocol share and each block with its settings, read from `PoolParams`. The money map beside it says, for a buy and for a sell, how much of each unit of quote goes to LPs, to the burn, to the pot, to the creator and to reel. Read [Fees and the recapture split](/docs/pools/fees) for how the shares are worked out.

Page: /docs/guides/reel-guide

## Swapping and quoting

> How to quote a swap exactly, set its limit, and build the instruction with the accounts each block needs.

### The swap instruction

`Swap` takes four arguments: `side` (0 buy: quote in, base out; 1 sell), `mode` (0 exact-in, 1 exact-out), `amount`, and `limit`, which is the **minimum output** for exact-in and the **maximum input** for exact-out. A swap that can't meet its limit fails with `SlippageExceeded` and moves nothing.

There is no router contract: a swap is one instruction against one pool. To split a trade across a launch's pools, put several `Swap` instructions in one transaction.

### Quote first

`quoteSwap` runs the program's pipeline in TypeScript against a decoded pool at a given time and slot, and returns the input, the output, every charge and the pool afterwards.

~~~ts
import { Connection, PublicKey } from "@solana/web3.js"
import { decodePool, ix, minOut, poolRef, quoteSwap } from "@/sdk/src"

const info = await connection.getAccountInfo(poolAddress)
const pool = decodePool(info!.data)
const slot = BigInt(await connection.getSlot())
const now = BigInt(Math.floor(Date.now() / 1000))

const q = quoteSwap(pool, 1_000_000_000n, { now, slot, buy: true }) // 1 SOL in
const swap = ix.swap({
  user, pool: poolRef(poolAddress, pool), userBase, userQuote,
  side: 0, mode: 0, amount: 1_000_000_000n, limit: minOut(q.output, 50), // 0.5%
})
~~~

Quote close to sending: the dynamic fee, the Storm level, the Snipe tax and the LP stream all move with time. `maxIn` does the same job for exact-out.

### Accounts a swap may need

Every optional account slot is filled with the reel program id when unused. With the SDK, pass the ones the pool's blocks need in `extra`; anything you leave out is filled for you.

| Slot | When |
|---|---|
| launch (writable) | during an Anti-Snipe or Wallet Cap guard |
| wallet counter | Wallet Cap, during the guard |
| seller holder | Exit Clock on a new token's sells |
| oracle | Market Guard, or recapture against Pyth |
| aux | recapture against a sibling pool |
| advisory accounts | agent gate (Agent, Score, recipient Agent), market-hours (Calendar), Swap Reward Mint (reward mint, trader's reward account) |
| referral link, referrer ledger, claims vault | the trader has a live referral link |
| opener ledger | recapture with a gap opener to credit |

When the base mint is a reel-launched token, the seven reel-hook accounts follow, in this order: reel-hook, extra metas, mint guard, reel program, source holder, destination holder, destination agent. `ix.swap` appends them for a hooked pool, and `hookExtras(mint, srcOwner, dstOwner)` returns them for your own builders.

### Rules that refuse a swap

| Error | Why |
|---|---|
| `BuysPaused` | before the pool's buy opening (12 s after a new token's launch, or a Buy/Sell Block pause) |
| `SellsLocked` | during a Buy/Sell Block sell lock |
| `ExactOutDuringGuard` | exact-out buys are refused during the Anti-Snipe guard |
| `BuyCapExceeded` | the launch's per-slot buy budget is spent; try the next slot |
| `WalletCapExceeded` | the buy would pass the Wallet Cap |
| `ZapTargetOnly` | only the pool's feeder vaults may buy it |
| `AgentRequired`, `ScoreTooLow`, `CpiRefused` | the agent gate |
| `OracleUnavailable` | Market Guard's feed is missing or stale: every swap is refused until it updates |
| `InsufficientLiquidity` | a sell would take more quote than the pool really holds |

### Market Guard's feed check

Market Guard reads the Pyth `PriceUpdateV2` account pinned at `PoolInit` and checks its `feed_id` on every read. A missing or stale feed refuses every swap, sells too. So who can write that account matters: a creator-written `PriceUpdateV2` lets its writer halt the pool by not posting, while Pyth's sponsored push feed can be refreshed by anyone with a verified update.

A Market Guard pool's **Details** tab reads the pinned account when it opens (and again when you come back to the browser tab), and shows its write authority (bytes 8..40):

- **"Market Guard reads a Pyth sponsored feed"** (info) when all three hold: the account is owned by the Pyth receiver (`rec5EKMG…`), its write authority is the account itself, and its address is the Pyth Push Oracle's (`pythWSns…`) shard-0 PDA for the pool's `feed_id`. Pyth's SOL/USD sponsored feed, `7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE`, is that PDA for its feed id.
- **"Check Market Guard's feed writer"** (warning) otherwise, naming the writer. Only shard 0 is recognised, so a push-oracle feed on another shard gets the warning too.
- **"Market Guard feed not readable"** (warning) when the account is missing or can't be read.

The check doesn't read the price's age: `oracle_max_age` is enforced by the program at swap time. Pin the sponsored feed for the pair when you open a Market Guard pool.

### Exact-out, SOL and rounds

- **Exact-out** is solved by inverting the charges at their ceilings, then running the swap forward. You receive at least what you asked for, sometimes a few atoms more, and pay at most `limit`. A swap that closes a recapture gap usually fails as exact-out: use exact-in.
- **SOL** trades as wrapped SOL. `wrapSolIxs` creates and funds the account before a buy, `unwrapSolIx` closes it after a sell, in the same transaction.
- **King of the Pool rounds** are closed by `KotpSettle`, which anyone may send. Put it before the first swap after a round ends (`ix.kotpSettle`) so the round settles as trading goes on.

Page: /docs/guides/swapping-and-quoting

## Providing liquidity

> Open a position, add and remove liquidity, collect fees, split, hand over and lock a position, and the rules that can refuse each step.

### Positions

Liquidity on reel is held in a `Position` account, `["position", pool, owner, nonce]`, one per owner and nonce, so a wallet can hold several in one pool. `PositionOpen` creates an empty one. Every reel pool is full range: a position earns on every swap, whatever the price.

A position records its shares, its fee-growth checkpoints, what it is owed, any lock, and what it has collected over its life.

### Add liquidity

`LiquidityAdd(max_base, max_quote, min_shares)` adds in proportion to the reserves: the shares are `min(max_base × S / rb, max_quote × S / rq)`, and the deposit is rounded up per side, so you never pay less than your shares are worth. `min_shares` protects you if the price moves before the transaction lands.

An add is refused:

- during an Anti-Snipe guard, unless it is the launch position (`GuardAddRefused`);
- during a Buy/Sell Block sell lock, for the same reason;
- on a Zap Relay target pool, unless it comes from a feeder (`ZapTargetOnly`);
- on an agent-gated pool, without an `Agent` (and a score, if the pool asks for one);
- above the pool's deposit cap (`DepositCapExceeded`), if the pool has a cap set.

Fees owed are settled before the shares change, and the LP stream's release window restarts, so an add right before a payout only earns what streams after it.

### Collect fees

`FeesCollect` pays what the position is owed, in both tokens, without touching its shares. A locked position can always collect. On a launch under a launch lock, the beneficiary collects the launch positions' fees.

### Remove liquidity

`LiquidityRemove(shares, min_base, min_quote)` pays `floor(shares × reserve / S)` of each side, after settling fees. It is refused while:

- the position is locked (`PositionLocked`);
- it is a launch position and the launch's principal lock hasn't ended (`PrincipalLocked`): the guard, the dev-buy lock and the liquidity lock;
- it is a launch position under a launch lock (`LaunchLocked`).

Removing is never gated by the agent gate or a deposit cap. The virtual quote a launch opened with stays in the pool: it can't be withdrawn by anyone.

### Split, hand over, lock, close

- `PositionSplit` moves some shares into a new position of yours; the new one inherits the lock.
- `PositionTransfer` names a new owner and `PositionAccept` completes it. Sending the zero key cancels a pending handover.
- `PositionLock` locks until a time, or for good (`PERMANENT`). It only extends.
- `PositionClose` returns the account's rent once its shares and fees owed are zero.

Launch positions belong to the launch, not a wallet: they can't be split or handed over on their own. The launch changes hands as a whole (`LaunchTransfer`).

### What an LP earns, and risks

An LP earns the base fee on every swap, plus whatever the pool's blocks send to LPs: Snipe tax, dynamic fees, LP Rewards, Storm Fee, advisory surcharges, and its share of recapture and released King of the Pool pots.

> Like any constant-product pool, a position suffers divergence loss when the price moves: you end up with more of the token that fell. Fees can offset it or not. reel's numbers are on the pool page; reel shows no APR figure until its method is published on [Where the numbers come from](/docs/reference/where-the-numbers-come-from).

Page: /docs/guides/providing-liquidity

## Integrating as a launcher

> Open pools from your own launchpad: the launch calls, a root of your own, the integrator share, and who owns what afterwards.

### Three ways in

| Way | What you get | What it takes |
|---|---|---|
| Launch on root 0 from your app | reel's shared root, every block | the SDK builders; nothing on chain to set up |
| Your own root | your allowed blocks, public or owner-only, your integrator on every pool | `RootCreate` (root fee ≤ 1 SOL) |
| Your own root + a saved hook | a house style every pool must fit | `HookSave`, then `RootCreate` naming it |

All three run on the same reel program. Read [Owned roots](/docs/pools/owned-roots) and [Saved hooks](/docs/pools/saved-hooks).

### The integrator share

An integrator is a wallet the admin lists with `IntegratorSet`, with a rate up to the config's maximum (at most 50% of the protocol's cut). A root's owner points the root at a listed, active integrator; every pool opened under the root afterwards copies the rate and keeps it for life, even if the listing changes. The INTEGRATOR bucket on each pool is paid to it by `BucketCollect`, which anyone can send.

The share comes out of reel's cut. Your users' traders pay the same as on any other pool. The listing intake isn't open yet: see [Publishing and partner review](/docs/integrations/partner-review).

### The launch calls

Your app builds the same transactions the reel app does: `LaunchCreate`, then `PoolInit` and `PoolSeed` per pool, an optional `LaunchDevBuy`, then `LaunchFinalize`. The creator signs each, and for a new token the new mint's keypair also signs `LaunchCreate`. Pass your root's id to `launchCreate` and `poolInit`. The [SDK page](/docs/pools/sdk) has the builders, and [Multi-pool launch](/docs/pools/multi-pool-launch) the rules each step checks.

Set a deadline on `LaunchCreate`: launch steps after it fail with `Deadline`. Offer `LaunchAbort` for a launch that stalls before finalize.

### Who owns what

- The **creator** owns the launch and its launch positions, unless they hand it over (`LaunchTransfer`, then `LaunchAccept` by the new owner) or put it under a [launch lock](/docs/pools/launch-lock).
- The **root owner** can pause new pools on the root and change its integrator; never an open pool's terms or funds.
- **reel** takes its share of block fees through the protocol bucket, minus your integrator share.

If your launchpad wants to hold launches for its users, have the creator transfer the launch to your wallet after finalize, or lock it with your wallet as beneficiary. Both are on chain and readable from the `Launch` account.

### Recapture on your pools

A root records whether its pools may run arbitrage recapture. With it allowed, a multi-pool launch gives each pool a sibling reference; a single pool needs a Pyth feed for its pair. Recapture's protocol part also pays your integrator share; referrers get none of it. Read [Fees and the recapture split](/docs/pools/fees).

Page: /docs/guides/integrating-as-a-launcher

## Build your own hook

> Compose a hook from Hook Blocks, keep it on chain as a saved hook or behind a root of your own, open pools on it, and integrate it as a launchpad or a liquidity app.

### The path

On reel a “hook” is not a program you deploy. It is a set of Hook Blocks and settings that a pool freezes into its `PoolParams` when it opens. You can keep that set on chain and reuse it in three ways, from lightest to heaviest:

1. **Compose and launch.** Build the set in the [builder](/builder) and open pools with it directly. Nothing else is stored.
2. **Save it.** Write the set as a saved hook, so your launches, or anyone else’s, can follow it by address and version.
3. **Own a root.** Open a root of your own: a namespace pools open under, with its own allowed blocks, an optional saved hook and an integrator payee.

Every pool still runs in the one reel program, so your pools keep reel’s launch flow, positions, claims and fee split.

### Compose in the builder

The [builder](/builder) places blocks on a board, adds what a block needs, swaps out what it can’t sit beside, and runs the same checks `PoolInit` runs: the fee-room caps, the one advisory slot, and each block’s bounds. A board travels as a link (`/builder?h=…`), and the launch floor opens the same board with `/launch?draft=…`. Every [ReelBook recipe](/docs/reelbook) links its pools both ways.

Start from a ready-made hook in the builder, or from the catalog of [Hook Blocks](/hooks). Each block page states its settings, bounds, defaults and who is paid.

### Save it as a saved hook

`HookSave` writes an immutable account at `["hook", owner, salt, version]`. It holds the `PoolParams` defaults, the `allowed_blocks` mask and two fee ceilings: the most LP-fee room a pool may use and the most it may take for anyone but LPs. Version 1 comes first; each later version must be the previous version + 1 from the same owner and salt, and the old versions stay readable.

A pool that names a saved hook at `PoolInit` must conform: its blocks are a subset of the allowed mask, its LP-fee room is within the ceiling and its takes are within the other. The saved hook’s `following` count then goes up by one, so anyone can see how many pools follow it.

~~~ts
import { blocksMask, boardOf, poolParams } from "@/lib/blocks"
import { ix, name32 } from "@/sdk/src"

// The blocks your house style allows, with their default settings.
const { board } = boardOf(["anti-snipe", "dynamic-fees", "auto-burn", "lp-rewards"], "new")

const saveIx = ix.hookSave({
  owner: wallet.publicKey,
  salt, // 32 bytes you keep: later versions reuse it
  name: name32("house-launch"),
  version: 1, // or the previous version + 1, same owner and salt
  params: poolParams(board), // defaults a pool starts from
  allowedBlocks: BigInt(blocksMask(board)),
  maxLpFeePips: 60_000, // the most LP-fee room a pool may use
  maxTakePips: 30_000, // the most a pool may take for anyone but LPs
  flags: 0,
})
~~~

The SDK lives in the reel repository at `sdk/src`; the npm package is coming. See [Saved hooks](/docs/pools/saved-hooks).

### Open a root of your own

`RootCreate` opens a root at `["root", id]` and pays `Config.root_fee` (at most 1 SOL) to the treasury. It fixes `allowed_blocks`; when it names a saved hook, the mask must be a subset of the hook’s. Root 0 is reel’s shared root: public, every block allowed, recapture allowed.

- A **public** root must allow Anti-Snipe, Dynamic fees, LP Rewards and Creator royalty (bits 0, 1, 3 and 4). An owner-only root may allow less.
- The owner can pause new pools (open pools keep trading), switch between public and owner-only, and set an integrator payee, which must be a listed `Integrator`.
- Pools opened under the root copy its integrator, so the integrator’s rate of reel’s cut applies to every swap on them. The trader pays the same either way.
- The root changes hands in two steps: `RootTransfer`, then `RootAccept` by the new owner.

See [Owned roots](/docs/pools/owned-roots).

### Open pools on it

A launch is several transactions linked by a `Launch` account:

1. `LaunchCreate`: for a new token it creates the Token-2022 mint with reel-hook as its transfer hook, mints the whole supply to an escrow and revokes the mint authority. The same transaction should set up reel-hook’s extra account metas for the mint. An existing-token launch only records the mint.
2. `PoolInit` for each pool (1 to 8, each on a different quote): it freezes the pool’s params, checks every rule and, when named, the saved hook and root.
3. `PoolSeed` for each pool: it creates the vaults, moves the seeds and mints the launch position.
4. `LaunchDevBuy`, optional, once per pool for a new token.
5. `LaunchFinalize` once every pool is seeded: it applies the supply split, the opening price check and the retention cap, then opens trading.

`LaunchReturn`, which anyone may send, returns the escrow’s leftover to the creator. A launch that stalls before it goes live can be aborted with `LaunchAbort`. See [Multi-pool launch](/docs/pools/multi-pool-launch).

### Example: a launchpad on its own root

A launchpad wants every token it launches to carry the same rules and to earn a share of reel’s cut.

1. Compose the house style in the builder and save it with `HookSave`.
2. Open an owner-only root that names the saved hook, with `allowed_blocks` equal to the hook’s mask.
3. Ask for an integrator listing; once listed, set it as the root’s integrator payee with `RootUpdate`.
4. In your own interface, build `LaunchCreate`, `PoolInit` (naming the root and the saved hook), `PoolSeed` and `LaunchFinalize` for each creator, who signs them.
5. After the launch, the creator can lock it with `LaunchLock`, naming a beneficiary who collects every fee the launch positions earn.

See [Integrating as a launcher](/docs/guides/integrating-as-a-launcher).

### Example: an app that manages liquidity

A liquidity app holds positions on reel pools for its users.

- `PositionOpen` creates a position at `["position", pool, owner, nonce]`; `LiquidityAdd` deposits in proportion to the reserves, up to the pool’s deposit cap.
- `FeesCollect` pays a position’s fees without touching its principal, and a locked position may still collect.
- `PositionLock` extends a lock, never shortens it; the largest value never releases.
- `PositionSplit` and the two-step `PositionTransfer` move shares between owners. The launch position can’t be split or transferred.

See [Providing liquidity](/docs/guides/providing-liquidity).

### Before the first launch

> The program’s upgrade authority, held by the reel treasury, remains the largest power over it until it is revoked.

- Simulate every transaction before you ask a user to sign it, and show what the wallet will be asked to approve.
- Check each quote against reel’s mint policy, and know whether it is listed; see [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).
- Read the [fee split](/docs/pools/fees): what reel takes, what an integrator earns and what LPs keep.

### Listing

A root, a saved hook or a launchpad integration can ask to be listed on reel’s pages. See [Partner review](/docs/integrations/partner-review) for what a review asks for. A listing is not an audit or an endorsement.

Page: /docs/reelbook/build-your-own-hook

# Reference

## Programs and addresses

> reel's program ids and derived addresses as this deployment is configured, the treasury, and the Solana programs reel calls.

### reel's programs

Read from this deployment's configuration. “Not deployed yet” means no id is configured: nothing is live, and any address claiming to be reel's is not.

| Program | Id |
|---|---|
| reel | `Ajvhesd3q6yJFgnBL6vppAJDF7gP6nmksA8WkrTM4vcJ` |
| reel-hook | `oF7b3JDvBhT34SjHPsC1xiZrkgNKwFzPncTxk2TYGdx` |
| reel-vaults | `98oS15W2xt8fa4NCZvHMEv6ZdzVEVeu45prSt85Mb7fK` |

reel-vaults runs a subset of its modules today. Live on Solana mainnet: Holder Pot payouts; the Fee Bridge; the Revenue Router; the recovery reserve; limit orders and the Floor bid, with fill bounties. Deployed, and opens Nov 12 once its mainnet check passes: funded referral and points campaigns. Coming with an upgrade at the same address: Vesting Milestone and Dev Drip; zap vaults, Pool Mesh and Family Pinger; the LP Time-Lock Boost; the Revenue Tokenizer; Pay Later; the Entry Ratio Guarantee.

### Derived addresses

Each is a PDA of the reel program, so it exists only once the program does.

| Address | Seeds | Value |
|---|---|---|
| VAULT_AUTH | `["vault_auth"]` | `63XMzPvCCSWq9ygsgshA6bJg5buZNJ3FX6e6YDVrSZ5S` |
| Config | `["config"]` | `CKBZexTUELqXXL3A846DMckgE8VxqQYN3dHZ3TXzS8Q8` |
| Root 0 (reel's shared root) | `["root", 0u64]` | `ABECYTDReNDj8ztruZkXaxurpBUDGJnGS7Gc3AixJkoY` |

Every other account (pools, launches, positions, ledgers) is derived from these seeds and the keys involved: see [Architecture](/docs/concepts/architecture#accounts).

### Treasury and $REEL

| What | Address |
|---|---|
| Treasury wallet (platform revenue) | `BA9VJD2ux2XtQ1diiurBR9pmgqtb33ivs6H8fmSgNPXr` |
| $REEL mint | Not launched: $REEL launches later |

The program pays protocol income to `Config.treasury`'s token accounts; read the config account for the value the program actually uses. reel has no airdrop, and no $REEL mint exists until this page shows one.

### Solana programs reel calls

| Program | Id |
|---|---|
| SPL Token | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` |
| Token-2022 | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` |
| Associated Token Account | `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL` |
| System | `11111111111111111111111111111111` |
| Wrapped SOL mint | `So11111111111111111111111111111111111111112` |
| Pyth receiver (price updates) | `rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ` |
| BPF upgradeable loader | `BPFLoaderUpgradeab1e11111111111111111111111` |

reel checks every CPI target against these constants. Naming them implies no partnership.

### How to verify

1. Open the reel program id on an explorer and check it is an executable, upgradeable program, and who holds its upgrade authority.
2. Check that a pool's vaults are owned by `VAULT_AUTH` and that the pool account is owned by the reel program.
3. Read the pool's `PoolParams` before you trade; it is frozen and can't differ from what you read.
4. Simulate a transaction before signing it, and compare the wallet's request with what you meant to do.

The [security page](/security) has the full checklist.

Page: /docs/reference/programs-and-addresses

## Where the numbers come from

> Which figures on reel are read from chain, from which accounts and logs, and what a dash, a floor or a missing figure means.

### Three sources

1. **Program accounts**, read through reel's server-side RPC proxy. Lists come from `getProgramAccounts` filtered by each account's 8-byte tag and size; single accounts are read by address.
2. **Transaction logs.** The program emits events as `Program data:` lines; reel's server fetches them, decodes them and caches the result. History comes only from here.
3. **Price accounts on chain**, for blocks that use them: Pyth price updates for Market Guard and recapture. reel uses no off-chain market data provider for its own figures.

There is no database. If the chain doesn't say it, reel doesn't show it.

### Figure by figure

| Figure | Source |
|---|---|
| Reserves, price | the pool's tracked reserves and virtual quote |
| Volume, trades | pool counters `vol_quote`, `vol_base`, `trades`, per side |
| Fees by block, LP fees, protocol, burned | pool counters `fees_by_block`, `lp_fees_total`, `protocol_total`, `burned_total` |
| Recaptures, rounds, crowns, prizes | pool counters |
| Counts of pools, launches, roots, hooks, agents | `Config` counters |
| What a wallet is owed | its `ClaimLedger`: `owed`, `claimed`, `lifetime` by category |
| A position's fees | the position's checkpoints and `collected_quote`, `collected_base` |
| Landing totals | every pool (tag `reelPOOL`), summed per quote mint |
| Chain link | `/api/health`, every 10 s on the [status page](/status) |

### What a dash means

A figure that couldn't be read shows “—”, with the reason where there is room. It is never shown as 0, and any control that depends on it stays disabled. A total that couldn't read every account it sums is either shown as a lower bound (`≥`) or not at all; it is never presented as complete.

Amounts stay in each pool's own quote token. Totals across pools are kept per quote mint and never added across quotes. reel shows no APR figure until its method is published on this page.

### Before a wallet request

Cached figures guide you around the app; they never authorise anything. Before reel asks a wallet to sign, it builds the transaction from fresh account reads and simulates it. A pending notice is not a confirmation: a transaction counts once it is confirmed on chain. Read the [methodology](/methodology) for the full policy.

Page: /docs/reference/where-the-numbers-come-from

## Instructions, errors and events

> Every reel instruction tag, every custom error code with its hex form, and the events an indexer decodes from the logs.

### Instructions

Instruction data starts with a one-byte tag, followed by packed little-endian fields with no padding. Keys are 32 bytes; strings are a length byte and UTF-8. Optional account slots take the reel program id when unused.

| Tags | Instructions, in tag order |
|---|---|
| 0–7 | InitConfig, ConfigSet, AdminTransfer, AdminAccept, QuoteList, IntegratorSet, PoolSetCap, CalendarSet (admin) |
| 10–14 | RootCreate, RootUpdate, RootTransfer, RootAccept, HookSave |
| 20–30 | LaunchCreate, PoolInit, PoolSeed, LaunchDevBuy, LaunchFinalize, LaunchReturn, LaunchAbort, LaunchTransfer, LaunchAccept, LaunchLock, LaunchUnlock |
| 40–48 | PositionOpen, LiquidityAdd, LiquidityRemove, FeesCollect, PositionSplit, PositionTransfer, PositionAccept, PositionLock, PositionClose |
| 50 | Swap |
| 60–65 | LedgerOpen, ClaimsVaultOpen, Claim, BucketCollect, WalletCounterOpen, KotpSettle |
| 70–75 | AgentRegister, ReviewerCreate, ScoreSet, ReferrerRegister, ReferralLink, ManagedSet |
| 80–83 | MarketPublish, MarketAdmit, BondDeposit, BondWithdraw |

reel-hook has three entry points: `Execute` (the Token-2022 transfer hook interface), `InitializeExtraAccountMetaList` (anyone, once per reel mint) and `HolderInit` (opens a wallet's holding record for Exit Clock).

### reel errors

| Code | Hex | Name |
|---:|---|---|
| 6000 | `0x1770` | `InvalidInstruction` |
| 6001 | `0x1771` | `InvalidAccount` |
| 6002 | `0x1772` | `WrongOwner` |
| 6003 | `0x1773` | `WrongTag` |
| 6004 | `0x1774` | `MissingSigner` |
| 6005 | `0x1775` | `NotWritable` |
| 6006 | `0x1776` | `WrongPda` |
| 6007 | `0x1777` | `WrongTokenProgram` |
| 6008 | `0x1778` | `WrongMint` |
| 6009 | `0x1779` | `WrongVault` |
| 6010 | `0x177a` | `MathOverflow` |
| 6011 | `0x177b` | `ZeroAmount` |
| 6012 | `0x177c` | `SlippageExceeded` |
| 6013 | `0x177d` | `InsufficientLiquidity` |
| 6014 | `0x177e` | `InvariantViolated` |
| 6015 | `0x177f` | `Unauthorized` |
| 6016 | `0x1780` | `PoolNotLive` |
| 6017 | `0x1781` | `BuysPaused` |
| 6018 | `0x1782` | `SellsLocked` |
| 6019 | `0x1783` | `ExactOutDuringGuard` |
| 6020 | `0x1784` | `BuyCapExceeded` |
| 6021 | `0x1785` | `WalletCapExceeded` |
| 6022 | `0x1786` | `GuardAddRefused` |
| 6023 | `0x1787` | `PrincipalLocked` |
| 6024 | `0x1788` | `PositionLocked` |
| 6025 | `0x1789` | `LaunchLocked` |
| 6026 | `0x178a` | `ZapTargetOnly` |
| 6027 | `0x178b` | `AgentRequired` |
| 6028 | `0x178c` | `ScoreTooLow` |
| 6029 | `0x178d` | `CpiRefused` |
| 6030 | `0x178e` | `OracleUnavailable` |
| 6031 | `0x178f` | `RoundNotOver` |
| 6032 | `0x1790` | `InvalidParams` |
| 6033 | `0x1791` | `BlockConflict` |
| 6034 | `0x1792` | `FeeRoomExceeded` |
| 6035 | `0x1793` | `MintRejected` |
| 6036 | `0x1794` | `QuoteNotAllowed` |
| 6037 | `0x1795` | `DepositCapExceeded` |
| 6038 | `0x1796` | `Paused` |
| 6039 | `0x1797` | `RootClosed` |
| 6040 | `0x1798` | `HookMismatch` |
| 6041 | `0x1799` | `LaunchState` |
| 6042 | `0x179a` | `WeightMismatch` |
| 6043 | `0x179b` | `RetainedAboveCap` |
| 6044 | `0x179c` | `OpeningOutsideTolerance` |
| 6045 | `0x179d` | `DevBuyRefused` |
| 6046 | `0x179e` | `AlreadyExists` |
| 6047 | `0x179f` | `NotEmpty` |
| 6048 | `0x17a0` | `InvalidCode` |
| 6049 | `0x17a1` | `SelfReferral` |
| 6050 | `0x17a2` | `ManagedStep` |
| 6051 | `0x17a3` | `Deadline` |
| 6052 | `0x17a4` | `NothingOwed` |
| 6053 | `0x17a5` | `MarketBlockInactive` |
| 6054 | `0x17a6` | `BondLocked` |
| 6055 | `0x17a7` | `InvalidCalendar` |

### reel-hook errors

| Code | Hex | Name |
|---:|---|---|
| 7000 | `0x1b58` | `NotTransferring` |
| 7001 | `0x1b59` | `WrongGuard` |
| 7002 | `0x1b5a` | `CanonicalOnly` |
| 7003 | `0x1b5b` | `SellLocked` |
| 7004 | `0x1b5c` | `WalletCap` |
| 7005 | `0x1b5d` | `AgentOnly` |
| 7006 | `0x1b5e` | `InvalidAccount` |
| 7007 | `0x1b5f` | `WrongPot` |
| 7008 | `0x1b60` | `MutableOwner` |

A failed transaction reports `custom program error: 0x…`; `parseCustomError` in the SDK turns it into the name.

### Events

Events are written with `sol_log_data` and appear in the logs as `Program data: <base64>`. The payload is `[event id u8, fields…]`, packed little-endian, with keys as 32 bytes.

| Id | Event | Fields |
|---:|---|---|
| 1 | PoolOpened | pool, launch, base_mint, quote_mint, index, blocks |
| 2 | Swap | pool, user, side, mode, amount_in, amount_out, lp_fee, protocol, other, burn, recapture, reserve_base, eff_quote |
| 3 | Liquidity | pool, position, kind (0 add, 1 remove), shares, base, quote |
| 4 | FeesCollected | pool, position, base, quote |
| 5 | PositionOwner | position, from, to, kind (0 start, 1 accept, 2 cancel, 3 split) |
| 6 | PositionLocked | position, until |
| 7 | LaunchCreated | launch, mint, creator, supply, flags |
| 8 | LaunchFinalized | launch, open_ts, principal_lock_until, retained |
| 9 | DevBuy | launch, pool, quote_in, base_out, price_before, price_after |
| 10 | BucketPaid | pool, kind, to, amount |
| 11 | Credited | wallet, mint, category, amount |
| 12 | Claimed | wallet, mint, amount |
| 13 | Crowned | pool, wallet, spend |
| 14 | RoundSettled | pool, round_start, prize × 3, released |
| 15 | Recaptured | pool, user, charge, protocol, trader, pot, lp |
| 16 | Registry | kind (0 root, 1 hook, 2 agent, 3 referrer, 4 link, 5 score, 6 integrator, 7 quote, 8 market), a, b |
| 17 | LaunchOwner | launch, from, to, kind |
| 18 | LaunchLocked | launch, beneficiary, until |
| 19 | ManagedSet | pool, pips, until |
| 20 | ConfigChanged | field, value |

### Invariants the tests hold

1. After every instruction, each vault covers what the pool owes from it.
2. The positions' shares plus the 1,000 locked shares equal the pool's total shares.
3. A claims vault holds at least what every ledger of its mint is owed.
4. Fee growth only increases; a collect never pays more than the LPs are owed.
5. Frozen parameters never change after `PoolInit`; locks only extend; a permanent lock never releases.
6. A vault pays only a trader, a position owner, a bucket's fixed recipient, the claims vault, or the burn.
7. A new token's mint authority is gone after `LaunchCreate`, and it never had a freeze authority.

Page: /docs/reference/errors-and-events

# Integrations

## SDK: read, quote and build

> The reel TypeScript client: decode accounts, quote a swap exactly as the program would, and build instructions your wallet signs. In the repo today; the npm package is coming.

### Where it lives

The SDK is the folder `sdk/src` in reel's repository, imported in the app as `@/sdk/src`. It targets `@solana/web3.js` 1.x and has no `@solana/spl-token` dependency: its own token helpers create ATAs, wrap and unwrap SOL, and decode token accounts.

> **The npm package is coming.** Nothing is published to npm yet, and any package claiming to be reel's SDK is not ours.

Program ids come from `NEXT_PUBLIC_REEL_PROGRAM_ID` and `NEXT_PUBLIC_REEL_HOOK_PROGRAM_ID`. This deployment's values: reel `Ajvhesd3q6yJFgnBL6vppAJDF7gP6nmksA8WkrTM4vcJ`, reel-hook `oF7b3JDvBhT34SjHPsC1xiZrkgNKwFzPncTxk2TYGdx`. Until the programs are deployed there is nothing on mainnet to call; use LiteSVM, `solana-test-validator` or simulation.

### What's in it

| Module | Exports | Use |
| --- | --- | --- |
| ids | `REEL_PROGRAM_ID`, `REEL_HOOK_PROGRAM_ID`, `VAULT_AUTH`, token program ids, `NATIVE_MINT` | Constants and the vault authority PDA |
| pda | `poolPda`, `rootPda`, `launchPda`, `positionPda`, `ledgerPda`, `vaultPda` and the rest | Every seed from PROGRAM.md §2 |
| codec | `decodePool`, `decodePosition`, `decodeLaunch`, `decodeLedger`, `accountFilters`, `accountKind`, `encodeParams` | Account layouts, generated from the Rust structs |
| quote | `quoteSwap`, `minOut`, `maxIn` | The swap pipeline, mirrored exactly |
| ix | `ix.swap`, `ix.liquidityAdd`, `ix.feesCollect`, `ix.launchCreate` and every other instruction | Instruction builders, one per tag |
| token | `createAtaIdempotentIx`, `wrapSolIxs`, `unwrapSolIx`, `decodeTokenAccount` | Token accounts without spl-token |
| errors | `parseCustomError`, `errorName`, `REEL_ERRORS`, `HOOK_ERRORS` | Program error codes by name |
| params, validate | `defaultParams`, `BIT`, `BUCKET`, `validateParams` | Build a `PoolParams` and check it against the `PoolInit` rules before you send |

Quotes are checked against test vectors the program's own tests produce (`sdk/test-vectors/swaps.json`), so a quote and a swap agree to the atom.

### Read every pool

Every reel account starts with an 8-byte tag, so one `getProgramAccounts` call with the tag and size finds them all. `accountFilters` builds that filter.

~~~ts
import { Connection } from "@solana/web3.js"
import { REEL_PROGRAM_ID, accountFilters, decodePool } from "@/sdk/src"

const connection = new Connection(rpcUrl, "confirmed")
const accounts = await connection.getProgramAccounts(REEL_PROGRAM_ID, {
  filters: accountFilters("Pool"),
})
const pools = accounts.map((a) => ({ address: a.pubkey, pool: decodePool(a.account.data) }))
~~~

A pool's address is also derivable: `poolPda(root, baseMint, quoteMint, index)`, where reel's shared root is `rootPda(0)`.

### Quote a swap

`quoteSwap` clones the pool, rolls its time-based state forward to `now` and `slot` (the LP stream, the dynamic-fee reference, the Storm sample, the managed fee), then prices the swap.

~~~ts
import { decodePool, minOut, quoteSwap } from "@/sdk/src"

const info = await connection.getAccountInfo(poolAddress)
if (!info) throw new Error("No pool at that address")
const pool = decodePool(info.data)
const slot = BigInt(await connection.getSlot("confirmed"))
const time = await connection.getBlockTime(Number(slot))
if (time === null) throw new Error("No block time for that slot")

// Buy with 1 SOL (9 decimals), exact-in.
const q = quoteSwap(pool, 1_000_000_000n, { now: BigInt(time), slot, buy: true })
const limit = minOut(q.output, 50) // 0.5% slippage
~~~

`q.out` breaks the swap into every charge: LP fees, the protocol cut, burn, recapture and buckets. Pass the extra inputs a pool's blocks need: `oracle` (Q64.64) for Market Guard, `recapRef` for recapture, `hours` for the market-hours fee, `exitAge` for Exit Clock. For exact-out, pass `exactOut: true`; `q.input` is what you pay, and `maxIn(q.input, bps)` is the limit.

### Build the swap

~~~ts
import { createAtaIdempotentIx, ix, poolRef, wrapSolIxs } from "@/sdk/src"

const ref = poolRef(poolAddress, pool)
const wrap = wrapSolIxs(wallet, wallet, 1_000_000_000n) // wSOL in the same transaction
const base = createAtaIdempotentIx(wallet, wallet, pool.baseMint, pool.baseProgram)
const swapIx = ix.swap({
  user: wallet,
  pool: ref,
  userBase: base.ata,
  userQuote: wrap.ata,
  side: 0, // 0 buy (quote → base), 1 sell
  mode: 0, // 0 exact-in, 1 exact-out
  amount: 1_000_000_000n,
  limit,
})
const instructions = [...wrap.ixs, base.ix, swapIx]
~~~

When the base mint carries reel's transfer hook, `ix.swap` appends the seven hook accounts itself (`hookExtras`). Optional slots go in `extra`: the launch account (writable during a guard), the Wallet Cap counter, the seller's holder account, the oracle, a sibling pool, the advisory accounts and `ix.referralAccounts(trader, referrer, quoteMint)`. Unused slots are filled with the reel program id.

### Simulate and read errors

Simulate every transaction before you ask a wallet to sign it. A refused swap fails with a custom error code; `parseCustomError` turns the logs into its name.

~~~ts
import { parseCustomError } from "@/sdk/src"

const sim = await connection.simulateTransaction(tx)
if (sim.value.err) {
  const name = parseCustomError((sim.value.logs ?? []).join("\n")) // "SlippageExceeded", "BuysPaused"…
}
~~~

Codes 6000 and up are reel's, 7000 and up are reel-hook's. Read [Errors and events](/docs/reference/errors-and-events).

Page: /docs/integrations/sdk

## Routing reel pools: notes for aggregators

> What a router such as Jupiter needs to quote and route a reel pool: the curve on tracked reserves, the accounts a swap takes, when a pool refuses, and how recapture and hooked tokens change the picture.

### Status

> No aggregator routes reel pools. The reel program is live on Solana mainnet, but no integration with Jupiter or any other router exists or is implied. These notes are for whoever builds an adapter, so that it quotes what the program actually does.

The safest adapter calls the SDK's `quoteSwap`, which mirrors the program to the atom. Read [SDK](/docs/integrations/sdk).

### The curve

A reel pool is a full-range constant-product market: `rb · eq = k`, where `eq = reserve_quote + virtual_quote`. Three things differ from a plain CPMM:

- **Tracked reserves.** The curve uses `reserve_base` and `reserve_quote` from the `Pool` account, never the vault balances. Vaults also hold unclaimed LP fees, buckets and the LP stream, and a donation to a vault changes nothing. Quote from the account, not from token balances.
- **Virtual quote.** A launch can open with tokens only, at a chosen price. `virtual_quote` deepens the quote side for pricing but can't be withdrawn, so a sell must satisfy `gross_quote_out ≤ reserve_quote` or it fails with `InsufficientLiquidity`.
- **Charges on top.** The base LP fee and each Hook Block charge are computed on the gross quote amount and rounded up; curve outputs round down. A buy's output can also lose its Auto Burn share before it reaches the trader.

### State that moves with the clock

Before pricing, the program advances the pool to the current time and slot: it releases the LP stream, steps the dynamic-fee reference, rolls the Storm sample and lapses the managed fee. The Anti-Snipe tax decays with time, and the per-slot buy cap is counted per slot. A quote is only good for the slot it was computed at, so quote at the slot you expect to land in and keep a slippage limit.

### Accounts a swap takes

`Swap` (tag 50) takes the user, the pool, both vaults, the user's two token accounts, both mints, both token programs, `VAULT_AUTH`, then optional slots. An unused optional slot is filled with the **reel program id**.

| Slot | Needed when |
| --- | --- |
| `launch` | Writable during the launch guard (the per-slot buy budget is kept there) |
| `wallet_counter` | Wallet Cap is on and the guard is running |
| `seller_holder` | Exit Clock on a hooked token: the seller's acquisition time |
| `oracle` | Market Guard, or recapture with a Pyth reference |
| `aux` | Recapture with a sibling reel pool as reference |
| `adv_a`, `adv_b`, `adv_c` | Agent gate, market-hours fee (the `Calendar`), Swap Reward Mint |
| referral and ledger slots | The trader has a live referral link; a gap opener is credited |

**Hooked base mints.** A token launched on reel is Token-2022 with reel-hook as its transfer hook. Every base transfer needs seven more accounts, in this order: `reel_hook`, `extra_metas`, `mint_guard`, `reel_program`, `src_holder`, `dst_holder`, `dst_agent`, with source and destination following the base transfer's direction. The extra-metas account `["extra-account-metas", mint]` lists them for any Token-2022 client. A swap touches many accounts; an address lookup table keeps it within size.

### When a pool refuses a swap

| Error | Code | When |
| --- | ---: | --- |
| `BuysPaused` | 6017 | Before `buy_open_ts`: the first 12 s of a new token, or a Buy/Sell Block pause |
| `SellsLocked` | 6018 | Before `sell_open_ts` |
| `ExactOutDuringGuard` | 6019 | An exact-out buy while the Anti-Snipe guard runs |
| `BuyCapExceeded` | 6020 | The launch's per-slot buy budget is spent |
| `WalletCapExceeded` | 6021 | The buyer passes the Wallet Cap during the guard |
| `ZapTargetOnly` | 6026 | A Zap Relay target pool and the buyer isn't a feeder |
| `AgentRequired`, `ScoreTooLow`, `CpiRefused` | 6027–6029 | Agent gate; CPI callers are refused unless the pool allows them |
| `OracleUnavailable` | 6030 | Market Guard's Pyth feed is stale or missing; it refuses sells too |
| `InsufficientLiquidity` | 6013 | A sell would take more quote than the real reserve |
| `SlippageExceeded` | 6012 | Output below the limit, or input above it |

A router should read `buy_open_ts`, `sell_open_ts` and the guard end from the pool and skip it while a window is closed, and should drop a Market Guard pool whose feed is stale rather than retry.

### Routing through a program

A routed swap reaches reel by CPI, so it is not a top-level instruction. Three things follow:

- **King of the Pool** only crowns buys signed by an on-curve wallet at the top level. A routed buy can't take the crown.
- **Recapture's gap opener** is the last on-curve, top-level wallet whose swap widened a gap. A routed swap is never credited as opener.
- **Agent gate** refuses CPI callers unless the pool's `agent_flags` bit 1 allows them (`CpiRefused`).

The trader still pays the same fees either way.

### Exact-out

Exact-out is computed by inverting every fee at its most (the dynamic fee at its ceiling, Auto Burn inverted, one atom per charge), then running the forward pipeline. The trader can receive a few atoms more than asked and pays no more than the limit. Exact-out buys are refused during the guard, exact-out sells earn no Swap Reward Mint, and an exact-out swap that closes a recapture gap usually reverts. Prefer exact-in.

### Recapture changes the split

On a pool with Arb recapture, a swap that moves the price toward the reference (a Pyth feed, a sibling reel pool, or both) by at least the minimum gap pays a charge on the profit of the gap-closing part: by default 75% of it, capped at half the swap's gross amount. The arber keeps the rest. A stale or missing reference skips the charge; it never refuses the swap. To quote it, pass the same reference to `quoteSwap` as `recapRef`; without it the quote assumes no recapture and the swap can come in lower. Read [Fees and the recapture split](/docs/pools/fees).

### Hooked tokens on other venues

reel-hook runs on every transfer of a reel-launched token, wherever it trades. During the guard it caps every receiving wallet's balance, reel's vaults and the creator excepted. During a sell lock, and always for a Canonical Venue Token, it refuses transfers to owners that aren't on-curve wallets or `VAULT_AUTH`, which stops other programs' vaults. A route that sends a reel token through another venue's vault can fail for these reasons. The hook never taxes or redirects tokens.

### Events for indexers

Each swap logs a `Swap` event (id 2) as `Program data: <base64>`: pool, user, side, mode, amount in and out, LP fee, protocol, other, burn, recapture, the base reserve and the effective quote after the swap. Recaptures log `Recaptured` (15) and crowns `Crowned` (13). Read [Errors and events](/docs/reference/errors-and-events).

Page: /docs/integrations/aggregator-routing

## Building an interface like the reel app

> How reel's own app reads Solana with no database, keeps its RPC key server-side, simulates every transaction before a wallet sees it, and shows a dash rather than a guess.

### On chain first, no database

The reel app has no database of pools, trades or users. Lists come from `getProgramAccounts` over reel's accounts, filtered by their 8-byte tag. Stats come from counters the program keeps in its own accounts: `Config` counts pools, launches, roots, hooks, agents, referrers and blocks; each `Pool` keeps volume, trades, fees by block, burned and recaptured totals. History comes from transaction logs, fetched and cached on the server.

Another interface can do exactly the same with the [SDK](/docs/integrations/sdk): `accountFilters("Pool")` for the list, `decodePool` for each one, `quoteSwap` for prices.

### The RPC relay

The browser never sees the RPC URL or its key. Every call from the app goes to `/api/rpc`, a narrow relay that only posts to the server's own RPC, takes JSON-RPC methods from a fixed allowlist with bounded params, caps batch and body size, limits each client's rate, and refuses cross-site browsers. WebSocket subscriptions don't pass the relay, so the app polls for confirmations instead. `/api/health` reports whether the RPC answers, its slot and the round trip; the [Status](/status) page reads it.

The relay is for reel's own pages. An outside interface should run its own RPC.

### Build, simulate, sign, send

Every value-moving action follows one pipeline:

1. **Re-read** the accounts the transaction depends on, right before building it. Cached figures never decide a transaction.
2. **Build** the instructions with the SDK, wrapping SOL in the same transaction when the quote is wSOL.
3. **Simulate** it. A failure is shown as the program error's name and nothing reaches the wallet.
4. **Sign** in the wallet. The prompt is not a receipt.
5. **Send and follow**: rebroadcast while pending, poll the status, and report "expired" if the blockhash lapses, in which case nothing landed.
6. **Read back** the changed accounts and show what actually happened.

Copy this order. A wallet approval, a pending toast and a confirmed signature are three different things, and an interface should say which one it has.

### Fail closed

A figure on reel is read from chain or an API, or it shows as "—" with the reason. An unread balance is never zero, a failed read never sorts as the smallest value, and a control that depends on a missing figure stays disabled. Identity is an address: a token is its mint, never its ticker. Read [Methodology](/methodology) and [Where the numbers come from](/docs/reference/where-the-numbers-come-from).

### Deposit caps

A pool may have a deposit cap, a per-pool setting the admin can set or clear (0 means none). An interface built on reel should read the pool's `deposit_cap` before offering an add, and expect `DepositCapExceeded` (6037) if the pool has a cap set and a deposit would pass it. The cap only blocks new adds; swaps, withdrawals, fee collection and claims are never paused by it.

Page: /docs/integrations/app-integration

## reel MCP server

> reel's MCP server for agents, live at /api/mcp: read pools, blocks and rounds, quote and check a swap, and get back unsigned, simulated transactions an agent's own wallet signs.

### Status

The MCP server is live at `/api/mcp` on this site, reading Solana mainnet through reel's own RPC. It holds no keys and never signs or sends: build tools return unsigned transactions, already simulated, for the agent's wallet to sign. 3 of 21 tools answer `coming` with an empty result for now, never a made-up "none": `reel_revenue_tokens`, `reel_revenue_token` and `reel_build_revenue_claim`.

### Transport

- **Address:** `POST /api/mcp`, streamable HTTP, JSON-RPC 2.0, one JSON answer per request, no key and no session.
- **Versions:** MCP 2026-07-28 (version and identity in `params._meta`), and legacy clients that open with `initialize` (2025-11-25, 2025-06-18, 2025-03-26).
- **Reads:** the same code paths as the app, so an agent sees what a person sees, with `null` where a read fails, never a made-up zero.
- **Limits:** 64 KB bodies and a per-client rate limit, like the RPC relay.

### Tools

`tools/list` returns every tool with its input and output schema. By job:

| Group | Tools |
| --- | --- |
| Read | `reel_release`, `reel_pools`, `reel_pool`, `reel_blocks`, `reel_hook`, `reel_kings` |
| Trade | `reel_quote`, `reel_check_trade`, `reel_build_swap` |
| Launch | `reel_build_launch` |
| Claim | `reel_claims`, `reel_build_claim`, `reel_build_holder_pot_claim` |
| Agent gate | `reel_agent_gate`, `reel_build_agent_link`, `reel_build_reviewer_set` |
| Jobs for agents | `reel_open_orders`, `reel_build_fill` |
| Revenue tokens | `reel_revenue_tokens` (coming), `reel_revenue_token` (coming), `reel_build_revenue_claim` (coming) |

Run `reel_check_trade` before every trade. `reel_build_launch` checks and builds a new token and its pool in order. A build answers `ok` with transactions to send in order only when their simulation passed; otherwise `refused` with the reason. The board format `reel_build_launch` takes is the builder's share link, schema `reel.board.v1`.

### Without MCP

An agent can do the same with the [SDK](/docs/integrations/sdk) in the repo and its own RPC. The machine-readable index of these docs is at [/llms.txt](/llms.txt), the full reference at [/llms-full.txt](/llms-full.txt), and every docs page as markdown at [/docs.md](/docs.md).

Page: /docs/integrations/mcp

## Jobs for agents

> The reel instructions any wallet or agent can run, what each one moves, and the jobs in reel-vaults: limit-order fills for a bounty, payouts, router pushes and keeper drips.

Status: partial. Part of this runs today and part is coming.

### What is open today

Several reel instructions take any signer. Running them keeps pools paid out and accounts ready, and none of them can send funds anywhere but their fixed destination. **The program pays no bounty or tip for any of them**; the caller pays the fee and, where an account is created, its rent.

| Instruction | Tag | What it does | When |
| --- | ---: | --- | --- |
| `KotpSettle` | 65 | Credits a King of the Pool round's prizes to the winners' ledgers and releases part of the pot to LPs | After a round ends; the SDK prepends it to the first swap after one |
| `BucketCollect` | 63 | Pays a pool's bucket to its fixed recipient, or credits a ledger | Any time a bucket holds something; the pot is not collectable |
| `LaunchReturn` | 25 | Sends a live launch's escrow leftover to the creator | After `LaunchFinalize` |
| `LedgerOpen` | 60 | Opens a wallet's claim ledger for a mint | Before a credit needs it |
| `ClaimsVaultOpen` | 61 | Opens a mint's claims vault | Once per mint |
| `WalletCounterOpen` | 64 | Opens a wallet's Wallet Cap tally for a launch | Before that wallet buys during the guard |
| reel-hook `HolderInit` | — | Opens a wallet's holder record for Exit Clock and the Holder Pot | Before the wallet first receives the token; the app adds it to a wallet's first buy |
| reel-hook `InitializeExtraAccountMetaList` | — | Writes a reel mint's transfer-hook account list | Once per mint, usually in the launch transaction |

### Agent identity

An agent registers itself with `AgentRegister`: a wallet signs and gets an `Agent` PDA `["agent", wallet]` holding a metadata hash and an `external_id` slot for a future adapter to an outside registry. A reviewer set (`ReviewerCreate`) publishes `u32` scores for wallets (`ScoreSet`).

Pools can gate on this. With the **Agent gate** block, buys, sells and LP adds need an `Agent` for the signer, and optionally a minimum score from a named reviewer set; removing liquidity is never gated. A new token can also be **agent-only**, so every receiving wallet must be a registered agent. Read [Agent gate](/hooks/agent-gate).

### Jobs in reel-vaults

reel-vaults is the periphery program beside the pools (PROGRAM.md §19). Its permissionless instructions, by module:

- **Limit orders and Floor bids.** `OrderFill` (11) fills a live order whole once the pool pays its limit; the filler takes the order's lamport bounty, up to 0.01 SOL. `FloorRebalance` (14) re-prices a Floor bid from the pool's TWAP, untipped.
- **Holder Pot payouts.** `HolderPay` (90) pays a holder what reel-hook booked, less what was already paid, into the holder's own token account. Untipped; a holder's first payout pays its record's rent (about 0.0014 SOL).
- **Revenue Router.** `Collect` (52) moves a split's royalty from its reel ledger, `Distribute` (53) books it per payee, and `Push` (55) pays a payee that isn't pull-only. Untipped.
- **Fee Bridge drips.** `Record` (102) and `Drip` (103) are reel's fee keeper's. After 7 days without a keeper call on a bridge, anyone may send them under the same caps, and the caller takes the bridge's tip of at most 1%.

Market backers' payouts (`BackerPay`, 91) wait for `Config.bond_mint`, which mainnet's Config doesn't set yet, so no market block has backers to pay.

Coming with a reel-vaults upgrade:

- **Zaps and Family Pinger.** Running a due zap pays the caller the vault's reward; a launch's pinger tips whoever runs one, at most once per interval.

### Running a job safely

Build with the [SDK](/docs/integrations/sdk) (`ix.kotpSettle`, `ix.bucketCollect`, `ix.launchReturn`), simulate before sending, and read the error by name if it fails: `RoundNotOver` (6031) means the round isn't over, `NothingOwed` (6052) or `ZeroAmount` (6011) usually means there is nothing to move. Never sign a transaction an agent didn't build or simulate itself.

Page: /docs/integrations/agent-jobs

## Publishing and partner review

> The on-chain review paths reel has (market blocks, integrators and quotes), what each one checks, and the intake for partners, which is not open yet.

### What needs review and what doesn't

Opening a pool needs no one's permission: any creator can launch on reel's shared root, or on an owned root that allows them, within the global pauses. Three things do go through the admin, each recorded on chain:

| Path | Instruction | What it unlocks |
| --- | --- | --- |
| A market block | `MarketPublish`, then `MarketAdmit` | Pools may install it through the Usage fee block |
| An integrator | `IntegratorSet` | A share of the protocol cut on pools that name it |
| A quote | `QuoteList` | A reviewed quote with its own per-pool deposit cap |

> **The intake channel is not open yet.** There is no form, address or account to send a review request to. This page will name it once one exists; until then, anyone claiming to take review requests for reel is not reel.

### Publishing a market block

A builder publishes with `MarketPublish`: a `block_id`, a `manifest_hash` that pins what was reviewed, a fee cap, the builder's share (3,000–6,000 bps) and the backers' share (1,000–4,000 bps), which with 3,000 for reel and the reserve add up to 10,000, and a risk tier. Backers bond tokens behind it with `BondDeposit`; `BondWithdraw` takes a 7-day notice. The admin sets its status with `MarketAdmit`.

A pool can install the block only while it is admitted and bonded at least `Config.bond_floor[tier]`, and keeps it for life. reel-vaults' payouts module (live) pays backers their share with `BackerPay`. `MarketPublish` needs `Config.bond_mint` ($REEL, later), which mainnet's Config doesn't set yet, so no block can be published today. Read [Hook Blocks Market](/hooks/hook-blocks-market) and [Usage fee](/hooks/usage-fee).

### Becoming an integrator

The admin lists a wallet with `IntegratorSet`, at a rate up to `Config.max_integrator_bps` (at most 50% of the protocol cut), and can mark it inactive. A pool copies the rate when it opens, so a later change never touches existing pools. An owned root can name a listed integrator as its payee, and every pool under the root copies it. The trader pays the same either way. Read [Integrating as a launcher](/docs/guides/integrating-as-a-launcher).

### Listing a quote

`QuoteList` records a reviewed quote mint with a per-pool cap, a badge and a pause switch. A quote with a permanent delegate is accepted only when listed, because its issuer could move vault funds. A review looks at the mint's extensions, its freeze authority and its issuer. Read [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).

### What to prepare

Everything a reviewer checks is on chain or in your source, so it can be prepared now:

- **For a block:** the source and tests behind the manifest hash, the fee cap and split, and the bond.
- **For an integrator:** the wallet that receives the share and the product that sends the swaps.
- **For a quote:** the mint address, its token program and extensions, its freeze and mint authorities, and who issues it.
- **For a launchpad:** whether it launches on reel's root or an owned root, and which blocks its root allows. Read [Owned roots](/docs/pools/owned-roots).

Page: /docs/integrations/partner-review

# Previous releases

## Previous releases

> The program versions and SDK releases that came before the current one, and the pools that still run on them. There are none yet.

### None yet

reel hasn't shipped a release: no program is deployed, and the SDK hasn't been published. There is nothing earlier to migrate from, and no pool runs on an older version.

### What this page will record

For each release, once there is one:

- the program ids and the date each one accepted its first and last new pool;
- what changed, with the instructions, accounts or bounds it affected;
- the SDK version that builds for it;
- the pools that still run on it, and anything their owners or LPs should do.

### Upgrades and open pools

> The reel program is upgradeable while its upgrade authority exists. An upgrade replaces the code every pool runs at once; it doesn't change any pool's frozen `PoolParams`, and pools don't move. Each upgrade will be listed here with its date and what it changed.

A new program id, by contrast, would leave existing pools on the old one, and this page would list both.

### hookr's earlier generations

hookr ran bonding-curve launches and an [Nth-buy Pot](/hooks/nth-buy-pot) before its current core. reel starts from that core: launches open pools directly, and the Nth-buy Pot is not offered on reel, with [King of the Pool](/docs/pools/king-of-the-pool) in its place.

Page: /docs/previous-releases


# ReelBook

> Pool families built from Hook Blocks: who each one is for, the pools and blocks it runs, what works today and what is coming, and the steps to set it up.

Page: /docs/reelbook

Each recipe passes the builder’s checks for every pool. Statuses come from the Hook Blocks catalog: “Set up now” means every block is in the reel program, “partial” names blocks reel runs in part, and “Set up without” names what waits for reel-vaults.

- [Build your own hook](/docs/reelbook/build-your-own-hook): compose blocks, save a hook or open your own root, and open pools on it.
- [Constellation](/docs/reelbook/constellation) (new token, 9 pools; Set up now · partial: Arb recapture, Zap Relay target, Zap Relay source, Hook Blocks Market): A flagship launch that shows every way to trade one token: eight pools, each with its own job.
- [Binary Star](/docs/reelbook/binary-star) (new token, 6 pools; Set up now · partial: Arb recapture, Zap Relay target, Zap Relay source): Two teams launch sibling tokens that buy each other’s reserve: a duo, two sides of one game, a token and its DAO.
- [Season Ladder](/docs/reelbook/season-ladder) (new token, 6 pools; Set up without Dev Drip (coming)): A market that opens in stages: a guarded first season, then new pools at a milestone.
- [Creator coin with fan perks](/docs/reelbook/creator-coin-with-fan-perks) (new token, 3 pools; Set up without Dev Drip (coming)): For a streamer, artist or podcast: the day’s top fan takes the crown, and fan-club swaps mint points.
- [Session pools](/docs/reelbook/session-pools) (new token, 8 pools; Set up now · partial: Arb recapture): For a community whose holders also hold tokenized stocks: a crown pool, a desk and six session pools.
- [Faction league](/docs/reelbook/faction-league) (new token, 2 pools; Set up now · partial: Arb recapture): A community game with four sides: each faction is its own token with a crown pool and a points pool.
- [Agent-run token](/docs/reelbook/agent-run-token) (new token, 3 pools; Set up now · partial: Arb recapture): For an AI agent with its own treasury: royalty to a split, a tax to the agent’s wallet and points for its users.
- [Bot-resistant fair launch](/docs/reelbook/bot-resistant-fair-launch) (new token, 3 pools; Set up without Dev Drip (coming)): For a team that wants early bots to pay the holders and LPs who stay.
- [Game economy, GEM and GOLD](/docs/reelbook/game-economy-gem-and-gold) (new token, 5 pools; Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source): A game with an everyday currency and a premium one: GOLD’s trading funds GEM’s reserve.
- [DAO commons](/docs/reelbook/dao-commons) (new token, 4 pools; Set up now · partial: Arb recapture, Floor bid): A community that launches as a DAO with a treasury: royalty, a trading tax, governance points and a desk.
- [Buy-later launch](/docs/reelbook/buy-later-launch) (new token, 2 pools; Set up without Pay Later (coming)): A launch that lets buyers commit now and pay full price later, beside a crown pool and a desk.
- [Public goods token](/docs/reelbook/public-goods-token) (new token, 3 pools; Set up now · partial: Arb recapture): A token that funds public goods: royalty to the recipients, a tax to a treasury, points for donors.
- [Liquidity home](/docs/reelbook/liquidity-home) (existing token, 4 pools; Set up now · partial: Arb recapture): For an established Solana token moving its main depth to reel: a crown pool, a desk, a points pool and a lean pool.
- [Guarded SOL/USDC venue](/docs/reelbook/guarded-sol-usdc-venue) (existing token, 2 pools; Set up now · partial: Arb recapture): For a market maker or a USDC desk: SOL/USDC pools held near Pyth’s price, where strays pay LPs.
- [Loyalty points](/docs/reelbook/loyalty-points) (existing token, 3 pools; Set up now · partial: Arb recapture): For a token with a large, long-held community: swaps mint loyalty points, back-runs pay, and a crown pool runs daily.
- [Revenue buyback engine](/docs/reelbook/revenue-buyback-engine) (existing token, 2 pools; Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source): For an app or protocol with real revenue: a buyback pool only its vault may buy, fed by 1% of buys on a second pool.
- [Community bridge](/docs/reelbook/community-bridge) (existing token, 5 pools; Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source): For two communities that want a shared market: each funds the other’s reserve, and a bridge pool trades one in the other.
- [Treasury desk](/docs/reelbook/treasury-desk) (existing token, 2 pools; Set up without Dev Drip (coming)): For a DAO or foundation holding a large share of its own token: a managed desk and a pool where back-runs pay.
- [Protocol fee share](/docs/reelbook/protocol-fee-share) (existing token, 2 pools; Set up now · partial: Arb recapture): For a protocol that wants its stakers paid from trading: a royalty to a split and a tax to the staking program.
- [Fair venue](/docs/reelbook/fair-venue) (existing token, 3 pools; Set up now · partial: Arb recapture): For a high-volume token whose traders want MEV paid back: trader-first recapture, plain LP pools and a desk.
- [Builder token](/docs/reelbook/builder-token) (existing token, 2 pools; Set up now · partial: Zap Relay target, Arb recapture, Hook Blocks Market): For a team that builds Hook Blocks: a buyback pool, and a crown pool that runs the team’s market block.
- [Stock-hours expansion](/docs/reelbook/stock-hours-expansion) (existing token, 5 pools; Set up now · partial: Arb recapture): For any token whose holders also hold tokenized stocks: four session pools and a USDC desk.
- [Revival kit](/docs/reelbook/revival-kit) (existing token, 3 pools; Set up now · partial: Arb recapture, Floor bid): For a quiet token whose community wants a second run: a crown pool with a burn, a points pool and a sell tax.
- [Platform default family](/docs/reelbook/platform-default-family) (existing token, 2 pools; Set up now · partial: Arb recapture): For an app or launch platform that wants a house style: a royalty split with the platform and a tax to it.
- [Fair launch, locked](/docs/reelbook/fair-launch-locked) (new token, 3 pools; Set up without Dev Drip, LP Time-Lock Boost (coming)): Early bots pay the LPs, and LPs who lock their positions earn more on top.
- [DAO commons, locked](/docs/reelbook/dao-commons-locked) (new token, 4 pools; Set up without LP Time-Lock Boost (coming)): A DAO whose trading tax rewards long-term LPs: DAO commons with a lock boost on the main pool.
- [Liquidity home, locked](/docs/reelbook/liquidity-home-locked) (existing token, 4 pools; Set up without LP Time-Lock Boost (coming)): For an established token that wants outside LPs to move in and stay: Liquidity home with a lock boost.
- [LP-first venue](/docs/reelbook/lp-first-venue) (existing token, 2 pools; Set up without LP Time-Lock Boost (coming)): For a token that wants its pools to pay LPs every way they can, with more for LPs who lock.

# ReelBook: Constellation

> A flagship launch that shows every way to trade one token: eight pools, each with its own job.

Page: /docs/reelbook/constellation

One token, eight quotes, and a different rule set on every pool, so each kind of trader finds the market built for them.

Status: Set up now · partial: Arb recapture, Zap Relay target, Zap Relay source, Hook Blocks Market. 9 pools in 2 launches.

## The pools

### Launch 1 · eight pools

New token · 8 pools · split 30/20/10/10/10/8/6/6 · keep at most 2%

- **SOL**: Arena: a daily crown round, with a 1% tax to the treasury. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Payee: the treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzd2FwLWN1dCIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjYwMCIsInNuaXBlX3RheF9waXBzIjoiMTAwMDAwIiwic25pcGVfZmxvb3JfcGlwcyI6IjAiLCJzbmlwZV9kZWNheV9zZWNzIjoiMzAwIiwic25pcGVfY3VydmUiOiIwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiY3V0X2J1eV9waXBzIjoiMTAwMDAiLCJjdXRfc2VsbF9waXBzIjoiMTAwMDAiLCJjdXRfdG8iOiI0IiwiY3V0X3NlbGxfdG8iOiI0Iiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzd2FwLWN1dCIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjYwMCIsInNuaXBlX3RheF9waXBzIjoiMTAwMDAwIiwic25pcGVfZmxvb3JfcGlwcyI6IjAiLCJzbmlwZV9kZWNheV9zZWNzIjoiMzAwIiwic25pcGVfY3VydmUiOiIwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiY3V0X2J1eV9waXBzIjoiMTAwMDAiLCJjdXRfc2VsbF9waXBzIjoiMTAwMDAiLCJjdXRfdG8iOiI0IiwiY3V0X3NlbGxfdG8iOiI0Iiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)
- **USDT**: Points: swaps mint points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **Listed tokenized stock A**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **An established SPL token**: Clean room: no sells in the first minute. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Buy/Sell Block](/hooks/buy-sell-block), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **Listed tokenized stock B**: Market stall: runs a Hook Blocks Market block. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Usage fee](/hooks/usage-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ1c2FnZS1mZWUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsInVzYWdlX3BpcHMiOiI1MDAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ1c2FnZS1mZWUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsInVzYWdlX3BpcHMiOiI1MDAwIn19)
- **Listed tokenized stock C**: Vault: only launch 2’s feeder buys it. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)
- **Listed tokenized stock D**: Plain: the core fee blocks only. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- Launch options: Opening price check: 1%; Liquidity lock: 1,200,000 s

### Launch 2 · the vault’s feeder

Existing token · 1 pool · same token, a second launch (nonce 1)

- **Listed tokenized stock C**: Feeder: 1% of buys to launch 1’s vault pool. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names launch 1’s vault pool’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIiwiemFwLXJlbGF5LXNvdXJjZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJrb3RwX3BvdF9icHMiOiIyNTAwIiwia290cF9yb3VuZF9zZWNzIjoiODY0MDAiLCJrb3RwX3JlbGVhc2VfYnBzIjoiNTAwMCIsImtvdHBfcG9kaXVtIjoiMSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIiwiemFwLXJlbGF5LXNvdXJjZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJrb3RwX3BvdF9icHMiOiIyNTAwIiwia290cF9yb3VuZF9zZWNzIjoiODY0MDAiLCJrb3RwX3JlbGVhc2VfYnBzIjoiNTAwMCIsImtvdHBfcG9kaXVtIjoiMSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

## How the pools work together

Pool 1 is the crowd’s market, and its King of the Pool pot fills from recapture on every pool that reads it. Recapture on each sibling reads pool 1 through a Pyth conversion, so the eight prices stay close. The vault pool takes buys only from launch 2’s zap vault, which gathers 1% of every buy on launch 2’s pool and spends it there.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).
- [Hook Blocks Market](/hooks/hook-blocks-market) (Partial): Partial: publishing, admission, bonds and the usage-fee split are in the reel program, and reel-vaults' payouts module (live) pays backers. Publishing a market block needs Config.bond_mint ($REEL, later), which mainnet's Config doesn't set yet, so no block can be published, bonded or installed today and no backer has anything to claim.

## Steps

1. Open the SOL pool’s board in the builder, name the treasury as payee, and save it as a saved hook if other launches will reuse it.
2. Do the same for each of the other seven pools; every quote in one launch must differ.
3. On the launch floor, create a new token with 8 pools, weights 30/20/10/10/10/8/6/6 and retention 2%.
4. Add each pool with its seed, then finalize once all eight are seeded.
5. Open launch 2 for the same token: one pool on stock token C that names launch 1’s vault pool’s zap vault.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Binary Star

> Two teams launch sibling tokens that buy each other’s reserve: a duo, two sides of one game, a token and its DAO.

Page: /docs/reelbook/binary-star

Each token’s trading funds the other’s reserve pool, so neither side grows alone.

Status: Set up now · partial: Arb recapture, Zap Relay target, Zap Relay source. 6 pools in 4 launches.

## The pools

### SUN

New token · 2 pools · split 70/30

- **SOL**: SUN’s open market. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: SUN’s reserve: MOON’s zaps only. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)

### MOON

New token · 2 pools · split 70/30 · names SUN’s vault

- **SOL**: MOON’s open market. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Feeder: 1% of buys to SUN’s reserve. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names SUN’s reserve’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

### MOON, second launch

Existing token · 1 pool

- **USDT**: MOON’s reserve: SUN’s zaps only. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)

### SUN, second launch

Existing token · 1 pool · names MOON’s vault

- **USDT**: Feeder: 1% of buys to MOON’s reserve. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names MOON’s reserve’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

## How the pools work together

SUN and MOON each open a crowd market on SOL and a reserve pool that only the other side’s zap vault may buy. MOON’s USDC pool sends 1% of every buy to a vault that buys SUN’s reserve; SUN’s USDT pool does the same for MOON. Anyone may sell either reserve at any time.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).

## Steps

1. Launch SUN first, since MOON’s feeder names SUN’s reserve vault.
2. Launch MOON with its feeder pointing at SUN’s zap vault.
3. Open MOON’s reserve as a second launch of MOON, then SUN’s feeder as a second launch of SUN.
4. Check each reserve pool lists exactly its feeder vault before you finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Season Ladder

> A market that opens in stages: a guarded first season, then new pools at a milestone.

Page: /docs/reelbook/season-ladder

Season 1 starts small and protected; season 2 adds a crown pool and session pools once the community gets there.

Status: Set up without Dev Drip (coming). 6 pools in 3 launches.

## The pools

### Season 1

New token · 2 pools · split 80/20 · liquidity locked 604,800 s (a week)

- **SOL**: No sells in the first minute. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Buy/Sell Block](/hooks/buy-sell-block), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDC**: Vault pool: zap-only buys. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJ6YXAtcmVsYXktdGFyZ2V0Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjYwMCIsInNuaXBlX3RheF9waXBzIjoiMTAwMDAwIiwic25pcGVfZmxvb3JfcGlwcyI6IjAiLCJzbmlwZV9kZWNheV9zZWNzIjoiMzAwIiwic25pcGVfY3VydmUiOiIwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJ6YXAtcmVsYXktdGFyZ2V0Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjYwMCIsInNuaXBlX3RheF9waXBzIjoiMTAwMDAwIiwic25pcGVfZmxvb3JfcGlwcyI6IjAiLCJzbmlwZV9kZWNheV9zZWNzIjoiMzAwIiwic25pcGVfY3VydmUiOiIwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCJ9fQ)

### Season 1 feeder

Existing token · 1 pool · a second launch of the token

- **USDC**: Feeder: 1% of buys to the season 1 vault. Blocks: [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names the season 1 vault’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJ6YXBfcGlwcyI6IjEwMDAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJ6YXBfcGlwcyI6IjEwMDAwIn19)

### Season 2, at the milestone

Existing token · 3 pools · sent by hand when the community reaches its milestone

- **USDT**: Crown pool. Blocks: [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJrb3RwX3BvdF9icHMiOiIyNTAwIiwia290cF9yb3VuZF9zZWNzIjoiODY0MDAiLCJrb3RwX3JlbGVhc2VfYnBzIjoiNTAwMCIsImtvdHBfcG9kaXVtIjoiMSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJrb3RwX3BvdF9icHMiOiIyNTAwIiwia290cF9yb3VuZF9zZWNzIjoiODY0MDAiLCJrb3RwX3JlbGVhc2VfYnBzIjoiNTAwMCIsImtvdHBfcG9kaXVtIjoiMSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **Listed tokenized stock A**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock B**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)

## How the pools work together

Season 1 opens a guarded SOL market and a vault pool that only the feeder buys. The feeder burns a little of every buy and sends 1% to the vault. Season 2 is a separate launch of the same token, opened by hand; nothing on chain triggers it.

## What is coming or partial

- [Dev Drip](/hooks/dev-drip) (Periphery, coming): Coming: the `escrow` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).

## Steps

1. Launch season 1 with weights 80/20 and a 604,800 s liquidity lock.
2. Open the feeder as a second launch, naming season 1’s vault pool’s zap vault.
3. When the milestone arrives, open season 2 as a third launch with its three pools.
4. Team tokens over time come from Dev Drip once its reel-vaults module ships; until then, keep them out of the pools.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Creator coin with fan perks

> For a streamer, artist or podcast: the day’s top fan takes the crown, and fan-club swaps mint points.

Page: /docs/reelbook/creator-coin-with-fan-perks

Fans get a daily contest and a points token; the creator earns a royalty without touching the LPs’ base fee.

Status: Set up without Dev Drip (coming). 3 pools in 1 launch.

## The pools

### Launch

New token · 3 pools · split 60/30/10 · keep at most 2%

- **SOL**: Stage: the day’s top fan wears the crown. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the creator. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Points: swaps mint FAN points. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19)
- **USDT**: Desk: a managed surcharge, capped at 1%. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19)

## How the pools work together

The SOL pool runs a daily King of the Pool round and pays the creator a royalty out of LP Rewards. The USDC pool mints FAN points to every trader who receives a swap’s output, from a reward mint whose authority is that pool’s reward PDA. The USDT pool carries a surcharge reel’s fee keeper moves inside a 1% cap.

## What is coming or partial

- [Dev Drip](/hooks/dev-drip) (Periphery, coming): Coming: the `escrow` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open each pool’s board in the builder; on the SOL pool, name the royalty recipient and the least buy that counts.
2. On the USDC pool, name the FAN mint and the payee; its mint authority must be the pool’s reward PDA.
3. Create the launch with weights 60/30/10 and 2% retention, add the three pools and finalize.
4. Creator tokens released over time need Dev Drip, which comes with a reel-vaults upgrade.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Session pools

> For a community whose holders also hold tokenized stocks: a crown pool, a desk and six session pools.

Page: /docs/reelbook/session-pools

Each stock-quoted pool charges by the US market’s session, so liquidity is paid more when the stock’s own market is shut.

Status: Set up now · partial: Arb recapture. 8 pools in 1 launch.

## The pools

### Launch

New token · 8 pools · split 30/20/10/10/10/10/5/5 · keep at most 2%

- **SOL**: Open market: the round’s biggest buy takes the pot. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)
- **Listed tokenized stock A**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock B**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock C**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock D**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock E**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock F**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- Launch options: Opening price check: 1%

## How the pools work together

The six session pools charge 0% in regular hours, 0.2% pre-market and after hours, 0.4% overnight and 1% when the market is closed, all to LPs, on top of the base fee. Recapture on each reads the SOL pool through a Pyth conversion, so a stale feed skips it rather than refusing swaps.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Check each stock token passes reel’s mint policy and is a listed quote; see [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).
2. Open the session pool’s board in the builder; the market-hours fee needs the admin-kept Calendar account.
3. Create the launch with eight pools and the weights above, add each pool, then finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Faction league

> A community game with four sides: each faction is its own token with a crown pool and a points pool.

Page: /docs/reelbook/faction-league

Four tokens compete on the same terms; each faction’s crown and points show who is winning.

Status: Set up now · partial: Arb recapture. 2 pools in 1 launch.

## The pools

### Each faction (four launches)

New token · 2 pools · split 70/30 · the same terms for every faction

- **SOL**: The faction’s crown pool. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Points: swaps mint LEAGUE points for this faction. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19)

## How the pools work together

Every faction launches the same two pools, so their rounds, burns and points compare directly. A reward mint belongs to one pool (its authority is that pool’s reward PDA), so each faction mints its own LEAGUE points token; a league table adds them up off chain.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Build the two pools once and save them as a saved hook, so all four factions follow the same version.
2. Launch each faction from that saved hook with weights 70/30.
3. Name a separate points mint for each faction’s USDC pool.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Agent-run token

> For an AI agent with its own treasury: royalty to a split, a tax to the agent’s wallet and points for its users.

Page: /docs/reelbook/agent-run-token

The agent earns on chain from three sources, and every one is fixed at launch where anyone can read it.

Status: Set up now · partial: Arb recapture. 3 pools in 1 launch.

## The pools

### Launch

New token · 3 pools · split 60/30/10 · keep at most 2%

- **SOL**: Main pool: royalty to the split, managed surcharge. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). Royalty to: the agent’s split. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJhcmItcmVjYXB0dXJlIiwibWFuYWdlZC1mZWUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicm95YWx0eV9icHMiOiIxMDAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJtYW5hZ2VkX2NhcF9waXBzIjoiMTAwMDAiLCJtYW5hZ2VkX3N0YXJ0X3BpcHMiOiI1MDAiLCJtYW5hZ2VkX3ByZW1pdW1bMF0iOiIwIiwibWFuYWdlZF9wcmVtaXVtWzFdIjoiMCIsIm1hbmFnZWRfbWF4X3N0ZXAiOiIxMDAwIiwibWFuYWdlZF9taW5faW50ZXJ2YWwiOiI2MCIsIm1hbmFnZWRfbWF4X3R0bCI6IjM2MDAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJhcmItcmVjYXB0dXJlIiwibWFuYWdlZC1mZWUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicm95YWx0eV9icHMiOiIxMDAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJtYW5hZ2VkX2NhcF9waXBzIjoiMTAwMDAiLCJtYW5hZ2VkX3N0YXJ0X3BpcHMiOiI1MDAiLCJtYW5hZ2VkX3ByZW1pdW1bMF0iOiIwIiwibWFuYWdlZF9wcmVtaXVtWzFdIjoiMCIsIm1hbmFnZWRfbWF4X3N0ZXAiOiIxMDAwIiwibWFuYWdlZF9taW5faW50ZXJ2YWwiOiI2MCIsIm1hbmFnZWRfbWF4X3R0bCI6IjM2MDAifX0)
- **USDC**: Tax to the agent’s treasury. Blocks: [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the agent’s treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsImN1dF9idXlfcGlwcyI6IjEwMDAwIiwiY3V0X3NlbGxfcGlwcyI6IjEwMDAwIiwiY3V0X3RvIjoiNCIsImN1dF9zZWxsX3RvIjoiNCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsImN1dF9idXlfcGlwcyI6IjEwMDAwIiwiY3V0X3NlbGxfcGlwcyI6IjEwMDAwIiwiY3V0X3RvIjoiNCIsImN1dF9zZWxsX3RvIjoiNCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDT**: Points: swaps mint points for the agent’s users. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)

## How the pools work together

The SOL pool’s royalty pays a ledger the agent claims. The USDC pool takes a 1% cut each way to the agent’s treasury as payee. The agent can register in reel’s Agent registry, and a launch can make the token agent-only so every receiving wallet must be a registered agent.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Register the agent’s wallet with AgentRegister if you want it listed as an agent.
2. Open each pool’s board; name the royalty recipient, the payee and the points mint.
3. Create the launch, add the pools and finalize. For a royalty split across several payees, name a Revenue Router split (reel-vaults) as the royalty recipient before you create the launch.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Bot-resistant fair launch

> For a team that wants early bots to pay the holders and LPs who stay.

Page: /docs/reelbook/bot-resistant-fair-launch

Snipers pay a steep, front-loaded tax to LPs, back-runs pay the move they take, and the team keeps at most 2%.

Status: Set up without Dev Drip (coming). 3 pools in 1 launch.

## The pools

### Launch

New token · 3 pools · split 60/30/10 · keep at most 2% · liquidity locked 1,200,000 s

- **SOL**: Guarded launch pool. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Sandwich Guard](/hooks/sandwich-guard), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzYW5kd2ljaC1ndWFyZCIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzYW5kd2ljaC1ndWFyZCIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDC**: No sells in the first minute. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Buy/Sell Block](/hooks/buy-sell-block), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDT**: Launch fee that decays over the first hour. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjM2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjIwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjM2MDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjM2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjIwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjM2MDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)

## How the pools work together

Every pool opens behind Anti-Snipe’s guard, and only the launch position can add liquidity until it ends. The SOL pool’s Snipe tax is front-loaded; the USDT pool’s starts at 20% and decays over an hour. The USDC pool refuses every sell for the first minute.

## What is coming or partial

- [Dev Drip](/hooks/dev-drip) (Periphery, coming): Coming: the `escrow` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open each pool’s board in the builder and set the per-slot buy cap (the SDK suggests 0.5% of quote depth).
2. Create the launch with weights 60/30/10, 2% retention and a 1,200,000 s liquidity lock.
3. Add the pools, seed them and finalize.
4. Team tokens released over time need Dev Drip, which comes with a reel-vaults upgrade.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Game economy, GEM and GOLD

> A game with an everyday currency and a premium one: GOLD’s trading funds GEM’s reserve.

Page: /docs/reelbook/game-economy-gem-and-gold

Two tokens with different jobs, linked by a zap vault rather than a promise.

Status: Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source. 5 pools in 2 launches.

## The pools

### GEM

New token · 2 pools · split 40/60

- **USDC**: GEM reserve: GOLD’s zaps only. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)
- **SOL**: GEM’s open market. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)

### GOLD

New token · 3 pools · split 50/40/10 · names GEM’s vault

- **SOL**: GOLD’s open market. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Feeder: 1% of buys to GEM’s reserve. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names GEM’s reserve’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)
- **USDT**: Points: swaps mint XP. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)

## How the pools work together

GEM opens a crowd market and a reserve only GOLD’s zap vault may buy. GOLD’s USDC pool sends 1% of every buy to that vault, and its USDT pool mints XP to traders. Both launches run King of the Pool on SOL.

## What is coming or partial

- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).

## Steps

1. Launch GEM first so its reserve vault exists.
2. Launch GOLD with its USDC feeder naming GEM’s zap vault and its USDT pool naming the XP mint.
3. Finalize each launch once all its pools are seeded.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: DAO commons

> A community that launches as a DAO with a treasury: royalty, a trading tax, governance points and a desk.

Page: /docs/reelbook/dao-commons

The DAO is paid three ways, each fixed at launch, and its liquidity stays locked through the launch window.

Status: Set up now · partial: Arb recapture, Floor bid. 4 pools in 1 launch.

## The pools

### Launch

New token · 4 pools · split 50/30/10/10 · liquidity locked 1,200,000 s

- **SOL**: Royalty to the DAO. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the DAO treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Tax to the DAO treasury. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the DAO treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **USDT**: Points: swaps mint governance points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **An established SPL token**: Desk: a managed surcharge, capped at 1%. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19)
- Launch options: Launch lock: the DAO as beneficiary

## How the pools work together

Royalty, tax and the desk’s surcharge all reach the DAO or its LPs on chain. A launch lock makes the DAO the beneficiary, so it collects every fee the launch positions earn while the liquidity stays put.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Floor bid](/hooks/floor-bid) (Partial): Partial: live in reel-vaults' orders module as a standing buy order that anyone re-prices to TWAP × (1 − offset) once per cooldown (at least 30 minutes), never past the owner's worst price. reel pools are full-range, so it is a taker order, not a single-sided LP range: it earns no LP fees and closes on its first fill.

## Steps

1. Open each pool’s board; name the DAO treasury as royalty recipient and payee.
2. Create the launch with weights 50/30/10/10 and a 1,200,000 s liquidity lock, add the pools and finalize.
3. Lock the launch with the DAO as beneficiary (LaunchLock).
4. To split the royalty among several payees, name a Revenue Router split (reel-vaults) as the royalty recipient. Once the pools trade, place a Floor bid (reel-vaults) under the market.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Buy-later launch

> A launch that lets buyers commit now and pay full price later, beside a crown pool and a desk.

Page: /docs/reelbook/buy-later-launch

The commitment is a covered call on the launch position’s fees, so it costs the pools nothing.

Status: Set up without Pay Later (coming). 2 pools in 1 launch.

## The pools

### Launch

New token · 2 pools · split 70/30 · keep at most 2%

- **SOL**: Open market: the round’s biggest buy takes the pot. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)

## How the pools work together

The two pools trade from launch. Pay Later sits beside them in reel-vaults: a covered call written on the launch position’s fees. Until its module ships, the launch runs as a plain crown pool and desk.

## What is coming or partial

- [Pay Later](/hooks/pay-later) (Periphery, coming): Coming: the `paylater` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open both pools’ boards in the builder and name the least buy that counts.
2. Create the launch with weights 70/30, add the pools and finalize.
3. Add Pay Later once its reel-vaults module ships.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Public goods token

> A token that funds public goods: royalty to the recipients, a tax to a treasury, points for donors.

Page: /docs/reelbook/public-goods-token

Funding comes from trading, not from a sale, and the recipients are fixed on chain at launch.

Status: Set up now · partial: Arb recapture. 3 pools in 1 launch.

## The pools

### Launch

New token · 3 pools · split 60/30/10 · keep at most 2%

- **SOL**: Royalty to the recipients. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the recipients’ split. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Tax to a public-goods treasury. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: a public-goods treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **USDT**: Points: swaps mint donor points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- Launch options: Launch lock: forever

## How the pools work together

The royalty and the USDC tax both reach the cause on chain; donor points go to every trader who receives a swap’s output. A launch lock set to forever keeps the liquidity in its pools while the beneficiary collects the fees it earns.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open each pool’s board; name the royalty recipient, the treasury as payee and the points mint.
2. Create the launch, add the pools and finalize.
3. Lock the launch forever (LaunchLock with the forever value).
4. To pay several recipients from one royalty, name a Revenue Router split (reel-vaults) as the royalty recipient: its address follows from its payees and shares, so it can be named before it exists.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Liquidity home

> For an established Solana token moving its main depth to reel: a crown pool, a desk, a points pool and a lean pool.

Page: /docs/reelbook/liquidity-home

Outside LPs earn base fees, LP Rewards and recapture on every pool, and the token keeps its existing markets.

Status: Set up now · partial: Arb recapture. 4 pools in 1 launch.

## The pools

### Launch

Existing token · 4 pools · from the creator’s own token and quote · no power over the token

- **SOL**: Crown pool: a daily round. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)
- **USDT**: Points: swaps mint points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **An established SPL token**: Lean: LP Rewards and recapture only. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)

## How the pools work together

An existing-token launch only records the mint: reel never touches its authorities, and its other markets keep running. The four pools cover a crowd market, a managed desk, a points pool and a lean pool. Recapture on each reads a sibling through a Pyth conversion.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Check the token passes reel’s mint policy (an unlisted quote takes the unlisted deposit cap).
2. Open each pool’s board in the builder; name the points mint and the least buy that counts.
3. Create an existing-token launch with four pools, seed each from your own token and quote, and finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Guarded SOL/USDC venue

> For a market maker or a USDC desk: SOL/USDC pools held near Pyth’s price, where strays pay LPs.

Page: /docs/reelbook/guarded-sol-usdc-venue

Swaps that end more than 10% from the oracle pay up to 1% to LPs, and a stale feed stops swaps rather than trading blind.

Status: Set up now · partial: Arb recapture. 2 pools in 2 launches.

## The pools

### SOL quoted in USDC

Existing token · 1 pool · base wSOL

- **USDC**: Oracle-guarded. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market Guard](/hooks/market-guard). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtZ3VhcmQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjEiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJndWFyZF9iYW5kX2JwcyI6IjEwMDAiLCJndWFyZF9yYW1wX2JwcyI6IjEwMDAiLCJndWFyZF9zdXJjaGFyZ2VfcGlwcyI6IjEwMDAwIiwib3JhY2xlX21heF9hZ2UiOiI5MDAwMCIsImd1YXJkX21pbl9kZXB0aCI6IjAiLCJndWFyZF9mbGFncyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtZ3VhcmQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjEiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJndWFyZF9iYW5kX2JwcyI6IjEwMDAiLCJndWFyZF9yYW1wX2JwcyI6IjEwMDAiLCJndWFyZF9zdXJjaGFyZ2VfcGlwcyI6IjEwMDAwIiwib3JhY2xlX21heF9hZ2UiOiI5MDAwMCIsImd1YXJkX21pbl9kZXB0aCI6IjAiLCJndWFyZF9mbGFncyI6IjAifX0)
- Launch options: Oracle: Pyth SOL/USD

### USDC quoted in SOL

Existing token · 1 pool · base USDC

- **SOL**: Oracle-guarded, feed inverted. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market Guard](/hooks/market-guard). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtZ3VhcmQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjEiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJndWFyZF9iYW5kX2JwcyI6IjEwMDAiLCJndWFyZF9yYW1wX2JwcyI6IjEwMDAiLCJndWFyZF9zdXJjaGFyZ2VfcGlwcyI6IjEwMDAwIiwib3JhY2xlX21heF9hZ2UiOiI5MDAwMCIsImd1YXJkX21pbl9kZXB0aCI6IjAiLCJndWFyZF9mbGFncyI6IjEifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtZ3VhcmQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjEiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJndWFyZF9iYW5kX2JwcyI6IjEwMDAiLCJndWFyZF9yYW1wX2JwcyI6IjEwMDAiLCJndWFyZF9zdXJjaGFyZ2VfcGlwcyI6IjEwMDAwIiwib3JhY2xlX21heF9hZ2UiOiI5MDAwMCIsImd1YXJkX21pbl9kZXB0aCI6IjAiLCJndWFyZF9mbGFncyI6IjEifX0)
- Launch options: Oracle: Pyth SOL/USD, inverted by guard_flags bit 0

## How the pools work together

Both pools read the same Pyth SOL/USD feed; the second inverts it because its base is USDC. Market Guard fails closed: a missing or stale feed refuses every swap, sells included. Recapture reads the same feed (reference 1), so arbitrage profit stays mostly with the pool.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open the board in the builder, name the Pyth SOL/USD price account and keep oracle_max_age short.
2. Open the first launch with base wSOL and quote USDC, then the second with base USDC and quote SOL.
3. Watch the feed: when it goes stale, swaps on both pools stop until it updates.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Loyalty points

> For a token with a large, long-held community: swaps mint loyalty points, back-runs pay, and a crown pool runs daily.

Page: /docs/reelbook/loyalty-points

Points reward people who trade on reel’s pools, and Sandwich Guard charges the bots that prey on them.

Status: Set up now · partial: Arb recapture. 3 pools in 1 launch.

## The pools

### Launch

Existing token · 3 pools

- **SOL**: Points: swaps mint LOYAL points. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19)
- **USDC**: Sandwich Guard: back-runs pay the move. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Sandwich Guard](/hooks/sandwich-guard), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInNhbmR3aWNoLWd1YXJkIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInNhbmR3aWNoLWd1YXJkIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDT**: Crown pool. Blocks: [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)

## How the pools work together

The SOL pool mints LOYAL points to traders who receive a swap’s output. On the USDC pool, a swap that moves the price back toward the slot’s opening price pays that move, which is how a sandwich’s back-run usually trades. The USDT pool runs a daily King of the Pool round.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Name the LOYAL mint (authority: the SOL pool’s reward PDA) and the payee.
2. Name the least buy that counts on the USDT pool.
3. Create an existing-token launch with the three pools, seed them and finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Revenue buyback engine

> For an app or protocol with real revenue: a buyback pool only its vault may buy, fed by 1% of buys on a second pool.

Page: /docs/reelbook/revenue-buyback-engine

Buybacks run from trading volume on rules anyone can read, not from a team’s discretion.

Status: Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source. 2 pools in 2 launches.

## The pools

### The buyback pool (launches first)

Existing token · 1 pool

- **USDC**: Bought only by its vault. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)

### The feeder

Existing token · 1 pool · the same pair, a second launch · names the vault

- **USDC**: Feeder: 1% of buys to the buyback pool. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names the buyback pool’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIyIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIyIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

## How the pools work together

The feeder’s buys pay 1% into a zap vault; when it has gathered enough, anyone can zap it into the buyback pool, which nobody else may buy. Anyone may sell into the buyback pool at any time. The feeder’s recapture reads the buyback pool, its sibling on the same pair (reference 2).

## What is coming or partial

- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).

## Steps

1. Launch the buyback pool first, with no dev buy and no recapture.
2. Open the feeder as a second launch of the same token on USDC, naming the buyback pool’s zap vault.
3. The zap vault that buys and burns is reel-vaults' zap module; until it ships, the buyback pool has no buyer.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Community bridge

> For two communities that want a shared market: each funds the other’s reserve, and a bridge pool trades one in the other.

Page: /docs/reelbook/community-bridge

Two existing tokens grow a market together, with each side’s trading buying the other’s reserve.

Status: Set up now · partial: Zap Relay target, Arb recapture, Zap Relay source. 5 pools in 4 launches.

## The pools

### A’s reserve (launches first)

Existing token · 1 pool

- **USDC**: A’s reserve: B’s zaps only. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)

### B’s reserve (launches first)

Existing token · 1 pool

- **USDC**: B’s reserve: A’s zaps only. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)

### A’s bridge

Existing token · 2 pools · B is an established, unhooked SPL token

- **B**: The bridge pool: A quoted in B, swaps mint BRIDGE points. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwicmV3YXJkX3BpcHNbMF0iOiIxMDAwMCIsInJld2FyZF9waXBzWzFdIjoiMTAwMDAiLCJyZXdhcmRfcmF0ZSI6IjEwMDAwMDAwMDAiLCJyZXdhcmRfcnVuX3NlY3MiOiIwIn19)
- **USDC**: Feeder: 1% of buys to B’s reserve. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names B’s reserve’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

### B’s feeder

Existing token · 1 pool · names A’s vault

- **USDC**: Feeder: 1% of buys to A’s reserve. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Zap Relay source](/hooks/zap-relay-source). Names A’s reserve’s zap vault. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJ6YXAtcmVsYXktc291cmNlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiemFwX3BpcHMiOiIxMDAwMCJ9fQ)

## How the pools work together

Both communities hold existing SPL tokens without a transfer hook, so B can be a quote for A. Each reserve pool accepts buys only from the other side’s zap vault. B, as an unlisted quote, opens under the unlisted deposit cap until it is listed.

## What is coming or partial

- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Zap Relay source](/hooks/zap-relay-source) (Partial): Partial: the cut accrues on reel and is paid to the zap vault named at launch; the vault that buys the target pool is reel-vaults' zap module (coming).

## Steps

1. Check both tokens pass reel’s mint policy; neither may be a reel-launched (hooked) token.
2. Open both reserve pools first, each as an existing-token launch on USDC.
3. Open A’s bridge with its two pools, naming B’s reserve vault on the USDC feeder.
4. Open B’s feeder on USDC, naming A’s reserve vault.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Treasury desk

> For a DAO or foundation holding a large share of its own token: a managed desk and a pool where back-runs pay.

Page: /docs/reelbook/treasury-desk

The treasury supplies depth on reel’s terms and can later sell over time or bid under the market from the same place.

Status: Set up without Dev Drip (coming). 2 pools in 1 launch.

## The pools

### Launch

Existing token · 2 pools

- **SOL**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)
- **USDC**: Sandwich Guard: back-runs pay the move. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Sandwich Guard](/hooks/sandwich-guard), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInNhbmR3aWNoLWd1YXJkIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInNhbmR3aWNoLWd1YXJkIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- Launch options: Launch lock: the treasury as beneficiary

## How the pools work together

The desk’s surcharge, moved by reel’s fee keeper inside a 1% cap, pays LPs when markets move fast. Sandwich Guard charges back-runs on the USDC pool. Selling the treasury’s tokens over time (Dev Drip) and a standing bid under the market (Floor bid) sit beside the pools in reel-vaults.

## What is coming or partial

- [Dev Drip](/hooks/dev-drip) (Periphery, coming): Coming: the `escrow` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Floor bid](/hooks/floor-bid) (Partial): Partial: live in reel-vaults' orders module as a standing buy order that anyone re-prices to TWAP × (1 − offset) once per cooldown (at least 30 minutes), never past the owner's worst price. reel pools are full-range, so it is a taker order, not a single-sided LP range: it earns no LP fees and closes on its first fill.

## Steps

1. Open both boards in the builder and keep the desk’s cap at 1%.
2. Create an existing-token launch, seed both pools from the treasury and finalize.
3. Lock the launch with the treasury as beneficiary so it collects the fees.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Protocol fee share

> For a protocol that wants its stakers paid from trading: a royalty to a split and a tax to the staking program.

Page: /docs/reelbook/protocol-fee-share

Stakers are paid from on-chain trading fees at rates fixed when the pools open.

Status: Set up now · partial: Arb recapture. 2 pools in 1 launch.

## The pools

### Launch

Existing token · 2 pools

- **SOL**: Royalty to the split, a daily crown. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the stakers’ split. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImNyZWF0b3Itcm95YWx0eSIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImNyZWF0b3Itcm95YWx0eSIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Tax to the staking program. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the staking program. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)

## How the pools work together

The royalty is credited to a ledger in each swap; the USDC pool’s 1% cut each way goes to the staking program as payee. Stakers are paid by whatever the staking program does with what it receives; reel only delivers it.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Name the royalty recipient and the staking program’s account as payee.
2. Create an existing-token launch with both pools and finalize.
3. To pay several recipients from one royalty, name a Revenue Router split (reel-vaults) as the royalty recipient: its address follows from its payees and shares, so it can be named before it exists.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Fair venue

> For a high-volume token whose traders want MEV paid back: trader-first recapture, plain LP pools and a desk.

Page: /docs/reelbook/fair-venue

The trader whose swap opened a price gap gets the full 10% of the profit that closes it, and back-runs pay the move.

Status: Set up now · partial: Arb recapture. 3 pools in 1 launch.

## The pools

### Launch

Existing token · 3 pools

- **SOL**: Trader-first recapture. Blocks: [Dynamic fees](/hooks/dynamic-fees), [Sandwich Guard](/hooks/sandwich-guard), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwic2FuZHdpY2gtZ3VhcmQiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsInNhbmR3aWNoX3Nsb3RzIjoiMSIsInNhbmR3aWNoX21heF9waXBzIjoiMTAwMDAwIiwic2FuZHdpY2hfdG8iOiI1IiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwic2FuZHdpY2gtZ3VhcmQiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsInNhbmR3aWNoX3Nsb3RzIjoiMSIsInNhbmR3aWNoX21heF9waXBzIjoiMTAwMDAwIiwic2FuZHdpY2hfdG8iOiI1IiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: LP Rewards and recapture. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDT**: Desk: a managed surcharge, capped at 1%. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19)

## How the pools work together

On the SOL pool, recapture credits the gap opener’s ledger with 10% of the profit, and Sandwich Guard charges swaps that move the price back toward the slot’s open. The USDC and USDT pools pay LPs through LP Rewards and, on the desk, a managed surcharge.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Open each pool’s board; recapture on each reads a sibling through a Pyth conversion.
2. Create an existing-token launch with the three pools, seed them and finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Builder token

> For a team that builds Hook Blocks: a buyback pool, and a crown pool that runs the team’s market block.

Page: /docs/reelbook/builder-token

The team’s token trades on a pool that pays its own block’s usage fee, and a buyback pool sits ready for its share.

Status: Set up now · partial: Zap Relay target, Arb recapture, Hook Blocks Market. 2 pools in 1 launch.

## The pools

### Launch

Existing token · 2 pools

- **USDC**: Buyback pool. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Zap Relay target](/hooks/zap-relay-target). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInphcC1yZWxheS10YXJnZXQiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIn19)
- **SOL**: Runs the team’s Hook Blocks Market block. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture), [Usage fee](/hooks/usage-fee). Names the market block. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIiwidXNhZ2UtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJ1c2FnZV9waXBzIjoiNTAwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIiwidXNhZ2UtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJ1c2FnZV9waXBzIjoiNTAwMCJ9fQ)

## How the pools work together

The SOL pool installs the team’s published, admitted and bonded market block in its advisory slot; every swap pays its usage fee, split among the builder, its backers, reel and the block’s reserve. The builder’s share reaches the team’s wallet, which can fund the buyback pool’s zap vault.

## What is coming or partial

- [Zap Relay target](/hooks/zap-relay-target) (Partial): Partial: the gate is in reel, but the feeder vaults that buy are reel-vaults' zap module (coming), so until it runs nothing can buy the pool.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Hook Blocks Market](/hooks/hook-blocks-market) (Partial): Partial: publishing, admission, bonds and the usage-fee split are in the reel program, and reel-vaults' payouts module (live) pays backers. Publishing a market block needs Config.bond_mint ($REEL, later), which mainnet's Config doesn't set yet, so no block can be published, bonded or installed today and no backer has anything to claim.

## Steps

1. Publish the block with MarketPublish and bond it; it needs the admin’s admission before a pool can install it.
2. Open the SOL pool’s board, pick the usage fee up to the block’s cap and name the block.
3. Launch the buyback pool and the crown pool together, then finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Stock-hours expansion

> For any token whose holders also hold tokenized stocks: four session pools and a USDC desk.

Page: /docs/reelbook/stock-hours-expansion

LPs are paid more when the stock’s own market is closed, which is when its price is least certain.

Status: Set up now · partial: Arb recapture. 5 pools in 1 launch.

## The pools

### Launch

Existing token · 5 pools

- **Listed tokenized stock A**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock B**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock C**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **Listed tokenized stock D**: Session pool: fees follow the market’s hours. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Market-hours fee](/hooks/market-hours-fee). A listed tokenized stock, once one passes reel’s mint policy. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYXJrZXQtaG91cnMtZmVlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwiaG91cnNfcGlwc1swXSI6IjAiLCJob3Vyc19waXBzWzFdIjoiMjAwMCIsImhvdXJzX3BpcHNbMl0iOiIyMDAwIiwiaG91cnNfcGlwc1szXSI6IjQwMDAiLCJob3Vyc19waXBzWzRdIjoiMTAwMDAiLCJob3Vyc19yYW1wX3NlY3NbMF0iOiIxODAwIiwiaG91cnNfcmFtcF9zZWNzWzFdIjoiOTAwIiwiaG91cnNfZmxhZ3MiOiIxIn19)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)

## How the pools work together

Each session pool charges by the US market’s session: nothing in regular hours, 0.2% pre-market and after hours, 0.4% overnight and 1% when closed, all to LPs. A Pausable stock mint stops swaps and withdrawals on its pool while it is paused.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Check each stock passes reel’s mint policy and is listed; see [Quote tokens and Token-2022 risks](/docs/concepts/quote-tokens).
2. Open the session pool’s board in the builder for each stock.
3. Create an existing-token launch with the five pools and finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Revival kit

> For a quiet token whose community wants a second run: a crown pool with a burn, a points pool and a sell tax.

Page: /docs/reelbook/revival-kit

A daily contest and points give the community a reason to return, and the sell tax funds the team doing the work.

Status: Set up now · partial: Arb recapture, Floor bid. 3 pools in 1 launch.

## The pools

### Launch

Existing token · 3 pools

- **SOL**: Crown pool: a daily round. Blocks: [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXV0by1idXJuIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImJ1cm5fYnBzIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwia290cF9wb3RfYnBzIjoiMjUwMCIsImtvdHBfcm91bmRfc2VjcyI6Ijg2NDAwIiwia290cF9yZWxlYXNlX2JwcyI6IjUwMDAiLCJrb3RwX3BvZGl1bSI6IjEiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **USDC**: Points: swaps mint points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **USDT**: A 3% sell tax to the team’s treasury. Blocks: [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the team’s treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsImN1dF9idXlfcGlwcyI6IjAiLCJjdXRfc2VsbF9waXBzIjoiMzAwMDAiLCJjdXRfdG8iOiI0IiwiY3V0X3NlbGxfdG8iOiI0IiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsImN1dF9idXlfcGlwcyI6IjAiLCJjdXRfc2VsbF9waXBzIjoiMzAwMDAiLCJjdXRfdG8iOiI0IiwiY3V0X3NlbGxfdG8iOiI0IiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)

## How the pools work together

The SOL pool burns 1% of each buy’s output and runs a daily crown round. The USDC pool mints points to traders, and the USDT pool takes 3% of sells for the team. A standing floor bid under the market runs beside the pools in reel-vaults.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Floor bid](/hooks/floor-bid) (Partial): Partial: live in reel-vaults' orders module as a standing buy order that anyone re-prices to TWAP × (1 − offset) once per cooldown (at least 30 minutes), never past the owner's worst price. reel pools are full-range, so it is a taker order, not a single-sided LP range: it earns no LP fees and closes on its first fill.

## Steps

1. Open each pool’s board; name the least buy that counts, the points mint and the team’s treasury as payee.
2. Create an existing-token launch with the three pools, seed them and finalize.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Platform default family

> For an app or launch platform that wants a house style: a royalty split with the platform and a tax to it.

Page: /docs/reelbook/platform-default-family

Every launch from the platform carries the same blocks, from one saved hook under the platform’s own root.

Status: Set up now · partial: Arb recapture. 2 pools in 1 launch.

## The pools

### Each launch on the platform

Existing token · 2 pools · under the platform’s owned root

- **SOL**: Royalty shared with the platform. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the creator and platform split. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImNyZWF0b3Itcm95YWx0eSIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImNyZWF0b3Itcm95YWx0eSIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Tax to the platform. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the platform. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)

## How the pools work together

The platform saves the two boards as saved hooks and opens an owned root that allows only their blocks. Pools opened under the root copy its integrator, so a listed integrator earns its rate of reel’s cut on every swap.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.

## Steps

1. Save both boards as saved hooks (HookSave) and open a root that names them (RootCreate).
2. Ask for an integrator listing, then set it as the root’s integrator payee.
3. Each creator launches under the root; the pools must conform to the saved hooks.
4. To share the royalty between creator and platform, name a Revenue Router split (reel-vaults) as the royalty recipient.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Fair launch, locked

> Early bots pay the LPs, and LPs who lock their positions earn more on top.

Page: /docs/reelbook/fair-launch-locked

The bot-resistant launch, plus a reward budget for LPs who commit for weeks.

Status: Set up without Dev Drip, LP Time-Lock Boost (coming). 3 pools in 1 launch.

## The pools

### Launch

New token · 3 pools · split 60/30/10 · keep at most 2% · liquidity locked 1,200,000 s

- **SOL**: Guarded launch pool, with a lock boost. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Sandwich Guard](/hooks/sandwich-guard), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzYW5kd2ljaC1ndWFyZCIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJzYW5kd2ljaC1ndWFyZCIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwiYnVybl9icHMiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJzYW5kd2ljaF9zbG90cyI6IjEiLCJzYW5kd2ljaF9tYXhfcGlwcyI6IjEwMDAwMCIsInNhbmR3aWNoX3RvIjoiNSIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDC**: No sells in the first minute. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Buy/Sell Block](/hooks/buy-sell-block), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJidXktc2VsbC1ibG9jayIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJndWFyZF9zZWNzIjoiNjAwIiwic25pcGVfdGF4X3BpcHMiOiIxMDAwMDAiLCJzbmlwZV9mbG9vcl9waXBzIjoiMCIsInNuaXBlX2RlY2F5X3NlY3MiOiIzMDAiLCJzbmlwZV9jdXJ2ZSI6IjAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwiYnV5X3BhdXNlX3NlY3MiOiIwIiwic2VsbF9sb2NrX3NlY3MiOiI2MCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIn19)
- **USDT**: Launch fee that decays over the first hour. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjM2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjIwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjM2MDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImxwLXJld2FyZHMiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZ3VhcmRfc2VjcyI6IjM2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjIwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjM2MDAiLCJzbmlwZV9jdXJ2ZSI6IjEiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)

## How the pools work together

The pools run as in the bot-resistant fair launch. Beside the SOL pool, LPs can stake positions in the LP Time-Lock Boost for 1 to 104 weeks for boosted rewards once its reel-vaults module ships. Staked positions keep collecting their fees either way.

## What is coming or partial

- [Dev Drip](/hooks/dev-drip) (Periphery, coming): Coming: the `escrow` module is built and tested in reel-vaults' source, not in the deployed build yet. It arrives with an upgrade at the same address.
- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- LP Time-Lock Boost: locked full-range positions on the SOL pool earn extra rewards in wSOL (reel-vaults) (coming).

## Steps

1. Open each pool’s board and set the per-slot buy cap.
2. Create the launch with weights 60/30/10, 2% retention and a 1,200,000 s liquidity lock, then finalize.
3. Fund the boost once its reel-vaults module ships. Dev Drip for team tokens is coming too.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: DAO commons, locked

> A DAO whose trading tax rewards long-term LPs: DAO commons with a lock boost on the main pool.

Page: /docs/reelbook/dao-commons-locked

The DAO turns part of its income into rewards for LPs who lock, so its main pool keeps depth.

Status: Set up without LP Time-Lock Boost (coming). 4 pools in 1 launch.

## The pools

### Launch

New token · 4 pools · split 50/30/10/10 · liquidity locked 1,200,000 s

- **SOL**: Royalty to the DAO, with a lock boost. Blocks: [Anti-Snipe](/hooks/anti-snipe), [Dynamic fees](/hooks/dynamic-fees), [Auto Burn](/hooks/auto-burn), [LP Rewards](/hooks/lp-rewards), [Creator royalty](/hooks/creator-royalty), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). Royalty to: the DAO treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiYW50aS1zbmlwZSIsImR5bmFtaWMtZmVlcyIsImF1dG8tYnVybiIsImxwLXJld2FyZHMiLCJjcmVhdG9yLXJveWFsdHkiLCJraW5nLW9mLXRoZS1wb29sIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImd1YXJkX3NlY3MiOiI2MDAiLCJzbmlwZV90YXhfcGlwcyI6IjEwMDAwMCIsInNuaXBlX2Zsb29yX3BpcHMiOiIwIiwic25pcGVfZGVjYXlfc2VjcyI6IjMwMCIsInNuaXBlX2N1cnZlIjoiMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJidXJuX2JwcyI6IjEwMCIsImxwX2JwcyI6IjIwMCIsInJveWFsdHlfYnBzIjoiMTAwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Tax to the DAO treasury. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Swap Cut](/hooks/swap-cut), [Arb recapture](/hooks/arb-recapture). Payee: the DAO treasury. [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsInN3YXAtY3V0IiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJjdXRfYnV5X3BpcHMiOiIxMDAwMCIsImN1dF9zZWxsX3BpcHMiOiIxMDAwMCIsImN1dF90byI6IjQiLCJjdXRfc2VsbF90byI6IjQiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **USDT**: Points: swaps mint governance points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **An established SPL token**: Desk: a managed surcharge, capped at 1%. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoibiIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImxwX2JwcyI6IjIwMCIsInJlY2FwX2NhcHR1cmVfYnBzIjoiNzUwMCIsInJlY2FwX3RyYWRlcl9icHMiOiIxMDAwIiwicmVjYXBfbWluX2dhcF9icHMiOiIzMCIsInJlbGVhc2Vfc2VjcyI6IjM2MDAiLCJyZWNhcF9yZWYiOiIzIiwicmVjYXBfbWF4X2FnZSI6IjYwIiwibWFuYWdlZF9jYXBfcGlwcyI6IjEwMDAwIiwibWFuYWdlZF9zdGFydF9waXBzIjoiNTAwIiwibWFuYWdlZF9wcmVtaXVtWzBdIjoiMCIsIm1hbmFnZWRfcHJlbWl1bVsxXSI6IjAiLCJtYW5hZ2VkX21heF9zdGVwIjoiMTAwMCIsIm1hbmFnZWRfbWluX2ludGVydmFsIjoiNjAiLCJtYW5hZ2VkX21heF90dGwiOiIzNjAwIn19)

## How the pools work together

The pools match DAO commons. The DAO funds an LP Time-Lock Boost on the SOL pool in USDC once its reel-vaults module ships, paying LPs who lock for weeks.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- [Floor bid](/hooks/floor-bid) (Partial): Partial: live in reel-vaults' orders module as a standing buy order that anyone re-prices to TWAP × (1 − offset) once per cooldown (at least 30 minutes), never past the owner's worst price. reel pools are full-range, so it is a taker order, not a single-sided LP range: it earns no LP fees and closes on its first fill.
- LP Time-Lock Boost: locked full-range positions on the SOL pool earn extra rewards in USDC (reel-vaults) (coming).

## Steps

1. Follow the DAO commons steps for the four pools.
2. Fund the boost from the DAO treasury once it ships.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: Liquidity home, locked

> For an established token that wants outside LPs to move in and stay: Liquidity home with a lock boost.

Page: /docs/reelbook/liquidity-home-locked

LPs who lock earn a boost on the points pool on top of fees and recapture.

Status: Set up without LP Time-Lock Boost (coming). 4 pools in 1 launch.

## The pools

### Launch

Existing token · 4 pools

- **SOL**: Crown pool: a daily round. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [King of the Pool](/hooks/king-of-the-pool), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImtpbmctb2YtdGhlLXBvb2wiLCJhcmItcmVjYXB0dXJlIl0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwiZHluX21heF9waXBzIjoiMjMwMDAiLCJkeW5fc2VucyI6IjUiLCJkeW5fd2luZG93X3NlY3MiOiIzMCIsImR5bl9yZXNldF9zZWNzIjoiMTIwIiwiZHluX2NhcnJ5X2JwcyI6Ijc1MDAiLCJkeW5fbW92ZV9icHMiOiIyMDAiLCJkeW5fZGl2aXNvciI6IjEwMCIsImxwX2JwcyI6IjIwMCIsImtvdHBfcG90X2JwcyI6IjI1MDAiLCJrb3RwX3JvdW5kX3NlY3MiOiI4NjQwMCIsImtvdHBfcmVsZWFzZV9icHMiOiI1MDAwIiwia290cF9wb2RpdW0iOiIxIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)
- **USDC**: Desk: a managed surcharge, capped at 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Managed fee](/hooks/managed-fee). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJtYW5hZ2VkLWZlZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIzMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjIzMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCIsIm1hbmFnZWRfY2FwX3BpcHMiOiIxMDAwMCIsIm1hbmFnZWRfc3RhcnRfcGlwcyI6IjUwMCIsIm1hbmFnZWRfcHJlbWl1bVswXSI6IjAiLCJtYW5hZ2VkX3ByZW1pdW1bMV0iOiIwIiwibWFuYWdlZF9tYXhfc3RlcCI6IjEwMDAiLCJtYW5hZ2VkX21pbl9pbnRlcnZhbCI6IjYwIiwibWFuYWdlZF9tYXhfdHRsIjoiMzYwMCJ9fQ)
- **USDT**: Points: swaps mint points. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture), [Swap Reward Mint](/hooks/swap-reward-mint). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiLCJzd2FwLXJld2FyZC1taW50Il0sImsiOnsiYmFzZV9mZWVfcGlwcyI6IjMwMDAiLCJwcm90b2NvbF9zaGFyZV9icHMiOiIyMDAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjEwMDAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAiLCJyZXdhcmRfcGlwc1swXSI6IjEwMDAwIiwicmV3YXJkX3BpcHNbMV0iOiIxMDAwMCIsInJld2FyZF9yYXRlIjoiMTAwMDAwMDAwMCIsInJld2FyZF9ydW5fc2VjcyI6IjAifX0)
- **An established SPL token**: Lean: LP Rewards and recapture only. Blocks: [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJscF9icHMiOiIyMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMTAwMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)

## How the pools work together

The pools match Liquidity home. The project funds an LP Time-Lock Boost on the USDT pool, paid in the project’s own token, once its reel-vaults module ships.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- LP Time-Lock Boost: locked full-range positions on the USDT pool earn extra rewards in the project’s token (reel-vaults) (coming).

## Steps

1. Follow the Liquidity home steps for the four pools.
2. Fund the boost once it ships.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.

# ReelBook: LP-first venue

> For a token that wants its pools to pay LPs every way they can, with more for LPs who lock.

Page: /docs/reelbook/lp-first-venue

Fees climb from 0.1% to 1% on big moves, and recapture goes to LPs rather than gap openers.

Status: Set up without LP Time-Lock Boost (coming). 2 pools in 1 launch.

## The pools

### Launch

Existing token · 2 pools

- **USDT**: Fees 0.1% to 1%. Blocks: [Dynamic fees](/hooks/dynamic-fees), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIxMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjEwMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwiYXJiLXJlY2FwdHVyZSJdLCJrIjp7ImJhc2VfZmVlX3BpcHMiOiIxMDAwIiwicHJvdG9jb2xfc2hhcmVfYnBzIjoiMjAwMCIsImR5bl9tYXhfcGlwcyI6IjEwMDAwIiwiZHluX3NlbnMiOiI1IiwiZHluX3dpbmRvd19zZWNzIjoiMzAiLCJkeW5fcmVzZXRfc2VjcyI6IjEyMCIsImR5bl9jYXJyeV9icHMiOiI3NTAwIiwiZHluX21vdmVfYnBzIjoiMjAwIiwiZHluX2Rpdmlzb3IiOiIxMDAiLCJyZWNhcF9jYXB0dXJlX2JwcyI6Ijc1MDAiLCJyZWNhcF90cmFkZXJfYnBzIjoiMCIsInJlY2FwX21pbl9nYXBfYnBzIjoiMzAiLCJyZWxlYXNlX3NlY3MiOiIzNjAwIiwicmVjYXBfcmVmIjoiMyIsInJlY2FwX21heF9hZ2UiOiI2MCJ9fQ)
- **SOL**: LP-first recapture. Blocks: [Dynamic fees](/hooks/dynamic-fees), [LP Rewards](/hooks/lp-rewards), [Arb recapture](/hooks/arb-recapture). [Open in the builder](/builder?h=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0) · [Open the launch floor](/launch?draft=eyJ2IjoxLCJ0IjoiZSIsImIiOlsiZHluYW1pYy1mZWVzIiwibHAtcmV3YXJkcyIsImFyYi1yZWNhcHR1cmUiXSwiayI6eyJiYXNlX2ZlZV9waXBzIjoiMzAwMCIsInByb3RvY29sX3NoYXJlX2JwcyI6IjIwMDAiLCJkeW5fbWF4X3BpcHMiOiIyMzAwMCIsImR5bl9zZW5zIjoiNSIsImR5bl93aW5kb3dfc2VjcyI6IjMwIiwiZHluX3Jlc2V0X3NlY3MiOiIxMjAiLCJkeW5fY2FycnlfYnBzIjoiNzUwMCIsImR5bl9tb3ZlX2JwcyI6IjIwMCIsImR5bl9kaXZpc29yIjoiMTAwIiwibHBfYnBzIjoiMjAwIiwicmVjYXBfY2FwdHVyZV9icHMiOiI3NTAwIiwicmVjYXBfdHJhZGVyX2JwcyI6IjAiLCJyZWNhcF9taW5fZ2FwX2JwcyI6IjMwIiwicmVsZWFzZV9zZWNzIjoiMzYwMCIsInJlY2FwX3JlZiI6IjMiLCJyZWNhcF9tYXhfYWdlIjoiNjAifX0)

## How the pools work together

Neither pool pays the gap opener: the opener’s share of recapture goes to LPs through the stream. The USDT pool’s dynamic fee runs from its 0.1% base to a 1% ceiling.

## What is coming or partial

- [Arb recapture](/hooks/arb-recapture) (Partial): Partial: Solana has no in-swap executor callback like Uniswap v4's, so reel charges the swap that closes a gap against a reference price instead of running a partner's arbitrage (PROGRAM.md §12). A stale or missing reference skips it.
- LP Time-Lock Boost: locked full-range positions on the USDT pool earn extra rewards in the project’s token (reel-vaults) (coming).

## Steps

1. Open both boards; check the trader share of recapture is 0 on each.
2. Create an existing-token launch with the two pools and finalize.
3. Fund the boost on the USDT pool once its reel-vaults module ships.

Sample settings, not live data. Every value is a default or a recipe’s choice, not a reading.