Docs · Concepts
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
TransferHookpointing 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
PermanentDelegateon 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
- 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 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.