Uniswap v4 hook · Base Sepolia

Your pool should not
pay for the split.

A corporate action reprices an asset at a known moment, by a known factor, with nobody trading. Nothing lands in the pool to tell it, so it keeps quoting yesterday's number. The curve stays wrong for exactly as long as nobody looks.

Ambrya is the hook that looks.

Uniswap v4 hook Base Sepolia · testnet Open ↗

Nothing here is dressed up.

No token sale. No TVL to quote. No audit yet, because there is no mainnet contract to audit. This is the real state of it.

v4
Hook version
84532
Base Sepolia
audit
Gate for mainnet liquidity

Deployment registry

Nothing is live yet.

not deployed

When the token exists, its address appears here and nowhere else first. Until this box shows one, any contract claiming to be Ambrya is not ours. Check this page before you buy anything.

Quiet for weeks, then not

Nothing happens for a month.
Then everything happens in one block.

01

You do not pick the date

The issuer sets the calendar, and nobody asks the pool. A record date is published weeks out, lands on a Tuesday morning, and the curve has no idea any of it happened.

Decided by The issuer
02

The cost is not gradual

A dividend moves the quote by a few basis points and barely registers. A four for one split divides the fair price by four in a single step. Same mechanism, four orders of magnitude apart.

Simulated −$250,000
03

Somebody has to be watching

The information is public and free. It just has to be read at the right second by something that can act on it before the pool settles the next swap. People stop doing that in week three.

Window One block

If you provide liquidity to a pool holding a tokenized equity, this runs underneath and you should expect to forget it exists. On the handful of days a year when an action lands, it charges the arbitrageur instead of you. On every other day it should cost you nothing and say nothing.

The ledger

Three columns,
one corporate action.

Armed · nothing scheduled on testnet 10,000 tokens · $1,000,000 · ratio 4:1
  Before Unguarded With the hook
Token reserves10,00020,00040,000
Stablecoin reserves$1,000,000$500,000$1,000,000
Quoted price$100.00$25.00$25.00
Repriced byThe first tradeThe hook, at the event
To the pool$0$237,500

95% of what the hook recovers goes to the liquidity providers and 5% to the protocol. The numbers above are arithmetic, not a projection, and you can walk them yourself in the note.

The hook

From the record date
to the pool's balance.

Three calls, inside the lifecycle, in the few thousand gas between a swap arriving and the pool settling it.

feed.pending()

Read the calendar

The hook asks an attested feed whether this pool has an action pending. Splits and dividends are scheduled, so this is a lookup rather than a prediction.

_reprice()

Move the curve first

At the event the pool goes to the post action price in one atomic step, so the first swap of the block meets a fair market instead of a stale one.

_settleResidual()

Sell what is left

Whatever gap survives goes to a sealed auction. Somebody still takes the trade, and the winning bid lands in the pool instead of in their wallet.

The entry point

One function, one block,
one decision.

AmbryaHook.sol solidity 0.8.26 · v4-core
// runs before the pool settles the swap in front of it
function beforeSwap(
    address sender,
    PoolKey calldata key,
    IPoolManager.SwapParams calldata params,
    bytes calldata hookData
) external override returns (bytes4, BeforeSwapDelta, uint24) {

    Action memory a = feed.pending(key.toId());

    if (a.recordDate != 0 && a.recordDate <= block.timestamp) {
        _reprice(key, a.numerator, a.denominator);   // curve moves first
        _settleResidual(key, a.auctionId);           // the rest goes to auction
    }

    return (BaseHook.beforeSwap.selector, ZERO_DELTA, _fee(key));
}

Illustrative, not the deployed source. There is no mainnet deployment to point at yet, and this page will say so until there is.

Fee controller

The fee is a function,
not a constant.

Ambrya runs a dynamic fee onchain. When volatility climbs the fee climbs with it, which is exactly when uninformed liquidity gets picked off. When the market calms down the fee drops back, so routers keep choosing the pool.

Auctioned, not raced

Bidders compete for the right to take the gap. The winning bid lands in the pool instead of with whoever pays the most for block position.

Routed in one transaction

Arbitrum, HyperEVM, Base and Polygon are the target set, with reach into HyperCore and connected lending markets. None of it is on mainnet yet.

Fee against volatility

