You can't unpledge what's backing a debt
Morpho checks the position's health at the end of every withdrawal. While a dollar is still owed, the collateral behind it does not move.
You own tokenized stock. Some of it is pledged in a Morpho market, and you borrowed dollars against it. Getting out means repaying a debt with money you don't have, unpledging what backed it, and selling each holding through a different pool — in an order that matters, while the price moves. Furl does the whole thing in one transaction, or tells you why it can't.
None of these is a Furl rule. Each one is a real revert on Morpho Blue, and together they make a cycle that a wallet with no cash cannot break.
Morpho checks the position's health at the end of every withdrawal. While a dollar is still owed, the collateral behind it does not move.
The dollars you'd need are the dollars you borrowed, and they are already spent — or they are locked up inside the very collateral you are trying to release.
Pledged shares sit in Morpho's balance, not in your wallet. No router can reach them until step 1 has already happened.
Morpho Blue lends its own balance of any token for the length of a single transaction, free, on the condition that it comes back before the call ends. Furl borrows exactly the debt, repays every market by shares rather than by a dollar amount quoted a moment ago, pulls the collateral out, sells every holding through Uniswap's Universal Router, hands the flash loan back out of the proceeds, and sends what is left to your wallet. The authorisation Morpho needs is granted and revoked inside the same transaction, so nothing is left standing afterwards.
Measured on 49 stocks against the pools they actually trade in, at the block named below, and priced against the lending oracle — Robinhood's own tape — rather than against the pool, because a pool measured against itself always says the sale was free.
| Stock | $10,000 | $50,000 | $250,000 | Pools |
|---|---|---|---|---|
| GLD SPDR Gold Trust | -0.43% | -0.37% | -0.01% | 6 |
| GOOGL Alphabet Class A | -0.13% | 0.00% | 0.41% | 5 |
| NVDA NVIDIA | 0.00% | 0.03% | 0.10% | 6 |
| SGOV iShares 0-3 Month Treasury Bond | 0.06% | 0.07% | 0.28% | 6 |
| SPCX Space Exploration Technologies Corp. Class A Common Stock | 0.02% | 0.09% | 0.54% | 6 |
| MSFT Microsoft | 0.04% | 0.20% | 1.0% | 4 |
| SPY SPDR S&P 500 ETF Trust | 0.14% | 0.21% | 0.27% | 4 |
| MU Micron Technology | 0.05% | 0.30% | 1.8% | 4 |
| AAPL Apple | 0.10% | 0.34% | 0.97% | 6 |
| HIMS Hims & Hers Health | 0.32% | 0.39% | 0.80% | 6 |
The fee is fixed; the impact is not. Selling SNDK at $250,000 costs 14.1% against 0.87% at $10,000 — the same shares, 16.3 times the price, because you are the one moving the market. Furl splits each sale across up to four pools to make that as small as it can be, and shows you the number before you sign.
This is the finding the site is built around, and it is not flattering. Furl's job is to say it before you sign, not after.
Every flash loan on this chain draws on one number: Morpho Blue's own balance of USDG, which is $48,753,565 right now. A book that owes more than that cannot be closed in one transaction at any price. Furl reads that number before it builds anything.
Of the 49 stocks with a market, 24 cannot absorb a $250,000 sale inside the price window Furl reads. Those shares are reported as stuck and returned to your wallet rather than sold at an invented price.
If everything you own fetches less than everything you owe, the exit is insolvent: the flash loan cannot be repaid, so the transaction reverts and your position stays exactly as it was. Furl calls this out before building the transaction rather than letting the chain say no for it — and a reverted exit costs you gas, not the position.
Furl is not audited, and nothing on this page should be read as saying it is. What follows is what was run, and what it found.
Each one executed by an eth_call with no to on Robinhood Chain itself — real creation code on the real evaluator, costing nothing and leaving nothing behind. Every refusal has a control that proves the same call succeeds when the guard is removed.
node tools/props.mjs --propsThe contracts recompiled with one defect at a time, each named for the property that must notice. A suite that has never been shown to fail is a suite nobody has tested.
node tools/props.mjs --sabotageThe same modules the page runs, over real pool and market state pinned at a block — including a seeded fuzz of 600 random books, with every invariant re-checked after every operation.
node tools/test-exit.mjsReal books built on a fork of Robinhood Chain and really closed: the flash loan drawn, every market repaid by shares, the collateral withdrawn, the stock sold, the authorisation revoked, and nothing left in the adapter.
node tools/test-tx.mjsThe real page in a real browser against a fork — connect, read the book, plan the exit, sign, and check the wallet afterwards. No console errors.
node tools/e2e.mjsEvery one of these is a command in the repository, and every sweep carries a control that must fail. A validator that stopped validating looks exactly like a clean build.
No alerts, no automatic top-up, no stop. Furl runs when you press the button and not otherwise. A position that is liquidated overnight is liquidated.
A v4 pool with a hook in the swap path is ignored rather than guessed at. That is liquidity Furl leaves on the table, and it is named here rather than quietly skipped.
The transaction carries a minimum for each sale and reverts if the pools move past it. What it cannot do is stop them moving between the quote and the block.
No, because there isn't one. Furl deploys nothing. The transaction your wallet signs is a call to Morpho's own Bundler3, which routes to Morpho Blue and Uniswap's Universal Router — all three already live on this chain before Furl existed. What Furl contributes is the plan: which calls, in which order, for how much.
Morpho Blue lends its own balance of a token for the length of one call, with no fee, on the condition that it comes back before the call ends. Furl borrows exactly your debt plus a small cushion for interest that lands while the transaction waits, and repays it out of the sale in the same transaction. It costs nothing beyond gas.
Then the flash loan cannot be repaid and the whole transaction reverts, leaving your position exactly as it was. Furl checks for this before it builds anything and refuses with a reason, so you find out from the page rather than from a failed transaction.
Withdrawing collateral acts on your behalf, so Morpho wants an authorisation for the adapter doing it. Furl asks you to sign a grant and a revocation over consecutive nonces and puts both inside the transaction, so nothing is standing when it finishes.
Yes. Every holding and every position has a switch in the app. What Furl will not do is build an exit that leaves a market with a debt and no collateral, because anyone may liquidate that.
No. Furl has not been audited and nothing here should be read as saying it is. What has been done is on this page, with the command to reproduce each of it, and the contracts Furl calls are Morpho's and Uniswap's own.
Connecting a wallet reads your book and prices the exit against live pool state. Nothing is sent until you sign, and Furl never holds anything.