Skip to main content

FAQ

What are Morpho Optimizers?

Morpho Optimizer are peer-to-peer layers built on top of lending pools like Aave or Compound.

A Morpho Optimizer is a lending pool optimizer: it improves the capital efficiency of positions on lending pools by seamlessly matching lenders and borrowers peer-to-peer. By doing so, the Optimizer is enhancing your rates while preserving the same experience, liquidity, and parameters (collateral factors, oracles, etc.) as the underlying pool.

This means that by using Morpho Optimizers, you either receive, in the worst-case scenario, the APY of the underlying pool; or an improved APY thanks to P2P matching. The improved APY is called the P2P APY.

Why use Morpho Optimizers?

Morpho Optimizers enable one to supply and borrow crypto assets with optimal capital efficiency and deep liquidity.

How many are there?

Today, there are 3 different Optimizers, improving the rates on AaveV3, AaveV2 and CompoundV2:

  1. Morpho AaveV3-ETH Optimizer,
  2. Morpho AaveV2 Optimizer,
  3. Morpho CompoundV2 Optimizer.

While Morpho Optimizers are only deployed on the previous 3 instances, other Optimizer can be adapted for and deployed to any pool-based lending protocol.

Is there an interest-bearing token (ibToken)?

There is currently no ERC20 ibToken. However, your position is, of course, recorded in Morpho Optimizers' smart contracts. For example, you can visualize it on the different interfaces, Etherscan, DeBank, Zerion or other app supporting Morpho Optimizers.

Similar to Uniswap v3, Morpho Optimizer users have non-fungible positions. This is because some users are matched, and some others are not. It could be possible to eventually represent a Morpho position as an NFT, but it is currently not the case.

The Morpho Labs team has been working on a set of ERC4626 adapters to facilitate some integrations for the lenders' side. If this is something your use case needs, jump there or contact us directly.

What is the difference between Peer-to-Peer (P2P) and Peer-to-Pool (P2Pool)?

With P2Pool, lenders provide liquidity to a pool of assets, and borrowers borrow liquidity from it. Instead of each party interacting directly with the other, they interact with a commonly shared pool. In that case, yields are socialized, meaning that the lenders share the interests paid by the borrowers proportionally to their share of the pool.

With P2P lending, lenders and borrowers are matched together directly without going through a pool. In that case, yields are not socialized, meaning that each lender gets the same interest rate as the one paid by matched borrowers.

Is Morpho Optimizer's P2P APY still interesting if the protocol it plugs into offers rewards?

Liquidity mining rewards can reduce the net APY (APY + rewards) spread between the lending and the borrowing side. If rewards campaigns are intense, it can even invert it, i.e., borrow APY < supply APY. In this scenario, Morpho Optimizers can deactivate peer-to-peer matching to guarantee at least the liquidity mining inflated APY. Still, it will be less likely to have a strictly better APY.

Moreover, Morpho started a MORPHO rewards campaign which comes in the addition of native APY or the $COMP rewards. Hence, Morpho CompoundV2 Optimizer users are always strictly better than on Compound.

Why use P2P?

P2P is much more capital efficient than P2Pool. As a P2P layer on top of liquidity pools, Morpho Optimizer combines the capital efficiency of P2P with the instant liquidity of P2Pool.

We explain this in more detail in the core concepts.

How does the matching engine work?

You can read more about the concept here and here. You can also deep dive into the topic in the Optimizers' documentation.

Can I be partially matched P2P?

Yes. If there are not enough peers to match the total amount that a user deposited/borrowed, it is possible to have some funds matched and the rest sourced through the pool. In this case, the liquidity that matches P2P will earn the P2P APY while the rest of the liquidity will earn the pool's APY.

What happens if I don't have a P2P match?

If a user does not get matched instantly, he/she will still enjoy the same rates as the underlying pool, plus the MORPHO rewards. Moreover, the user can be matched later as new users come to Morpho.

Why is the P2P APY disabled?

Sometimes, the P2P APY is disabled for one of the following reasons:

  • The underlying pool's rewards create an inverted spread.
  • The borrowing cap set up by the underlying protocol has not yet been taken into account in the formal Morpho model. As Morpho insists on security, governance deactivated it.
  • The borrow function is disabled by the underlying pool.

Which chain?

Today, Morpho Optimizers are deployed on Ethereum Mainnet only.

Is the P2P matching engine fully scalable?

Even though Morpho's matching engine requires looping the number of users, it is still scalable despite the constraints of blockchain. Indeed, Morpho's algorithm uses a finite number of iterations delimited by a maximum gas cost value for matching. So, if some liquidity is not matched P2P after reaching the maximum gas cost, whatever value remains unmatched will fall back on the pool. Hence, the full scalability of Morpho.

