Docs

How Eddy works

Morpho Blue is a lending protocol already deployed on Robinhood Chain. Anyone can create a market on it; each market lends one token against one collateral token, with a fixed oracle and a fixed liquidation limit. Somebody had created markets that lend Robinhood stock tokens against USDG — NVDA, GOOGL, SPY, AAPL, TSLA — and nobody had supplied them.

Those markets are exactly what shorting needs. A lender supplies shares; a short-seller posts dollars, borrows shares and sells them. Eddy is a page for both sides. It deploys no contract and holds nothing: it builds transactions to Morpho Blue, Morpho's Bundler3 and GeneralAdapter1, and Uniswap's SwapRouter02, has your wallet send them, and reads the result back from the chain.

Lending

Lend shares you hold is one Bundler3 transaction:

  1. the token's own permit, signed by you, for exactly the amount, to Morpho's adapter;
  2. erc20TransferFrom: the adapter takes the shares;
  3. morphoSupply: the adapter supplies them to the market on behalf of your wallet, refusing if Morpho would price a supply share more than 1% above what the page read.

Buy and lend replaces step 2 with a transfer of your USDG to Uniswap's router and a swap whose shares go to the adapter (at most 0.5% below Uniswap's own quote), and supplies every share bought.

Withdrawing needs no bundle: your wallet calls Morpho's withdraw for itself. Morpho pays out only what is not borrowed; the page offers exactly that, and all of it once nothing is borrowed.

Interest is paid in the stock. Morpho grows the market's total supply by the interest borrowers owe, so each supply share is worth more shares over time.

Opening a short

One Bundler3 transaction. With M dollars posted and N dollars of the stock to sell (N ≤ M):

  1. the USDG permit for exactly M; and, the first time only, Morpho's own setAuthorizationWithSig letting its adapter borrow for your wallet;
  2. the adapter takes M from your wallet;
  3. a Morpho flash loan of the sale's guaranteed minimum; inside it: all the dollars are posted as your collateral, N dollars' worth of shares (at the oracle's price) are borrowed straight to Uniswap's router and sold, and the sale repays the flash loan;
  4. whatever the sale made above its minimum is posted as collateral too.

You end with collateral ≈ M + N and a debt of the shares borrowed. The flash loan is what lets the sale's dollars count as collateral before the sale has happened. If the pool would pay more than 1.5% under Robinhood's price, or less than 0.5% under its own quote, nothing happens.

Closing a short

One Bundler3 transaction: a flash loan of USDG buys the shares owed plus 0.1% (so a minute of interest cannot leave it short), the adapter repays the debt, withdraws the collateral, sells the few spare shares back, repays the flash loan and sends every remaining dollar to your wallet. Closing half does the same with half the debt and half the collateral, so what remains keeps its loan-to-value.

Closing in full works even while the oracle refuses to price: Morpho needs no price to release collateral once the debt is zero.

Liquidation

These markets liquidate at 62.5% loan-to-value: once the shares you owe are worth more than 62.5% of your collateral, anyone may repay part of your debt and take that value of collateral plus Morpho's liquidation bonus (12.7% at this limit). For a short, the loan-to-value rises when the stock rises. With loan-to-value L today, liquidation starts after a rise of 0.625 / L − 1: a 1× short (L ≈ 50%) can take about +25%, a 0.5× short about +87%.

The page computes that number with Morpho's own integer rule (collateral × price / 1e36 × lltv ≥ debt), and a test moves the oracle to 99% and 101% of it: Morpho refuses the liquidation at the first and allows it at the second.

Lenders carry the other side: if a stock jumps more than a further 42% past a short's liquidation line before anyone liquidates it, the collateral no longer covers the debt, and lenders share the shortfall.

The oracles

Each market's oracle was deployed by whoever created the market and is not verified on the explorer. We checked what it does rather than what it says: its answer converts USDG to the stock at the same price as Robinhood's own feed (to within 0.01%), it agrees with the Uniswap pool to within a fraction of a percent, and it refuses to answer once Robinhood's feed is about a day old — measured by moving the clock in a simulation. That refusal pauses opening, trimming and liquidation while the stock market is shut; closing in full still works.

Rates

All five markets use Morpho's AdaptiveCurveIrm. The borrow rate depends on utilisation (how much of the lent shares is borrowed): it is targeted at 90% utilisation, starts near 4% a year there, and adapts over time. Lenders earn the borrow rate times utilisation. With little borrowed, both are close to zero; the page shows the live numbers.

Addresses

Morpho Blue0x9D53d5E3bd5E8d4Cbfa6DB1ca238AEA02E651010
Morpho Bundler30x6478e9393d4C5bB4d53ee881d1DE78786A0344a6
Morpho GeneralAdapter10xc5E188541D107e8B79e43478bDE365F1406665D6
Uniswap SwapRouter020xCaf681a66D020601342297493863E78C959E5cb2
Uniswap QuoterV20x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168

The markets, their oracles and pools: Markets.

Tests

Every property runs the page's own js/eddy.js against live Robinhood Chain state through eth_simulateV1: real permits and Morpho authorisations signed by test keys, real Morpho markets, real Uniswap pools. Expected numbers are computed by the test itself — Morpho's share arithmetic and interest written out a second time, sale proceeds from the pool's own Transfer logs — never by asking the code under test. Nothing is broadcast.

The last run: 13/13 properties and 92 checks passed against live state at block 76,735,873 (30 Sep 2026).

PropertyWhat it provedChecks
lendlent 2.000000000123456789 NVDA: the wallet paid exactly that, Morpho holds exactly that, and it is all the lender's7
buylend$250.000007 bought 0.742920 AAPL in the pool and all of it was lent in the same transaction6
withdrawwith 1.1427 of 2 GOOGL free, the rest was refused as lent out; after the short closed, all 2.00000000 came back7
open$600.000003 margin, $450.0 sold: debt 1.951723 NVDA, collateral $1050.20, liquidated only after a 45.9% rise9
closeafter six hours the short closed: $499.60 came back of $500 posted, every share repaid, nothing left in Morpho's adapter6
partclosing 50% repaid exactly half the debt and freed exactly half the collateral; the rest kept its loan-to-value6
marginmargin in and out to the unit; Morpho refused to release collateral the short still needs4
accrue30 days at 0.08% APY: the lender earned 0.00023156 GOOGL, exactly as Morpho accrues it7
liquida 1× short is safe to a 25.0% rise: Morpho refused liquidation at 99% of that rise and allowed it at 101%4
stalewith a stale feed nothing new can open (page and chain agree), and an open short can still be closed in full5
refusesix refusals, each for its own reason: lent out, over 1×, far below Robinhood's price, past the collateral, no permission, below the minimum — and a stranger cannot close someone else's short9
permitUSDG and TSLA permits are exact and domain-checked; Morpho accepts the page's authorisation, refuses a wrong nonce, and revoke works12
alllent to and shorted NVDA, GOOGL, SPY, AAPL, TSLA — every market on the page10

Not run yet.

The browser run: 6/6 journeys (27 checks) clicked through the real pages in Chrome with a test wallet, against a private copy of the live chain (30 Sep 2026).