Markets close. Onchain stocks don't.
Vayle is a Uniswap v4 hook for tokenized stocks. When a pool's price drifts away from the official price, it raises the swap fee, and it pauses swaps when something looks wrong. Liquidity providers stop getting picked off while the feed sleeps.
Deployed on Robinhood Chain.
The hook is on mainnet with a TSLA/USDG pool and a small amount of seed liquidity. The code is verified on Sourcify, so you can read exactly what is running.
0xa270cba3eca539c6e28e787688312e7d6c3a58fe7ba48a6c9ce84ee59758a18eThe feed sleeps. The pool keeps quoting.
Robinhood's stock tokens are priced from Chainlink feeds that follow the US trading week. At the close the feed holds its last price. The token still trades onchain, so the pool's price drifts away from it. Anyone who knows the stock has moved can buy from liquidity providers at the stale price.
Source: Robinhood Chain onchain data for the 0.3% TSLA/USDG pool with no hook. 1 bp is 0.01%.
Last weekend, replayed.
Every swap from Oct 2 to 5, against Chainlink's price. Press play, or drag across the chart. The fee shown is what Vayle would have charged with its current test settings.
Move the gap. Watch the fee.
These are the current test settings. Drag the slider, then switch on the things that can go wrong.
Three checks inside every swap.
The hook runs before each swap on the pool. No bot posts prices to it and nobody has to trust one. It reads both prices itself.
Read both prices.
The hook reads Chainlink's price for the stock token and the pool's own price, and works out the gap in basis points. The pool price is a snapshot from the start of each short window (about 12 seconds), so one big trade can't game the fee for the swaps right after it.
Set the fee.
Inside the free zone the pool charges its base fee. Past it, the fee climbs by one basis point for every basis point of gap, up to a cap. The more stale the price, the less a trade against it is worth.
Guard the pool.
If the gap is extreme, swaps pause. If the feed has gone dead, the fee goes to the maximum. If the stock token's multiplier changes, swaps hold until the owner confirms the new one.
What the dashboard could look like.
A concept for the pool page: live gap, current fee, a swap panel and a feed of what the hook is doing. Turn the sound on.
What happens when things go wrong.
Extreme gap
When the gap reaches 150 bps on a live feed, swaps revert instead of trading at a price nobody can vouch for.
halt at 150 bpsDead feed
If Chainlink reverts, returns a zero or negative answer, or has not updated in 96 hours, the pool charges the maximum fee. The normal 52 hour weekend silence never counts as dead.
max fee 1.00%Corporate actions
Stock tokens carry a multiplier that changes on splits and similar events. If it changes, is scheduled to change, or the token's own oracle is paused, swaps stop until the owner confirms.
swaps revertOwner modes
The owner can force the maximum fee on every swap, or pause the pool entirely, if something looks wrong that the checks can't see.
kill switchStraight answers.
Is Vayle live?
Yes, in a small way. The hook is deployed on Robinhood Chain mainnet with a TSLA/USDG pool seeded with a small amount of liquidity, and the source is verified. The dashboard on this page is still a concept.
Is it audited?
Not yet. That is why the pool is small. An outside audit is planned before any serious money goes near it.
Does it need a bot to post prices?
No. The hook reads Chainlink and the pool price itself on every swap, and the weekend replay shows it charges the same fee as a modelled bot-fed version on all 785 swaps. A separate script that logs gap data exists for research only.
What is the gap?
The difference between a pool's price and Chainlink's official price for the stock, in basis points. One basis point is 0.01%. A 25 bp gap is 0.25%.
Why a 25 bps free zone and a 0.15% base fee?
Chainlink itself only updates when the price moves 0.5%, so small gaps are mostly noise. We launched with a 0.05% base fee and a 40 bps free zone, then replayed last weekend's swaps and found it was too cheap: arbitrageurs would have kept about 35 bps on every trade and liquidity providers would have lost money against Monday's price. On Oct 9 we changed it to 0.15% and 25 bps. That is a first estimate from one weekend of data, and it will keep changing as more data comes in.
Which stocks will it cover?
TSLA is the first, and so far the only, live pool. Robinhood lists 194 stock tokens, and 43 pools on the chain currently have the open liquidity and trading volume that make them worth supporting, covering 19 different stocks.
What are the risks?
Robinhood can pause, block or upgrade its stock tokens, and Vayle trusts Chainlink's price. Stock tokens may not be available in every country. The contracts are new and unaudited. Anything built on them should be treated that way.
Is there a token?
No. Nothing has been announced or launched. Anyone offering you a Vayle token is not us.