Documentation
How the pool works, what it costs, and every way it can go wrong.
What Sterling is
Sterling owns a pool of real Robinhood tokenized stocks: NVDA, TSLA, AAPL, AMD, GOOGL, PLTR, AMZN and SPY. Anyone can borrow those stocks by putting up ETH as collateral. Bring the stock back and your ETH is returned.
What makes it unusual is where the stock comes from. Nobody deposits it. Every trade of $STERLING pays a fee, a Uniswap v4 hook collects that fee, and the pool spends it buying real stock. The pool grows on its own as long as people trade.
What nobody can do
There is no owner, no admin key, no governance vote, and no pause button. Every rule on this page is a constant compiled into the contract. Changing one means deploying a different protocol.
owner(), no setFee, and no way to redirect where the money goes. Not even the deployer can touch it.How it works
1. The pool buys its own stock
$STERLING trades against ETH in a Uniswap v4 pool. Attached to that pool is a hook, a contract the pool calls on every swap. Sterling's hook takes a cut: 3% when someone buys, 5% when someone sells.
That cut does not go to liquidity providers and it does not go to a treasury wallet. It goes to the lending pool, which spends it on real tokenized stock, split evenly across all eight. More trading means more stock to lend.
2. You borrow against ETH
- Hold 10,000 $STERLING. This is the only gate.
- Pick a stock and an amount. The contract prices it from Chainlink, not from a DEX pool.
- Send ETH worth 150% of that stock. The stock transfers to your wallet in the same transaction.
- Return the stock whenever you like and your ETH comes back in full.
3. Interest accrues to the pool
The rate is 2% a year plus utilisation times 18%. If half a stock is lent out, the rate is about 11%. Interest is added to what you owe, and when you repay, it stays in the pool. The pool compounds.
Why the caps exist
One wallet cannot borrow more than 20% of a stock's book, and no more than 50% of any stock can be out on loan at once. The first stops one borrower concentrating the pool's risk into a single position. The second keeps stock available and keeps the rate meaningful.
Borrowing
What you need
The $STERLING requirement is a balance check, not a deposit. The tokens stay in your wallet and are never locked, moved, or spent. Sell them and you simply lose borrowing access.
How much ETH
Collateral is priced from Chainlink at the moment you borrow. For 150%, borrowing $1,000 of NVDA needs $1500 of ETH.
From Friday 4pm ET the requirement rises to 200%. A position opened then has to survive roughly 48 hours with no price updates and no way for anyone to close it, so it needs more room.
Why a borrow might fail
- Market closed. Weekend or a US market holiday. Wait for Sunday 8pm ET.
- Not enough $STERLING. You need the full 10,000.
- Not enough ETH. The quote moves with the price; leave room.
- Over a cap. Either you are taking too much of one stock, or it is already 50% lent out.
- Stale price. The feed has not updated recently enough to price a new loan safely.
Repaying
The dust problem, and why we handle it
Interest accrues every second. If you read your debt, then send a transaction repaying exactly that number, a few more seconds of interest accrued while it was in flight. You would repay almost all of it and be left owing dust, with your entire ETH deposit still locked behind it.
The contract takes a max value meaning whatever I owe right now, resolved at execution time. The UI always uses it for a full repay, so there is no scenario where dust holds your collateral hostage.
Adding collateral instead
- Adding collateral never fails because of market hours.
- It can only make your position healthier, so there is no check to pass.
- Withdrawing surplus collateral does need the market open, since that increases risk and has to be priced.
Liquidations
Your collateral ratio is the USD value of your ETH divided by the USD value of the stock you owe. You open at 150%. If the stock rises, that number falls. Below 125%, anyone can close your loan.
When liquidation is blocked
- Market closed.No price discovery means no liquidation. You cannot be closed out over a weekend on Friday's price.
- Stale feed. Even during the week, if the feed has not updated recently enough, the contract will not act on it.
- Grace period. When the market reopens, liquidations stay off for 30 minutes so borrowers can top up before anyone can seize collateral on a gap.
What the protocol earns
Nothing. The entire bonus goes to the liquidator. Sterling takes no cut, because the point is to get bad loans closed fast, not to profit from them.
The fee hook
A Uniswap v4 pool can call out to a contract at fixed points in a swap. That contract is a hook. Sterling's hook runs after every swap and takes a slice of the output for the lending pool.
Why not just set a pool fee?
Because a pool's fee goes to liquidity providers, not to us. A plain fee tier would fund LPs and leave the lending pool with nothing. A hook fee is separate: it is claimed by the hook itself, which is what lets it reach the pool at all.
Sterling's LP fee is zero, so the 3% /5% you pay is the whole cost of a trade, and every bit of it becomes stock. The tradeoff: no outside LP would provide liquidity for zero yield, so the protocol owns all of it.
The chart question
Buy-side fees arrive as Sterling tokens, and the pool needs ETH to buy stock, so that Sterling has to be sold. That sell is real and it shows up on the chart. Pretending otherwise would be dishonest. What matters is who is doing it:
- Not the deployer.The seller is the hook contract. It never held the supply and never received the launch tokens, so it is not the wallet a chart tracker labels "dev".
- Not discretionary. The hook has no owner. There is no function to change the fee, redirect the proceeds, or choose when to sell. Not for us either.
- Not constant. Fees batch on a 5-minute cooldown, so it is one predictable conversion rather than a sell printed next to every buy.
Prices & market hours
Every price Sterling uses comes from Chainlink's tokenized equity feeds. Nothing is priced from a Uniswap pool. That is not a preference: v4 has no built-in oracle on these pools, and the liquidity behind a tokenized stock is small enough that a pool price could be pushed around cheaply.
The hard part: 24/5 feeds on a 24/7 chain
The chain never sleeps but US stocks do. The obvious way to detect that is to check whether the feed has gone stale. That does not work, and why it fails shaped the whole design.
These feeds update on a 24-hour heartbeat or a 0.5% move. On a quiet day a feed can sit untouched for a long time while the market is wide open. Measured over ~3.5 weeks of real history:
| Stock | Longest gap, open | Longest gap, weekend |
|---|---|---|
| AMD | 5.8h | 73.3h |
| PLTR | 14.1h | 74.9h |
| AMZN | 16.7h | 77.1h |
| AAPL | 18.0h | 79.7h |
| GOOGL | 18.0h | 76.6h |
| NVDA | 18.4h | 76.1h |
| TSLA | 21.2h | 76.1h |
| SPY | 24.0h | 76.1h |
SPY went 24 hourswithout an update during normal trading. It simply had not moved 0.5%. So a staleness check tight enough to catch Friday's close would shut the protocol down on any quiet Tuesday, and one loose enough to avoid that cannot notice a weekend until Saturday afternoon.
What Sterling does instead
- A calendar, first. The contract derives the Eastern Time weekday and hour from the block timestamp and knows the US market holidays. It shuts at Friday 8pm ET exactly.
- Staleness as a backstop. A 30-hour limit catches anything the calendar misses: an unscheduled halt, an outage, a holiday beyond the table. It sits above the 24h worst-case open-market gap and far below the 73h shortest weekend.
We checked the calendar against 345 real feed updates. Not one landed inside the window it calls closed.
The asymmetry is the point. Anything that takes on new risk needs a live price. Anything that reduces risk should never be blocked, because a borrower who cannot act is a borrower who gets liquidated for no reason.
Contracts
Nothing is deployed yet. These fill in once the contracts are live on Robinhood Chain.
Stock tokens
Price feeds
Checking things yourself
- Call
owner()on the fee hook. It reverts, because there is no owner. That is the proof nobody can redirect the fees. - Look for
setFeeorsetDeskon the hook. They do not exist. - Call
latestRoundData()on any feed and compare it to what this site shows. - Read
stockStats(token)on the pool and compare to the stats page.
Risks
The weekend gap
This is the big one, and it cannot be fixed. US stocks stop trading Friday at 8pm ET and do not resume until Sunday at 8pm ET. During those ~48 hours there is no price, so nobody can be liquidated.
If news breaks on a Saturday and a stock opens 30% higher on Monday, every loan on that stock blows straight through the 125% line with no chance for anyone to close it on the way down. Liquidators arrive to positions that are already underwater. The pool eats the difference.
The 150% opening requirement and the 200% Friday increase are the buffer against this. A gap bigger than the buffer creates bad debt. Earnings gaps regularly exceed 25%.
Robinhood controls the stock tokens
These are real issued tokens, not synthetics, which is what makes them interesting. It also means the issuer has powers Sterling cannot override:
- Pause. Transfers of a stock token can be halted. While paused, that stock cannot be borrowed or repaid.
- Block. An address can be blocked from holding a token. If that address is yours, transfers involving you fail.
- Burn. The issuer has an admin burn capability.
- Upgrade. All the stock tokens sit behind a shared beacon and can be upgraded at once.
Oracle risk
If a feed reports a wrong price, the protocol acts on it: loans get priced wrong and liquidations fire wrong. Sterling rejects stale and non-positive prices, but it cannot detect a plausible wrong number.
Smart contract risk
The contracts are unaudited. They are fork-tested against live chain state and the tests pass, but tests prove the presence of behaviour, not the absence of bugs. There is no admin key to pause anything if something goes wrong, which is a feature for trust and a liability in an emergency.
$STERLING itself can go to zero
The token has no claim on the stock in the pool. It gates borrowing, and its trading fees fund the pool, but holding it does not entitle you to any of the assets. If nobody trades it, no fees accrue and the pool stops growing.