Solana · 13 October 2025 · verified on-chain
For four years, every token on Solana launched into a market that could only do one thing: swap. Then a wallet minted a token at 07:01 in the morning and, twenty-two minutes later, opened it a market that could think. Nothing had ever been born that way before.
On Ethereum, Uniswap v4 introduced hooks in 2025 — the idea that a liquidity pool could call out to a separate program at fixed moments in its life, and let that program change what happens. A pool stopped being a fixed machine and became something you could extend.
Solana had nothing like it. Raydium, Orca, Lifinity, Meteora — every major venue going back to 2021 was a closed box. You could list a token on them. You could not teach them anything. A survey of 43 Solana AMM and DEX programs finds not one with a pool-level hook before May 2025.
Saros deploys a bin-based market maker with a field on every pool account called
hook — an optional pointer to another program — and a matching interface with
the full Uniswap v4 callback surface:
before_swap after_swap when someone trades before_mint after_mint when liquidity is added before_burn after_burn when liquidity is removed
This is the v4 pattern, arriving on Solana. The pool holds the hook's address; the AMM stops partway through a trade and calls it. A day later the first hook implementation goes live — a rewarder, built to pay liquidity providers.
Then, for seven weeks, nobody uses it.
Wallet HM9XRfj4… opens a JUP/wSOL market and attaches a hook to it. It is the
first pool on Solana ever to carry one.
The hook pays liquidity providers in JUP itself, and the band is severe — only liquidity sitting within two bins of the live price earns anything at all.
orange = live price · teal = earning · grey = earning nothing
A different operator opens PENGU/USDC with a far more generous setup — rewards in USDC, spread across a thirty-one bin band so liquidity keeps earning as the price drifts. This is the pool that puts hooks to work: 484 swaps, each one stopping to call the hook.
a wide band — liquidity keeps earning as price moves
Seven more follow through the autumn: SAROS, USDG, PayPal USD, USDT, USD1. Real venues, real volume. Across all twelve hooked pools, 7,053 swaps — and 6,947 of them call their hook.
But every one of these is the same shape. A token that already existed, given a smarter market afterwards. The hook is something that happened to them.
Saros is a bin market: liquidity sits in discrete price steps, and exactly one bin is active at the current price. Each hooked pool gets its own rewarder instance, holding five numbers:
reward_token_mint what it pays out hook_reserve where the rewards are held rewards_per_second the drip rate delta_bin_a .. delta_bin_b how far from the price you can sit end_time when it stops
before_swap has to existA swap moves the active bin. The instant the price shifts, a different set of positions is inside the earning band. So the pool must call the hook before the trade settles, to close the books under the old price. The hook is not decoration — the reward math is wrong without it.
At 07:01:01 UTC, HM9XRfj4… — the same wallet that opened the first hooked pool
in July — runs InitializeMint and creates a token that has never existed before.
Twenty-two minutes later, it opens that token a hooked pool.
No listing. No prior market. No history to retrofit. The token and its hooked market are a single act — the first time on Solana a token was created for a hook rather than fitted with one.
And it is configured like nothing before it. The pool pays rewards in the token itself, and the earning band collapses to a single bin. Not two either side, like JUP. Not fifteen, like PENGU. One. Sit exactly on the price, or earn nothing.
the tightest band the system allows — one bin, nothing else
The reward reserve was funded to the second:
pool created 2025-10-13 emissions end 2026-02-06 116 days 116 days x 1000 units/sec = 10.0136 tokens reserve funded with = 10 tokens
Ten tokens, released at a millionth of a token per second, payable only to liquidity standing exactly on the price. The window ran one hundred and sixteen days and closed.
Not one was ever claimed. To earn them you had to provide liquidity in a single bin of a market nobody was trading — and nobody ever was. The pool recorded zero swaps for nine and a half months. The reserve still holds all ten, stranded behind a schedule that expired in February.
Of 100,000,000 supply, only twenty-one ever left the deployer's wallet: eleven placed into the pool as liquidity, ten sealed into the hook as rewards. Everything else has sat untouched since the morning it was minted.
Nine and a half months after it opened, the pool processed its first swap. This is what the chain recorded — the market stopping mid-trade to call the hook, and the tokens moving only once it returned:
1qbkdrr3z4ryLA7pZykqxvxWPoeifcVKo6ZG9CfkvVE invoke [1] ← the market
Instruction: Swap
mdmavMvJpF4ZcLJNg6VSjuKVMiBo5uKwERTg1ZB9yUH invoke [2] ← the hook fires
Instruction: BeforeSwap
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]
Instruction: TransferChecked ← tokens move after
Not a token extension. Not a wrapper. A market calling a separate program at a named point in the life of a trade — the thing Solana could not do before May 2025, running on the first token ever born into it.
| When | What happened |
|---|---|
| 2021 – 2023 | Raydium, Orca, Lifinity, Meteora — no pool-level hooks anywhere on Solana |
| 2025-05-13 | Saros ships the liquidity book and hook interface |
| 2025-05-14 | The rewarder hook goes live |
| 2025-07-01 | First hooked pool ever — JUP / wSOL |
| 2025-07-18 | PENGU / USDC — hooks run at volume |
| 2025-10-13 | First token minted for a hook pool — 22 minutes from mint to market |
| 2026-02-06 | Its reward window closes with all ten tokens unclaimed |
| 2026-05-11 | Doppler brings hooks to Solana, a year late |
| 2026-06-09 | Patcha adds v4 hooks to Orca and Raydium |