Skip to content

Commit d07e67b

Browse files
committed
Merge branch 'main' into fix/oev-wrapper-tests
2 parents 8c55b7d + 7f6278e commit d07e67b

File tree

4 files changed

+108
-5
lines changed

4 files changed

+108
-5
lines changed

proposals/mips/mip-b51/MIP-B51.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# MIP-B51: Change Moonwell USDC Ecosystem Vault Timelock
2+
3+
**Author(s):** Moonwell DAO **Submission Date:** October 27th, 2025
4+
5+
## Summary
6+
7+
This proposal updates the Moonwell USDC Ecosystem Vault Timelock to a 72-hour
8+
delay, aligning it with the latest risk management and operational standards
9+
requested by Anthias and confirmed by the team. The The Moonwell Ecosystem USDC
10+
vault allows for borrowable liquidity for three new isolated markets on Base,
11+
WELL/USDC, stkWELL/USDC, and MAMO/USDC. Vault depositors are rewarded with fees
12+
creating a beneficial relationship. The stkWELL/USDC market in particular will
13+
allow for new utility by giving liquid access for safety module users. Finally,
14+
this launch culminates the creation of a credit facility to support Moonwell and
15+
its operational expansion.
16+
17+
## Motivation
18+
19+
The current timelock setting does not provide an optimal delay for governance
20+
and operational safety. Per Morpho documentation and confirmed by the
21+
MetaMorphoV1_1 contract implementation, only the vault owner can modify the
22+
timelock parameter.
23+
24+
This proposal ensures the vault’s delay aligns with community standards and
25+
allows sufficient buffer time for review before execution.
26+
27+
## Implementation
28+
29+
If this proposal passes, the following onchain actions will be executed:
30+
31+
Action:
32+
33+
- Call setTimelock(72 hours) on the Vault contract.
34+
35+
## Voting Options
36+
37+
- **For:** Change the timelock
38+
- **Against:** Do not change the timelock
39+
- **Abstain**
40+
41+
## Conclusion
42+
43+
Updating the timelock to 72 hours for the Moonwell USDC Ecosystem Vault enhances
44+
operational security while maintaining flexibility for governance and curators.
45+
This adjustment aligns the vault with Moonwell’s broader risk management
46+
standards and ensures that all future vault actions are subject to a
47+
standardized 72-hour review window, improving transparency and stakeholder
48+
confidence.

proposals/mips/mip-b51/mip-b51.sol

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//SPDX-License-Identifier: GPL-3.0-or-later
2+
pragma solidity 0.8.19;
3+
4+
import "@forge-std/Test.sol";
5+
6+
import {Configs} from "@proposals/Configs.sol";
7+
import {BASE_FORK_ID} from "@utils/ChainIds.sol";
8+
import {HybridProposal} from "@proposals/proposalTypes/HybridProposal.sol";
9+
import {IMetaMorphoBase} from "@protocol/morpho/IMetaMorpho.sol";
10+
import {ParameterValidation} from "@proposals/utils/ParameterValidation.sol";
11+
import {AllChainAddresses as Addresses} from "@proposals/Addresses.sol";
12+
13+
/// DO_VALIDATE=true DO_PRINT=true DO_BUILD=true DO_RUN=true forge script
14+
/// proposals/mips/mip-b51/mip-b51.sol:mipb51
15+
contract mipb51 is HybridProposal, Configs, ParameterValidation {
16+
string public constant override name = "MIP-B51";
17+
18+
uint256 public constant NEW_TIMELOCK = 3 days;
19+
20+
constructor() {
21+
bytes memory proposalDescription = abi.encodePacked(
22+
vm.readFile("./proposals/mips/mip-b51/MIP-B51.md")
23+
);
24+
25+
_setProposalDescription(proposalDescription);
26+
}
27+
28+
function primaryForkId() public pure override returns (uint256) {
29+
return BASE_FORK_ID;
30+
}
31+
32+
function deploy(Addresses addresses, address) public override {}
33+
34+
function build(Addresses addresses) public override {
35+
_pushAction(
36+
addresses.getAddress("meUSDC_METAMORPHO_VAULT"),
37+
abi.encodeWithSignature("submitTimelock(uint256)", NEW_TIMELOCK),
38+
"Set the timelock for the meUSDC Metamorpho Vault to 3 days"
39+
);
40+
}
41+
42+
function teardown(Addresses addresses, address) public pure override {}
43+
44+
/// @notice assert that the new timelock is set correctly
45+
function validate(Addresses addresses, address) public view override {
46+
assertEq(
47+
IMetaMorphoBase(addresses.getAddress("meUSDC_METAMORPHO_VAULT"))
48+
.timelock(),
49+
NEW_TIMELOCK,
50+
"meUSDC Metamorpho Vault timelock incorrect"
51+
);
52+
}
53+
}

proposals/mips/mips.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
"path": "x34.sol/x34.json",
77
"proposalType": "HybridProposal"
88
},
9+
{
10+
"envpath": "",
11+
"governor": "MultichainGovernor",
12+
"id": 126,
13+
"path": "mip-b51.sol/mipb51.json",
14+
"proposalType": "HybridProposal"
15+
},
916
{
1017
"envpath": "",
1118
"governor": "MultichainGovernor",

test/utils/LiveProposalCheck.sol

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ contract LiveProposalCheck is Test, ProposalChecker, Networks {
247247
,
248248

249249
) = governor.proposalInformation(proposalId);
250-
251250
// Only vote if not in voting period
252251
if (
253252
block.timestamp > votingStartTime &&
@@ -469,7 +468,6 @@ contract LiveProposalCheck is Test, ProposalChecker, Networks {
469468

470469
temporalGovernor.queueProposal(vaa);
471470

472-
console.log("block timestamp after queueing: ", block.timestamp);
473471
vm.warp(block.timestamp + temporalGovernor.proposalDelay());
474472

475473
try temporalGovernor.executeProposal(vaa) {} catch (bytes memory e) {
@@ -502,9 +500,6 @@ contract LiveProposalCheck is Test, ProposalChecker, Networks {
502500

503501
vm.selectFork(activeFork);
504502

505-
console.log("temporalGovernor");
506-
console.log(address(temporalGovernor));
507-
508503
temporalGovernor.executeProposal(vaa);
509504

510505
proposal.afterSimulationHook(addresses);

0 commit comments

Comments
 (0)