Leat, in full
Leat is a front end for providing liquidity to Uniswap v4 on Robinhood Chain. It has no contract of its own, holds nothing, and takes no fee. Everything below describes what your wallet signs and what happens on chain afterwards.
Getting started
- Have ETH on Robinhood Chain for gas, and USDG — the chain's dollar, issued by Paxos — to provide with. Robinhood documents the ways in.
- Open the app and connect a wallet. It will offer to add the network if it isn't there.
- Pick a pool on Pools, choose a band on Provide, and put in what you want to commit.
The first time you deposit a given token you also approve it to Uniswap's Permit2, for the amount you are depositing. After that, each deposit is one signature and one transaction.
What a position is
A Uniswap v4 position is liquidity held between two prices in one pool. While the market price is between them, every trade that crosses your band trades against your money and pays the pool's fee, of which you take the share your liquidity represents.
The position is an ERC-721 token minted to your address by Uniswap's PositionManager. It is yours: Leat cannot move it, and if this site disappeared you could still manage it from Uniswap's own interface.
Above your band you hold only the token that is now dearer — the market bought the other one from you on the way up. Below it you hold only the cheaper one. That is not a fault; it is what making a market is.
Choosing a range
The narrower the band, the more liquidity a given amount of money buys — and the larger a share of every trade inside it you take. The price also leaves a narrow band sooner, and a position outside its band earns nothing at all.
- Tight, ±3%. The most fees per dollar while the price sits still.
- Balanced, ±10%. A working range for a stock that moves a few per cent a week.
- Wide, ±30%. Less per dollar, but it keeps earning through a big move.
- Full. Every price there is. Never out of range, and the thinnest of all.
- Custom. Two prices you type. Leat snaps them out to the pool's tick spacing, so the band you get always contains the band you asked for.
What one deposit does
A band that straddles the price needs both tokens, in a ratio the price and the band decide. You rarely hold them in that ratio, so Leat builds a single transaction through Uniswap's Universal Router that:
- redeems the Permit2 signature you gave, for exactly what you are putting in;
- swaps the part that has to change side — through the better of Uniswap v3 and v4, quoted at that moment, and where possible not through the pool you are about to mint in, so your own swap does not move the price you mint at;
- hands both tokens to the PositionManager and mints the position to you;
- sweeps whatever the band could not use back to your wallet.
If you already hold both sides in something close to the right ratio, no swap is needed and the deposit goes straight to the PositionManager instead — one signature, one transaction.
The fee, and your share
Each pool has its own fee. On this chain the protocol also takes a cut, which comes off the trade before the pool's own fee applies. Leat shows both: what a trader pays, and what reaches your position. For a 0.30% pool with a 0.05% protocol fee, a trade pays 0.3499% and liquidity keeps 0.2999% of it.
Fees are not compounded into the position. They accrue beside it until you collect them, or until you close or recentre, which collects them on the way.
Where the rate comes from
Every pool records fee growth per unit of liquidity — a counter that only goes up. When the pool list on this site was generated, that counter was written down along with the block and the time. The app reads it again live and subtracts.
What is left is what the pool actually paid its liquidity in between, over a window as long as the time since that scan. Leat turns it into a rate by asking: if $1,000 had sat in a ±10% band the whole time and never gone out of range, what fraction of it would the fees be, a year? No volume model, no forecast, and a quiet week reads as a quiet week.
It is history. A pool that paid 20% last week can pay nothing next week, and a band the price walks out of pays nothing while it is out.
Collect, recentre, close
- Collect takes the fees and leaves the liquidity where it is.
- Recentre destroys the position and builds a new one around today's price inside a single transaction — the old position's tokens and fees never touch your wallet in between. Nothing is sold: the new band is sized to whichever side binds, and the rest is paid back to you.
- Take out half and Close reduce or end the position, paying out both tokens and the fees.
The contracts
Leat deploys nothing. These are Uniswap's own deployments on chain 4663, each verified on the explorer:
- PositionManager 0x58daec31…04fA7
- PoolManager 0x8366a39C…0951
- StateView 0xF3334192…673b
- UniversalRouter 0x88767899…0904
- Permit2 0x00000000…8BA3
- SwapRouter02 / QuoterV2 — Uniswap v3, still the better venue for many of these stocks.
The router's own rule matters here: the command that lets it call the PositionManager will only carry a mint. It cannot decrease, burn or collect from a position you already own, whatever this site asks of it.
Risks
- It is market making. Against simply holding both assets, a range position gives up upside and takes downside. The fees pay for that, and sometimes they do not pay enough.
- Out of range is idle. A position the price has left holds one asset and earns nothing until the price comes back or you move it.
- These are tokenized stocks. Not shares. They carry the issuer's risk and trade only where a pool exists.
- Thin pools move. A pool that passes Leat's depth bar today can be drained tomorrow.
- Rates are measured, not promised. Past fee growth is not future fee growth.
- Leat is unaudited software. The contracts it talks to are Uniswap's; the calldata it builds is its own, and is proved against those contracts on a fork of this chain before every release.