Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/morpho-org/vault-v2/llms.txt

Use this file to discover all available pages before exploring further.

MorphoVaultV1AdapterFactory

Factory contract for deploying MorphoVaultV1Adapter instances. This factory enables VaultV2 contracts to wrap MetaMorpho (Morpho Vault V1) positions as adapters.

Overview

The MorphoVaultV1AdapterFactory uses CREATE2 deployment with a fixed salt (bytes32(0)) to create deterministic adapter addresses. It tracks deployed adapters using a two-dimensional mapping structure that indexes by both parent vault and the underlying MetaMorpho vault.

State variables

morphoVaultV1Adapter
mapping(address => mapping(address => address))
Nested mapping that returns the adapter address for a given parent vault and MetaMorpho vault combination. Returns address(0) if no adapter exists.Usage: morphoVaultV1Adapter[parentVault][morphoVaultV1]
isMorphoVaultV1Adapter
mapping(address => bool)
Returns true if an address is a MorphoVaultV1Adapter deployed by this factory.

Functions

createMorphoVaultV1Adapter

function createMorphoVaultV1Adapter(address parentVault, address morphoVaultV1) external returns (address)
Deploys a new MorphoVaultV1Adapter that connects a parent VaultV2 to an underlying MetaMorpho vault.
parentVault
address
required
The VaultV2 address that will use this adapter
morphoVaultV1
address
required
The MetaMorpho (Vault V1) address to wrap
return
address
The address of the newly deployed adapter
Each combination of parent vault and MetaMorpho vault can only have one adapter. Attempting to create a duplicate will revert during deployment.

Events

CreateMorphoVaultV1Adapter

event CreateMorphoVaultV1Adapter(
    address indexed parentVault,
    address indexed morphoVaultV1,
    address indexed adapter
)
Emitted when a new adapter is deployed.

Usage example

// Deploy factory
MorphoVaultV1AdapterFactory factory = new MorphoVaultV1AdapterFactory();

// Create adapter wrapping a MetaMorpho vault
address adapter = factory.createMorphoVaultV1Adapter(
    vaultV2Address,
    metaMorphoVaultAddress
);

// Verify adapter was created
assert(factory.isMorphoVaultV1Adapter(adapter));

// Retrieve adapter address
address existingAdapter = factory.morphoVaultV1Adapter(
    vaultV2Address,
    metaMorphoVaultAddress
);

Use cases

Fee wrapper vaults

The most common use case is creating “fee wrapper” vaults that add a fee layer on top of existing MetaMorpho vaults:
// Create VaultV2 that wraps an existing MetaMorpho vault
address feeWrapper = vaultFactory.createVaultV2(owner, asset, salt);

// Create adapter connecting to underlying MetaMorpho vault
address adapter = morphoVaultV1AdapterFactory.createMorphoVaultV1Adapter(
    feeWrapper,
    underlyingMetaMorphoVault
);

// Configure fee wrapper to use the adapter
IVaultV2(feeWrapper).addAdapter(adapter);
IVaultV2(feeWrapper).setLiquidityAdapterAndData(adapter, hex"");
See FeeWrapperDeployer for a complete implementation example.

Build docs developers (and LLMs) love