Executed

Add msETH Collateral


Proposal ID

708451...0162

Proposed

Aug 18th, 2025

Result details
Final Votes

Quorum

22.59K of 9.74K

Majority support

Yes

For

22.59K

Against

0

Abstain

0

Actions

Type

Address

Details

Custom

0xfE79...6143

deployCollateralJoin(..)

Custom

Account

0xfE79...6143

Method

deployCollateralJoin(..)

Custom

0x81c5...B427

initializeCollateralType(..)

Custom

Account

0x81c5...B427

Method

initializeCollateralType(..)

Custom

0x9Ff8...A700

initializeCollateralType(..)

Custom

Account

0x9Ff8...A700

Method

initializeCollateralType(..)

Custom

0x6270...b3A6

initializeCollateralType(..)

Custom

Account

0x6270...b3A6

Method

initializeCollateralType(..)

Proposal

Proposal: Add msETH as Collateral

Summary

This proposal adds msETH (Metronome Staked ETH) as an approved collateral type in HAI Protocol.

As part of the launch, the following actions will take place:

  • Metronome Treasury Commitment: Deposit msETH into HAI vaults, mint HAI, provide liquidity in the HAI/msETH pool on Velodrome, and fund bribes to attract veVELO votes.
  • HAI DAO Incentives: Provide KITE rewards to users minting HAI against msETH.
  • Aligned Incentives: Metronome has agreed to stake KITE earned from these incentives, boosting their haiVELO rewards and earning a share of protocol fees.

This structure ensures immediate liquidity, active incentives, and aligned governance participation between HAI DAO and Metronome.

We have already deployed an oracle for msETH in an earlier governance proposal.

msETH Oracle Deployment Proposal

Motivation

  • Diversified collateral base: msETH expands HAI’s collateral types with a staked ETH derivative, increasing protocol resilience.
  • Liquidity depth from day one: Metronome’s treasury deployment guarantees seeded liquidity in the HAI-msETH Velodrome pool.
  • Incentive alignment: HAI DAO offers KITE rewards for msETH minters, while Metronome commits to staking KITE to support haiVELO and earn protocol fees.
  • Flywheel acceleration: Bribes on Velodrome gauges will attract veVELO votes, directing emissions into the HAI/msETH pool and creating sustainable yield.

Incentive Framework

  1. KITE rewards for msETH minters
    • Allocated by HAI DAO to incentivize borrowing against msETH.
    • Distributed proportionally to minted HAI positions.
  2. Metronome KITE staking
    • KITE earned will be staked into haiVELO.
    • Boosts Velodrome gauge positions, compounding liquidity yields.
    • Earns protocol fees distributed back to stakers in HAI.
  3. Liquidity flywheel
    • Metronome adds HAI-msETH liquidity on Velodrome.
    • Bribes attract veVELO votes → emissions directed to pool.
    • LP yield increases → more external liquidity providers join.
    • HAI liquidity grows → stronger peg and higher utility.

Voting Options

  • FOR: Add msETH as a collateral type, provide KITE incentives for msETH minters, and launch with Metronome’s treasury commitments to deposit, LP, bribe, and stake KITE.
  • AGAINST: Do not onboard msETH at this time.
  • ABSTAIN

Details

Adding a new collateral to the system requires deploying multiple contracts and calling functions on existing ones to initialize the new collateral.

Each collateral has it's own set of parameters that define how it interacts with the rest of the HAI system.

msETH Collateral Parameters

General

ParameterValue
Token NamemsETH
Token Address0x1610e3c85dd44af31ed7f33a63642012dca0c5a5

Collateral Auction House

ParameterValue
minimumBid100 HAI
minDiscount0% (no discount)
maxDiscount20%
perSecondDiscountUpdateRate2 hours

Oracle / Price Feed

DescriptionDetails
Oracle CompatibilityPyth with adapter contract
Price Feed0xff1a0f4744e8582df1ae09d5611b887b6a12925c
Pyth Aggregator0xCAbaaC238Ab70888bCC13Ff93Fe31d8614A25224
Chainlink Relayer0x76aeE3317Bae632C40593cFBD767aebDd5b1FA82
Delayed Oracle0x431C32ae868505093Cd9E4F761B63a60002DD26F