How do I integrate Morpho Optimizer?

You've come to the right place! You will find everything you need by browsing this documentation. Heads up in the contracts section for technical references.

If you already integrated Aave, switching to Morpho requires a few adjustments. If you still have questions after reading the docs, don't hesitate to jump into the discord or contact us.

How to contribute to Morpho?

Morpho Labs is one of the core contributors to Morpho. If you are looking for a job, feel free to go to jobs.morpho.org and check the available positions.

As a supplier, do I still have instant liquidity if I want to withdraw a large amount (e.g.,>100M$) that is matched P2P?

Morpho is as liquid as the protocol it plugs into. If sufficient liquidity exists in the underlying lending pool, you can withdraw the total amount, even if you were matched P2P. You can find more details in the Fallback mechanisms and the Delta mechanism sections.

How is the P2P APY calculated?

The P2P APY is calculated as follows:

p2pRate=α×poolBorrowRate+(1α)×poolSupplyRatep2pRate = \alpha \times poolBorrowRate + (1-\alpha) \times poolSupplyRate

Where:

  • α\alpha is called the peer-to-peer index cursor.
  • poolBorrowRatepoolBorrowRate and poolSupplyRatepoolSupplyRate correspond to the underlying pool's Borrow and Supply rates. Morpho updates this information every time one of Morpho's functions is called by anyone or if someone directly calls the Update function.

Both parameters are defined by governance. In some edge cases, a small spread may be applied on either side due to the delta mechanism. Additionally, governance can decide to activate a small spread to accumulate funds in the reserve.

How do you minimize smart contract risks?

Learn more about our security practices here.

How COMP rewards are distributed?

Morpho CompoundV2 Optimizer is redistributing all COMP accrued to users with a pool position. If a user is matched peer-to-peer, it will receive only the interest of native APY. But, the peer to peer matching is activated only when the COMP rewards are not profitable compared to a matched position.

How can I approve more USDT - or CRV to Morpho Optimizer?

To allow Morpho Optimizer contract to spend ERC20 tokens on your behalf, you first need to approve the Morpho Optimizer contract to use your tokens. This mechanism is required to supply (deposit underlying asset through Morpho) or repay (repay a debt of someone including you, with your token balance) on Morpho. So now, let's assume that you have approved x tokens A to Morpho as a spender (tokenA.approve(Morpho, x)). If you want to approve more (for example to repay more debt), you can call the approve function again. However, it will revert to USDT & CRV since this ERC20 has a specific approval mechanism. In a few words, if you already have given an allowance to morpho (allowed(yourAddress, Morpho) > 0), you can not approve more tokens. So to unlock your approval to Morpho, you first need to set your approval to 0 (USDT.approve(Morpho, 0)), and then, you will be able to choose your allowance.

The Morpho Optimizer interfaces are handling these 2 steps for you. However, if you want to do it manually, you can follow these steps:

The simplest way to allow 0 to Morpho contracts is to go through Etherscan and for each asset you want to re-approve: (verify the official address).

A. USDT token:

  1. 0xdac17f958d2ee523a2206206994597c13d831ec7 then go to the "write contract" section, connect your account, and click on "approve".

  2. Set the Morpho address as a spender (0x8888882f8f843896699869179fB6E4f7e3B58888 for Morpho CompoundV2 Optimizer and 0x777777c9898d384f785ee44acfe945efdff5f3e0 for Morpho AaveV2 Optimizer), and enter 0 as the amount.

B. CRV token:

  1. (almost the same as USDT) 0xD533a949740bb3306d119CC777fa900bA034cd52 then go to the "write contract" section, connect your account, and click on "approve".

  2. Set the Morpho address as a spender (0x8888882f8f843896699869179fB6E4f7e3B58888 for Morpho CompoundV2 Optimizer and 0x777777c9898d384f785ee44acfe945efdff5f3e0 for Morpho AaveV2 Optimizer), and enter 0 as the amount.

USDT token on Etherscan explorer

USDT token on Etherscan explorer

Then, sign and send the transaction to the blockchain. When the transaction will be validated, you can do the same thing with the desired amount instead of 0, or go through one dApp of Morpho, such as Morpho AaveV2 Optimizer or Morpho CompoundV2 Optimizer

How can I get maToken or mcToken?

Please refer to the dedicated section detailing step-by-step how to get ma/mcTokens.

Did we answer all your questions? If not, please reach out on Discord or via email.