Your LPs shouldn't pay the dividend.
When a tokenized stock pays a dividend or splits, nobody's balance moves — only its value does. Every pool on the chain keeps quoting yesterday's price until somebody takes the difference, and that somebody is never the LP. Siren is the guard that notices first, and it is silent until it isn't.
observed on-chain Two rebases, zero balance movement, both announced ahead of time. Neither guarded by any venue.
Most days it does nothing. That is the whole point.
Nobody wakes up wanting corporate-action defence. You want it for the same reason there is a smoke detector in a kitchen that has never caught fire: because the day it matters, you will not be given notice, and by then the decision is already made for you.
You don't choose the day
Every tokenized equity on this chain can pay a dividend or split, on a calendar set by a company that has never heard of your pool. You cannot opt out of that schedule, and you are not consulted before the multiplier moves.
The cost of being late is not gradual
A dividend costs an LP $10.26 on a $125k pool, which is genuinely nothing. A 4-for-1 split costs $124,249 of the same pool in a single transaction. There is no middle: loss scales with the square of the multiplier jump.
The daily work is one read
The chain announces it. effectiveAt() is a public timestamp, visible before the action lands. Someone has to actually look, every day, at all of them. That is tedious, unpaid, and exactly the kind of job a human quietly stops doing in week three.
If you provide liquidity to a tokenized equity pool, this runs in the background and you should expect to forget it exists. On the days an action lands, it charges the arbitrageur instead of you. On every other day it should cost you nothing and say nothing — a guard that charges when there is nothing to defend is just a tax.
Every corporate action is announced before it lands.
ERC-8056 publishes effectiveAt() and newUIMultiplier() ahead of the step. That is a scheduled, publicly visible discontinuity — the easiest thing in the world to defend against, and nobody does.
Three ways a tokenized-equity pool bleeds.
The silent rebase
A dividend lands. Raw balances are byte-identical; a global uiMultiplier() moved instead. Every AMM prices from balanceOf(), so the curve keeps quoting yesterday's price until someone takes the difference.
CCL, block 50,955,407. Real, but small in LP terms: the arber only captures the rebalancing divergence, not the dividend.
The split
Same mechanism, different magnitude. Loss scales with the square of the multiplier jump, so a 4-for-1 is not 20× a dividend — it is four orders of magnitude worse.
Out of a $125,000 pool, in one transaction. Where graduated liquidity is locked permanently, the LP cannot step aside.
The advisory pause
Issuers expose oraclePaused() during corporate actions. Robinhood's own docs state the flag is advisory and not enforced on-chain. A paused feed still returns a price, and every venue keeps trading on it.
The three-leg scan shows the widest feed-versus-spot divergence currently on the chain, unguarded.
From announced action to repaid LP.
Four callbacks. The pool is never made un-arbable — the arb is made to pay the LP for the privilege.
Arm before the step
A keeper reads effectiveAt() and newUIMultiplier() and arms the guard inside the pre-action window. This is the one thing the surcharge cannot do for itself, and the only thing a bond can usefully price.
Measure the step, not the price
On the next swap the hook reads the multiplier itself and sizes the discontinuity against the pool's own reserves. The surcharge tracks the size of the step, so a 0.21% dividend is quoted an order of magnitude below a 2.1% one.
Charge the extracting direction
The surcharge applies to the side taking value out, capped at 20% of flow, and settles to the LPs. Trades in the harmless direction pay the ordinary fee. When the window closes the budget expires and the pool goes back to normal.
Why not auction the right to rebalance?
We designed that, priced it against our own simulator, and it lost in every scenario including the one it was built for. The surcharge is levied on the arber's flow; an auction can only ever extract their profit, because nobody rationally bids more than they expect to make. On the 4-for-1 the surcharge collects roughly 2.0× the most any bidder would offer.
What a token can actually price
Every number on this site assumes the pre-action window fired. If no keeper is watching, the guard is inert and the LP eats the full unguarded loss. So a keeper posts a bond and is slashed to the LPs of any pool where it missed an announced window. The floor is not a governance dial — it falls out of the simulation at $56,715 per guarded pool.
One dial, and it is stated on every guard's card.
A guard is a ceiling the surcharge may never exceed. Everything else follows from it, so each card shows what that setting actually recovers — on a dividend, and on the split it cannot fully cover.
Questions
A Uniswap v4 hook attached to one pool. It reads the token's ERC-8056 state, and when an announced corporate action is inside its window it quotes a surcharge against whichever direction is extracting value. The surcharge settles to the LPs. Outside a window it does nothing at all.
No, and it has no way to. The surcharge is an increase to the pool's own fee for the duration of a window; it accrues to the pool, not to an address of ours. There is no custody, no treasury of ours in the path, and no version of this design that routes the surcharge anywhere but the LPs.
Because the chain announces an action but nothing forces anybody to read the announcement. Arming the guard inside the pre-action window is an off-chain read, and if nobody does it the guard is inert. That is the single failure the surcharge cannot price, which is why it is the thing the bond is for.
Nothing. No surcharge, no extra gas on the swap path beyond the callback, no change to quoting. The board above will say that nothing is announced, which is what it says on almost every day. A guard that charges when there is nothing to defend is just a tax.
Partly, and the number is on the proof table rather than in this answer: at a 4-for-1 the surcharge clamps at its ceiling and recovers 45.6%. Stated plainly because it matters — split defence rests on the pre-action window firing. The surcharge is the backstop for actions that arrive unannounced, not a substitute for being awake.
No. It compiles clean, passes its fork tests against real v4-core bytecode, and models the economics exactly. That is not an audit, and the hook address still needs salt-mining so its low bits encode the permission flags. The limits page lists this and four other things we would want a reader to distrust.
Not yet, and the page says so at the top of the docs. Chain 4663 has the equities but no Uniswap v4 deployment, so there is nothing to attach a hook to. The guard is proven on an Ethereum mainnet fork against the canonical PoolManager with a faithful ERC-8056 mock. Both halves are real; they are not real in the same place.
Price the discontinuity. Keep the LP.
The guard is not live yet: chain 4663 has the equities but no Uniswap v4 to attach to. When that changes, the pools that knew about this first are the ones that get guarded first.