SAFEEngine

ParameterValue
debtCeiling250,000 HAI
debtFloor150 HAI

Oracle Relayer

ParameterValue
safetyCRatio135%
liquidationCRatio130%

TaxCollector

ParameterValue
stabilityFee2%

LiquidationEngine

ParameterValue
liquidationPenalty20%
liquidationQuantity50,000 HAI

This proposal will have 9 actions

// 0x4d53455448000000000000000000000000000000000000000000000000000000
bytes32 constant MSETH = bytes32("MSETH");

1. Deploy a new collateral join for MSETH in the Collateral Join Factory [Executable Code Function 1]

address OP_MSETH_ADDRESS = 0x1610e3c85dd44Af31eD7f33a63642012Dca0C5A5;

collateralJoinFactory.deployCollateralJoin({_cType: MSETH, _collateral: OP_MSETH_ADDRESS});

2. Initialize new collateral in the Collateral Auction House Factory. This will deploy a new collateral auction house for MSETH. [Executable Code Function 2]

bc -l <<< 'scale=27; e( l(.80)/(60 * 60 * 2) )'
 .999969008320347275063858549
 999_969_008_320_347_275_063_858_549

 _collateralAuctionHouseParams[MSETH] = ICollateralAuctionHouse
    .CollateralAuctionHouseParams({
        minimumBid: 100 * WAD, // 100 HAI
        minDiscount: 1e18, // no discount
        maxDiscount: 0.8e18, // -20%
        perSecondDiscountUpdateRate: 999_969_008_320_347_275_063_858_549 // -20% / 2hs
});

// Encoded Params:
0x0000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000033b27ac8fdc450a6cb21575

3. Initialize the new collateral in the SAFE (Vault) Engine [Executable Code Function 3]

_safeEngineCParams[MSETH] = ISAFEEngine.SAFEEngineCollateralParams({
    debtCeiling: 250_000 * RAD, // 100k HAI
    debtFloor: 150 * RAD // 150 HAI
});

// Encoded Params: 0x0000000000000000000000ab0e93b6efee00538eea0d047a457a0000000000000000000000000000000000001a463b8d8ef089acfcf74dc68649c00000000000

safeEngine.initializeCollateralType(MSETH, abi.encode(_safeEngineCParams[MSETH]));

4. Initialize the new collateral in the Oracle Relayer [Executable Code Function 4]

delayedOracle[MSETH] = IDelayedOracle(
    0x2939f74b2d9b43B9A29bF3333eE213DE175919A4
);

_oracleRelayerCParams[MSETH] = IOracleRelayer.OracleRelayerCollateralParams({
    oracle: delayedOracle[MSETH],
    safetyCRatio: 1.35e27, // 135%
    liquidationCRatio: 1.3e27 // 130%
});

// Encoded Params: 0x000000000000000000000000431c32ae868505093cd9e4f761b63a60002dd26f0000000000000000000000000000000000000000045cb19ea48cad1f060000000000000000000000000000000000000000000000043355b53628a6b594000000

oracleRelayer.initializeCollateralType(MSETH, abi.encode(_oracleRelayerCParams[MSETH]));

5. Initialize the new collateral in the Liquidation Engine [Executable Code Function 5]

address MSETH_CAH = 0x08d9565f961c757bA6A3e323601faa23CF75D5A2; // Simulated from step 2

_liquidationEngineCParams[MSETH_CAH] = ILiquidationEngine
    .LiquidationEngineCollateralParams({
        collateralAuctionHouse: MSETH_CAH, // CAH from step 2
        liquidationPenalty: 1.2e18, // 20%
        liquidationQuantity: 50_000 * RAD // 50k HAI
});

// Encoded Params:
0x00000000000000000000000008d9565f961c757ba6a3e323601faa23cf75d5a200000000000000000000000000000000000000000000000010a741a462780000000000000000000000000022361d8afcc93343e962029a7edab2000000000000

liquidationEngine.initializeCollateralType(MSETH, abi.encode(_liquidationEngineCParams[MSETH]));

