A VaultV2 fee wrapper that charges performance fees on top of an existing Morpho vault. Deployed via FeeWrapperDeployer — a single-use contract that configures the vault, sets fees, timelocks, and abdications.
Copy .env.base or .env.mainnet and fill in the required values:
| Variable | Description |
|---|---|
NETWORK |
Network name (base, mainnet) |
RPC_URL |
RPC endpoint |
ASSET_ADDRESS |
Underlying asset (e.g. USDC) |
CHILD_VAULT |
Morpho vault to wrap |
VAULT_V2_FACTORY |
VaultV2 factory address — see Morpho addresses |
VAULT_V1_ADAPTER_FACTORY |
Adapter factory address — see Morpho addresses |
OWNER |
Vault owner address |
SENTINEL |
Sentinel address |
FEE_RECIPIENT |
Fee recipient address |
DEPLOYER_PK |
Deployer private key |
OWNER_PK |
Owner private key (post-deploy ops) |
SENTINEL_PK |
Sentinel private key (post-deploy ops) |
VAULT_SALT |
Salt for deterministic vault address |
VAULT_NAME |
ERC20 name |
VAULT_SYMBOL |
ERC20 symbol |
ETHERSCAN_API_KEY |
For contract verification |
Set the active network in .env:
NETWORK=base
The deployer account must hold at least 1 USDC (seed amount for dead mint).
bash scripts/deploy.shThis deploys the vault and verifies it on the block explorer.
Use the interactive menu:
bash scripts/menu.shOr run scripts directly:
| Script | Description |
|---|---|
scripts/status.sh |
Vault state, fees, timelocks, abdications |
scripts/submit.sh |
Submit a timelocked call |
scripts/execute.sh |
Execute after timelock expires |
scripts/revoke.sh |
Cancel a pending submission (sentinel) |
scripts/verify-pending.sh |
Check if a submission is pending |
scripts/increase-timelock.sh |
Increase a function timelock |
scripts/decrease-timelock.sh |
Decrease a function timelock |
scripts/abdicate.sh |
Permanently disable a function |
scripts/transfer-ownership.sh |
Transfer vault ownership |
scripts/deposit.sh |
Deposit assets into the vault |
scripts/withdraw.sh |
Redeem shares for assets |