Volatility Swap fee
60% 30% 0% 14 bps t−12h now

Integrations

Your launch.
Liquidity that holds.

95% to LPs

Fee only pools keep 95% of swap fees with the liquidity providers and send 5% to the protocol.

Pool options for your launch

Legacy V2 and concentrated V3 pools on every supported chain, with DLMM available on select networks.

Your launch. Your rules.

You keep control of your launch and your graduation mechanics, and we stay on the integration with you.

Target networks Arbitrum HyperEVM Base Polygon

Questions we actually get

What is xAMB?

xAMB carries the votes. It borrows the useful half of vote escrow, which is that long term holders steer emissions, and drops the half that traps you for four years. Balances stay liquid and the weight comes from participation instead of sentence length.

What is f33?

f33 is xAMB you can still move. It votes for you each epoch and folds the rewards back into the position, so you are not logging in every Thursday to click a gauge. On HyperEVM the same asset trades as HyperAmbrya.

How do dynamic fees work?

The fee is a function, not a constant. The controller reads realised volatility from the pool itself and raises the fee while the market is moving, which is exactly when uninformed liquidity gets picked off. When variance drops, so does the fee, so routers keep choosing the pool.

Which chains does Ambrya support?

The target set is Arbitrum, HyperEVM, Base and Polygon, with routing that can reach HyperCore and connected lending markets inside the same transaction. None of it is on mainnet yet.

How does the auction work?

The gap a repricing event opens is auctioned instead of raced. Bidders compete for the right to take it, the winning bid lands in the pool, and the value ends up with the capital that created the opportunity rather than with whoever pays the most for block position.

Has Ambrya been audited?

Not yet, and there is nothing deployed to audit. When there is, external review happens before a single unit of mainnet liquidity is accepted, and the report goes up next to the docs. It is a gate, not a badge.

Point a pool at it.

Connect a wallet, add liquidity or stake xAMB, and earn from every trade the protocol routes.

Open the app →
← Back to Ambrya Launch App ↗ Protocol note · 12 Sep 2026

The corporate action problem

Who pays for a stock split

A tokenized share inherits every corporate action of the asset underneath it. The pool holding that share does not. The gap between those two facts has a price, and right now the liquidity providers are the ones paying it.

12 September 2026 6 min read Uniswap v4 hook Base Sepolia · 84532

Splits, dividends, rebases and redenominations all do the same thing: they change the price of an asset at a known moment, by a known factor, without anyone trading. Traditional markets handle this with a record date and an adjustment. Automated market makers handle it by not noticing.

A constant product pool is not a holder. It is a curve with two reserves and one invariant, and it has no idea that the token it quotes was worth four times as much an hour ago. When a 4:1 split lands, the fair price of the asset divides by four. The pool keeps quoting the old number until somebody trades against it, and the person who trades against it first collects the entire difference.

That is not a bug in anyone's code. It is the mechanism working exactly as designed, on a price that is now wrong.

A stale quote is a free option. The only open question is who gets to exercise it.

The arithmetic, on a real pool

Take a pool with 10,000 tokens and $1,000,000 of stablecoin against them. The quote is $100. The asset splits 4:1 overnight, so the fair price opens at $25 while the curve still says $100.

A searcher sells 10,000 tokens into the pool and walks out with $500,000. Those tokens cost $250,000 at the true price. The constant product holds the whole way: reserves settle at 20,000 tokens against $500,000, exactly where the curve prices the asset at $25. Nothing was exploited. The pool simply paid twice what the asset was worth, to the first person in the block.

One 4:1 split, $1,000,000 of depth
  Before Unprotected With the hook
Token reserves10,00020,00040,000
Stablecoin reserves$1,000,000$500,000$1,000,000
Quoted price$100.00$25.00$25.00
Repriced byThe first searcherThe hook, at the event
Value released$250,000$250,000
Of which, to LPs$0$237,500

Constant product math, not a projection. The unprotected column is what the curve does on its own. The hooked column assumes the pool is made whole on the split and the residual gap clears at auction, with the standard 95 / 5 split between liquidity providers and the protocol.

Scale that to a $2,000,000 pool and the number is a quarter of a million dollars, released by a corporate action that was published weeks in advance and surprised nobody except the pool.

Why the curve cannot see it coming

