First-block cap
For the first N blocks after the pool opens, per-wallet size is capped. Snipers can still buy — they cannot buy the whole book. The overflow fee goes to the pool, not to a bot.
A hook is not something watching the pool from outside — the PoolManager calls it during execution. If the rule reverts, the swap does not happen. That is the whole difference between a rule and a preference, and it is why this design is possible now and was not before.
Literal call order inside one swap(). There is no window between the check and the trade for anything to slip through, because they are the same transaction.
The pool keeps a hook's permissions in the low 14 bits of its own contract address. The PoolManager reads the address to learn which callbacks it may invoke — it never asks the contract to describe itself, and a contract cannot lie about a number that was fixed when it was deployed.
So deploying a hook means mining a salt until the address ends in the right bits. A pool cannot quietly gain a capability it was not deployed with, and what you audit at launch is what runs for the life of the pool.
For the first N blocks after the pool opens, per-wallet size is capped. Snipers can still buy — they cannot buy the whole book. The overflow fee goes to the pool, not to a bot.
The fee is priced per swap against realized volatility. Calm markets stay cheap. Violent ones pay liquidity providers for the risk they are actually carrying, instead of charging 3am prices during a 40% candle.
Deposit one token. The hook derives the range from current depth and places it. No counterpart, no manual tick math, no leftover dust to sweep up afterwards.
A slice of every fee is routed into a standing bid below spot. Fees stop being a receipt and start being a floor that grows with volume — and it only grows while the pool actually trades.
Liquidity cannot leave before the unlock block. Not a multisig, not a pledge, not a screenshot of a locker — a revert. The pool refuses the transaction.
Swaps that shove price outside a band against the oracle in a single block are rejected. It cuts the sandwich without closing the market.