Uniswap v4 hook · ERC-8056 · chain 4663

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.

23tokens watched, every page load
3legs cross-checked per token
20%ceiling the surcharge can never exceed
0claim Siren has on the surcharge
Why this matters on an ordinary day

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.

01

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.

02

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.

03

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.

Live · ex-dividend watch

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.

Full board →
Reading chain 4663…
Tokenized equities on chain 4663 and any announced corporate action
The exposure

Three ways a tokenized-equity pool bleeds.

01

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.

measured 214.86 bps

CCL, block 50,955,407. Real, but small in LP terms: the arber only captures the rebalancing divergence, not the dividend.

02

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.

simulated $124,624 extracted

Out of a $125,000 pool, in one transaction. Where graduated liquidity is locked permanently, the LP cannot step aside.

03

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.

live on the board

The three-leg scan shows the widest feed-versus-spot divergence currently on the chain, unguarded.

How it works

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.

1

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.

2

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.

3

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.

a tax on gross beats a tax on net

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.

Move the slider and watch it fail →

the bond, not the auction

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.

How the bond is sized →

The guards

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.

View all

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.