How Moor works
Moor lets you borrow USDG against tokenized stocks on Robinhood Chain without selling them. It is a website, not a protocol. Every loan is a position in a Morpho Blue market that already existed on the chain, and every trade goes through Uniswap's own router. Moor adds no contract, holds no keys and charges no fee. Your wallet signs every transaction, and you can check each one before you do.
How a loan works
Each stock Moor supports has a Morpho Blue market that lends USDG against it. The app uses the one with the most dollars free to lend. A loan takes up to three transactions:
- Approve Morpho to take the shares you are posting (skipped if already approved).
- Post collateral:
supplyCollateralmoves the shares into the market under your address. They stay yours, earn nothing and are never lent out. - Borrow:
borrowsends USDG to your wallet and records the debt against your position.
Interest accrues every second at the market's rate. Morpho's adaptive interest model sets that rate from how much of the market is lent out: it rises when a market is busy and falls when it is quiet. The app shows the rate at the chain's current time, compounded exactly as Morpho compounds it. To repay, repay takes USDG back. "Repay all" repays by shares rather than by amount, so the loan is cleared to the last unit and nothing is left behind. After that, withdrawCollateral returns your shares.
Health and liquidation
Every market has a maximum loan-to-value (LLTV); for all the markets Moor offers today it is 62.5%. Your borrow limit is the collateral's value at the market oracle's price, times the LLTV. Health is that limit divided by your debt:
health = collateral × oracle price × LLTV ÷ debt
At a health of 1.00 or below, anyone may liquidate the position: they repay part of your debt and receive the matching collateral plus an incentive, which at 62.5% LLTV is about 12.7%. The app shows your liquidation price, the stock price at which health reaches 1.00. By default its buttons keep you at or below 50% loan-to-value, which is 80% of the limit. A position there survives a fall of 20% in the stock before it can be liquidated.
When a price feed pauses
The four largest markets (SpaceX, Apple, NVIDIA and Alphabet) use a price oracle that refuses to answer once its feed is about a day old. Robinhood's stock feeds stop updating while markets are shut, so this can happen over a weekend or a holiday. While a feed is paused:
- Morpho will not let anyone borrow, or withdraw collateral from a position that has debt, because both ask the oracle first.
- You can still add collateral and repay, because neither asks the oracle.
- With no debt left, you can withdraw your collateral even while the feed is paused.
- No one can liquidate you either: liquidation asks the oracle too.
The app detects this and says so above the market. Every point above was checked on live chain state by moving the clock 20 days forward (see How it was tested).
Buying and selling
To borrow against a stock you have to hold it. The app's Buy & sell tab trades USDG for any of the 42 Robinhood stock tokens with a working Uniswap v3 pool. It quotes every fee tier with Uniswap's QuoterV2, picks the best, and sends one exactInputSingle through SwapRouter02 with a 0.5% minimum-output guard and a 20-minute deadline. If the price moves past the guard, the trade reverts and nothing is spent.
Robinhood stock tokens count raw units that never change, and publish a uiMultiplier that converts them to shares (for splits and similar events). The app shows shares and sends raw units, converting both ways exactly as the token does.
Contracts
Everything Moor touches, on Robinhood Chain (chain id 4663). None of it was deployed by Moor.
| What | Address |
|---|---|
| Morpho Blue | 0x9D53d5E3bd5E8d4Cbfa6DB1ca238AEA02E651010 |
| Uniswap v3 SwapRouter02 | 0xCaf681a66D020601342297493863E78C959E5cb2 |
| Uniswap v3 QuoterV2 | 0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7 |
| USDG (the dollar you borrow) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 |
| SpaceX (SPCX) token | 0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa |
| SPCX market oracle | 0x872F9D8955B34e841227a92dE755cd63042Ab7A5 |
| Apple (AAPL) token | 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 |
| AAPL market oracle | 0xD625d488D552775D2867194C618B945E5dDfE097 |
| NVIDIA (NVDA) token | 0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC |
| NVDA market oracle | 0xED29D310cfa91778A5850538DA28ed42234Cb78c |
| Alphabet (GOOGL) token | 0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3 |
| GOOGL market oracle | 0x12Ec3474D1e321e0aAB065278B97FBC7eDa5F424 |
| S&P 500 ETF (SPY) token | 0x117cc2133c37B721F49dE2A7a74833232B3B4C0C |
| SPY market oracle | 0xe8dAb19184f72b5a5a9d51A6C50A1b04b0669ce7 |
| Tesla (TSLA) token | 0x322F0929c4625eD5bAd873c95208D54E1c003b2d |
| TSLA market oracle | 0xCa76875634e0b9759AA6610dC3092e92fcefE46E |
| Interest rate model (all markets) | 0x2BD3d5965B26B51814AC95127B2b80dD6CcC0fa1 |
| SPCX market id | 0x9b4b47cdf7e295341c6c6cdfd3efb9805c4a5b3d580dba0c0c39d3a4232b297b |
| AAPL market id | 0xdeb4782d012d5fd3b24962538c2f6559049d70bda4dabd2e4212dacb96c28d45 |
| NVDA market id | 0x8b16891f032a93b771347c9cb470a780e6699dd701553d3402aa3cdba6189c3e |
| GOOGL market id | 0x7fa81b10e5d21b2e4c571f862442bc11aff2ed14f02335868d0ff933fd40d0ba |
| SPY market id | 0x50bc39b5722fb5634c436d74c6787f3c125b879e7b73cf9e9ecc01bbb57b8e55 |
| TSLA market id | 0xb41b34c5989420ad080e79363a9cfe3e23bec7459fcd2d88029250da370288df |
How it was tested
Two suites run against live Robinhood Chain state, using eth_simulateV1 so that nothing is ever broadcast:
- The protocol journey (15/15 properties, 346 checks, block 70,856,469). For every market, a fresh wallet holding only dollars buys the stock on Uniswap, posts it, borrows half its limit, then borrows up to the exact limit the page computes. One step past that limit must be refused as
insufficient collateral. Interest accrues, and the wallet repays everything and sells. The test requires that Morpho charges exactly the debt the page showed, to the unit, and that every refusal (expired trade, missing approval, someone else's position, too-little-received) is the specific one expected. A second property per market moves the clock 20 days forward to prove the oracle-pause behaviour above. - The browser run (7/7 stages, 25 checks). Headless Chrome drives this site with a test wallet and waits for the chain's position to change, not for the page's message. It covers post and borrow, a refused over-limit borrow, repay all, withdraw, buy and sell. Each outcome is read back from the chain.
Risks
- Liquidation. Tokenized stocks move with the stock. If yours falls far enough, part of your collateral can be sold to repay the loan, at a discount to you.
- Oracle. The market's oracle decides your limit. If it is wrong, stale or manipulated, positions can be liquidated or loans blocked. Moor does not choose or control the oracles.
- Liquidity. You can only borrow what lenders have left in a market. If a market is fully lent out, you can still repay, but lenders may be unable to withdraw.
- Rates. The borrow rate is variable and can rise sharply when a market is nearly fully lent.
- Issuer controls. Robinhood's stock tokens can be paused or blocklisted by their issuer, which would stop transfers of that stock, including collateral withdrawals.
- Software. Morpho Blue and Uniswap v3 are widely used and audited, but no software is free of risk. This website has not been separately audited.
Moor is not a bank, broker or adviser, and nothing here is financial advice.