Moving a position between Aave, Revert and Uniswap
Aave has never heard of Revert. Revert has never heard of Aave. Moving a position between them means unwinding to cash, unless something spans both.
In short: you hold wstETH as collateral on Aave and want it working in a Uniswap range instead, but Aave, Revert and Uniswap each know only their own positions. By hand that is six transactions, including repaying a loan with money that is locked up as its collateral, and a long stretch in the middle holding loose tokens. Fourteen of the 67 operations here do such a move in one transaction, using a flash loan, money borrowed and paid back within that same transaction, so either the whole move happens or none of it does.
Aave does not know Revert Finance exists. Revert does not know about Aave. Uniswap knows about neither, and Morpho knows about none of them. Each is a closed world that understands its own positions and nothing else’s.
The isolation is deliberate. A lending protocol that had to understand every liquidity manager would be a lending protocol nobody could audit, and the isolation is why any of them can be trusted at all.
It does mean that moving between them is your problem.
What “your problem” costs
You hold wstETH as collateral at Aave and you want it working as a Uniswap range instead. The route is obvious and expensive:
- Repay enough debt to free the collateral
Which needs money you have not got, because it is in the collateral.
- Withdraw the wstETH
Now unencumbered, and now earning nothing.
- Sell half of it for the other side of the pair
The spread, once.
- Mint the range, vault it, borrow against it
Three more transactions, and the position is finally rebuilt.
Six transactions, two of them impossible without money you do not have, and a long middle where you hold loose tokens and no position at all. The market does not pause while you are between protocols.
What spans them
14 of the 67 operations exist precisely for this, and they all get around it the same way: borrow the shortfall for the length of one transaction, do the work, repay it before the transaction ends.
- Aave → a levered Uniswap range
- Repay Aave, withdraw the collateral, mint the range, re-borrow against it. The debt comes along; only what secures it changes
- Aave → a range you already hold
- Clear the existing borrow so the position can accept more, add the collateral, restore the borrow
- A levered range → Aave
- Burn the position and supply both sides, or land as a financed long, a true short, or a single collateral. You name which
- Lending protocol → lending protocol
- Morpho, Aave v3 and Aave v4 at either end. Name a destination taking the same collateral token and nothing is sold at all
None of those protocols changed. Nothing was integrated on their side, and none of them was asked for permission. The movement lives entirely in a contract that understands both ends, and the flash loan is what buys the moment in which both ends can be open at once.
The part that makes it a layer rather than a script
Anyone can write a script that does those six transactions in order. What a script cannot do is make them one.
Each can fail on its own. A failure at step four leaves you holding loose tokens and a half-dismantled position, and the recovery is a new plan written under pressure.
Either the whole move happens or none of it does. There is no state where your collateral is out and your position is at neither end.
That property means you can make the move while the market is moving, instead of only when it is quiet, and markets are rarely quiet at the moment you want to change position.
The borrowed money is also never yours. Morpho lends it to the adapter rather than to your account, so there is no instant at which it sits somewhere it could go wrong.
Where it stops, plainly
- Both ends must be listed. These reach curated markets and pairs, not any market you like. It is the same fixed set of actions that stops an agent naming an address, applied to venues.
- Aave v4 spokes cannot be crossed. A spoke counts only the collateral supplied to itself, and neither Aave nor this system moves a position from one to another. Aave said so on its own governance forum in July and pointed at the manual route.
- A Safe cannot run any of it. Every one is flash-funded, and a Safe cannot receive the callback without installing a module. Batched calls work; this does not.
- The guard is a denylist. It bans specific actions rather than permitting only known-good ones, and we have proven four attacks against ourselves.
Why this is the interesting problem
Composability was supposed to be the point of all this. In practice each protocol is composable with itself, and the joins are left to whoever is holding the position. That usually means selling, waiting, and rebuying at a worse price.
Integrating with Aave, Revert or Uniswap takes a morning each. The real work is the 14 operations that know two protocols at once, the flash loan that makes both open simultaneously, and a list of actions fixed tightly enough that an agent can choose among them without being able to invent one.