6. Initialize the new collateral in the Tax Collector [Executable Code Function 6]

bc -l <<< 'scale=27; e( l(1.02)/(60 * 60 * 24 * 365) )'
1.000000000627937192491029810
1_000_000_000_627_937_192_491_029_810

_taxCollectorCParams[MSETH].stabilityFee = 1_000_000_000_627_937_192_491_029_810; // 2% / yr

// Encoded Params: 0x0000000000000000000000000000000000000000033b2e3ca88761c99baf1532

taxCollector.initializeCollateralType(MSETH, abi.encode(_taxCollectorCParams[MSETH]));

7. Add first secondary tax receiver: Stability Fee Treasury [Executable Code Function 7]

// 0x7365636f6e646172795461785265636569766572000000000000000000000000
bytes32 constant SECONDARY_TAX_RECEIVER = bytes32("secondaryTaxReceiver");

note: These are the same secondary tax receivers that are set on the system's other collaterals.

ITaxCollector.TaxReceiver memory firstSecondaryReceiver = ITaxCollector.TaxReceiver({
    receiver: 0xE9E54c55d41D6622933F9F736e0c55484b3c4f6f, // Stability Fee Treasury
    canTakeBackTax: true, // [bool]
    taxPercentage: 0.2e18 // 20%
});

// Encoded Params:
0x000000000000000000000000e9e54c55d41d6622933f9f736e0c55484b3c4f6f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000002c68af0bb140000

taxCollector.modifyParameters(MSETH, SECONDARY_TAX_RECEIVER, abi.encode(firstSecondaryReceiver));

8. Add second secondary tax receiver: Admin Safe [Executable Code Function 8]

ITaxCollector.TaxReceiver memory secondSecondaryReceiver = ITaxCollector.TaxReceiver({
    receiver: 0x468c572c41DB8B206B3919AC9a41ad8dE2eAc822, // Admin Safe
    canTakeBackTax: true, // [bool]
    taxPercentage: 0.21e18 // 21%
});

// Encoded Params: 0x000000000000000000000000468c572c41db8b206b3919ac9a41ad8de2eac822000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000002ea11e32ad50000

taxCollector.modifyParameters(MSETH, SECONDARY_TAX_RECEIVER, abi.encode(secondSecondaryReceiver));

9. Setup initial price for the collateral. [Executable Code Function 9]

oracleRelayer.updateCollateralPrice(MSETH);

Function Call Script

Contracts referenced in this proposal

  1. Chainlink Relayer (MSETH) -0x76aeE3317Bae632C40593cFBD767aebDd5b1FA82
  2. Delayed Oracle (MSETH) -0x431C32ae868505093Cd9E4F761B63a60002DD26F
  3. Collateral Join Factory -0xfE7987b1Ee45a8d592B15e8E924d50BFC8536143
  4. Collateral Auction House Factory -0x81c5C2DA8C1a74c6077B03aD69ca04b74b94B427
  5. SAFE (Vault) Engine -0x9Ff826860689483181C5FAc9628fd2F70275A700
  6. Oracle Relayer -0x6270403b908505F02Da05BE5c1956aBB59FDb3A6
  7. Liquidation Engine -0x8Be588895BE9B75F9a9dAee185e0c2ad89891b56
  8. Tax Collector -0x62B82ccE08f8F2D808348409E9418c65EB1973C3
  9. Stability Fee Treasury -0xE9E54c55d41D6622933F9F736e0c55484b3c4f6f
  10. Admin Safe - 0x468c572c41DB8B206B3919AC9a41ad8dE2eAc822
  11. msETH Token - 0x1610e3c85dd44af31ed7f33a63642012dca0c5a5
Final Votes

Quorum

22.59K of 9.74K

Majority support

Yes

For

22.59K

Against

0

Abstain

0

Final Votes
Status

Mon Aug 18, 06:03 pm

Draft created

Mon Aug 18, 06:35 pm

Published onchain

Tue Aug 19, 06:35 am

Voting period started

Wed Aug 20, 06:35 pm

Voting period ended

Wed Aug 20, 06:51 pm

Proposal queued

Thu Aug 21, 07:21 pm

Proposal executed