It is worth being precise about what is broken, because two different holes get confused. The first is entitlement: when the split is distributed, the pool has to actually receive its share, the same way any other holder does. The second is the quote: even a pool that receives everything it is owed will still price the asset wrong until the curve is moved. Ambrya is built around the second problem, and it rides on the same attested feed that has to solve the first.

The reason this is solvable at all is that these events are scheduled. A record date is public. A split ratio is public. Nothing about the moment of repricing is a surprise, it is only a surprise to the pool, because a pool has historically had no place to put that knowledge.

Uniswap v4 changes that. A hook runs inside the pool's own lifecycle, so beforeSwap fires before the pool settles the trade in front of it. That is enough room to act on information the pool already had.

Three moves, in order

The sequence matters, because each step only works if the one before it has already run inside the same block.

  1. Know the event is coming

    The hook reads the record date and ratio from an attested feed before the block lands. Splits, dividends and rebases are calendar items, not random walks, so this is a lookup rather than a prediction.

  2. Reprice the curve atomically

    At the event, the hook moves the pool to the post action price in one atomic step. The first swap of the block meets a fair market instead of a stale one, which removes the free option rather than racing anyone for it.

  3. Sell whatever gap is left

    Perfect repricing is not always possible, so the residual goes to a sealed bid auction for the right to take it. The searcher still gets to trade. The proceeds land in the pool instead of in the winner's wallet.

The third step is the one that tends to get argued about, and it is the honest part of the design. Arbitrage is not a moral failure and it is not going away, it is what keeps the quote attached to reality. The question is never whether the gap gets taken. It is whether the people whose capital created the gap get paid for it.

State of the protocol

What is actually live, today

Network
Base Sepolia · chain 84532
Real onchain transactions
ETH ⇄ WETH only
Every other pair on the app
Simulated quotes
Mainnet deployment
None
Audit
Before any mainnet liquidity
Token
Not deployed · no sale
TVL
Nothing to quote

That list is the point of publishing this now rather than later. There is no contract address to put in front of you, so there is nothing anyone can impersonate yet, and when there is one, it appears on the site first and nowhere else. Any contract claiming to be Ambrya before that box shows an address is not ours.

The governance design, xAMB and the liquid staked f33 that votes and compounds on your behalf, is exactly that for now: design. It is written down because it shapes the fee routing, not because it is shipped.

Try the part that is real

The wrap on Base Sepolia is a genuine transaction: your wallet signs it, the hash is public, and the balance change is real. It is a small thing, but it is the difference between a page that describes a protocol and a page that does one.

Four minutes

  1. Open the app and connect a browser wallet. Without one, the interface drops into a labelled demo state rather than pretending.
  2. Switch to Base Sepolia. If the network is missing, the app offers to add it, most wallets hide test networks until you turn them on in settings.
  3. Get test ETH from the Coinbase or Alchemy faucet. The app tells you when the account is empty instead of failing at signing time.
  4. Select the ETH / WETH pair and swap. That one settles on chain against 0x4200…0006; the strip above the card says so while you trade.

What comes next

In order: the attested feed for record dates, the auction contract for the residual, and an external review of both before a single unit of mainnet liquidity is accepted. Everything above stays on testnet until that sequence is finished, and this page will say so plainly for as long as it is true.

The pitch is not that Ambrya invents value. It is that a quarter of a million dollars already changes hands every time a split hits an unprotected pool, and right now none of it goes to the people who funded the position.

Figures are worked from constant product math on the stated reserves and are illustrative, not performance claims. Nothing here is investment advice or an offer of any token.

Ambrya · Uniswap v4 hook · Base Sepolia testnet · no mainnet contracts deployed

Sell

≈ $0.00 Balance: 0

Buy

≈ $0.00 Balance: 0

Base Sepolia

Chain ID 84532 · sepolia.base.org

Get test ETH ↗

ETH ⇄ WETH settles on chain. Your wallet signs it, the transaction is yours, and the hash is public on BaseScan. Every other pair on this screen is a simulated quote, and the strip above says so while you trade.

1 ETH = 3,529.67 USDC Native
E U ETH / USDC
ETH 0x82aF…5Ab1 USDC 0xaf88…5831
3,529.67 +2.41% simulated
now
Amber