Docs · Revenue tokens
What you can tokenize
ComingThe 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.
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.
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 (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.