Add Yearn Finance’s msETH/WETH Autocompounding LP Vault as Collateral for HAI
Result details
Final Votes
Quorum
38.01K of 9.74K
Majority support
Yes
For
38.01K
Against
0
Abstain
0
Actions
Type
Address
Details
Proposal
Proposal
Overview
This proposal adds Velodrome v2 msETH-WETH Factory Yearn vault tokens as an approved collateral type in HAI Protocol, extending our initial collaboration with Metronome on msETH collateral.
By integrating the Yearn vault, HAI can support leveraged liquidity provisioning for the msETH-WETH Velodrome pool while capturing Yearn’s auto-compounded yield.
This strengthens the msETH collateral ecosystem, deepens HAI liquidity, and builds on the DAO’s strategic alignment with Metronome.
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-WETH LP Yearn Vault Collateral Parameters
General
| Parameter | Value |
|---|---|
| Token Name | yvVelo-msETH-WETH-f |
| Token Address | 0xd0d2Ac44Cc842079e978bB11b094764f7D0dec6A |
Collateral Auction House
| Parameter | Value |
|---|---|
minimumBid | 100 HAI |
minDiscount | 0% (no discount) |
maxDiscount | 20% |
perSecondDiscountUpdateRate | 2 hours |
Oracle / Price Feed
| Description | Details |
|---|---|
| Oracle Compatibility | |
| PessimisticVeloSingleOracle | 0x557c249ee1b982397ae0FCF3dA94665Fb2a19E6c |
| msETH Price Feed | 0xCAbaaC238Ab70888bCC13Ff93Fe31d8614A25224 |
| WETH Price Feed | x13e3Ee699D1909E989722E753853AE30b17e08c5 |
| Yearn Velo Vault Relayer | 0xde369a4ebb943d2b208503d810065ee2b88d1768 |
| Delayed Oracle | 0xb780ebA83D6210B4f7fcc86B2996F2918Eb7B14b |
SAFEEngine
| Parameter | Value |
|---|---|
debtCeiling | 200,000 HAI |
debtFloor | 150 HAI |
Oracle Relayer
| Parameter | Value |
|---|---|
safetyCRatio | 180% |
liquidationCRatio | 175% |
TaxCollector
| Parameter | Value |
|---|---|
stabilityFee | 2.5% |
LiquidationEngine
| Parameter | Value |
|---|---|
liquidationPenalty | 20% |
liquidationQuantity | 50,000 HAI |
This proposal will have 9 actions
// 0x59562d56454c4f2d4d534554482d574554480000000000000000000000000000
bytes32 constant YV_VELO_MSETH_WETH = bytes32("YV-VELO-MSETH-WETH");
1. Deploy a new collateral join for YV_VELO_MSETH_WETH in the Collateral Join Factory [_Executable Code Function 1*]
address OP_YV_VELO_MSETH_WETH_ADDRESS = 0xd0d2Ac44Cc842079e978bB11b094764f7D0dec6A;
collateralJoinFactory.deployCollateralJoin({_cType: YV_VELO_MSETH_WETH, _collateral: OP_YV_VELO_MSETH_WETH_ADDRESS});
2. Initialize new collateral in the Collateral Auction House Factory. This will deploy a new collateral auction house for YV_VELO_MSETH_WETH. [_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[YV_VELO_MSETH_WETH] = 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[YV_VELO_MSETH_WETH] = ISAFEEngine.SAFEEngineCollateralParams({
debtCeiling: 200_000 * RAD, // 200k HAI
debtFloor: 150 * RAD // 150 HAI
});
// Encoded Params: 0x000000000000000000000088d8762bf324cd0fa5880a69fb6ac80000000000000000000000000000000000001a463b8d8ef089acfcf74dc68649c00000000000
safeEngine.initializeCollateralType(YV_VELO_MSETH_WETH, abi.encode(_safeEngineCParams[YV_VELO_MSETH_WETH]));
4. Initialize the new collateral in the Oracle Relayer [Executable Code Function 4]
delayedOracle[YV_VELO_MSETH_WETH] = IDelayedOracle(
0xb780ebA83D6210B4f7fcc86B2996F2918Eb7B14b
);
_oracleRelayerCParams[YV_VELO_MSETH_WETH] = IOracleRelayer.OracleRelayerCollateralParams({
oracle: delayedOracle[YV_VELO_MSETH_WETH],
safetyCRatio: 1.8e27, // 180%
liquidationCRatio: 1.75e27 // 175%
});
// Encoded Params: 0x000000000000000000000000b780eba83d6210b4f7fcc86b2996f2918eb7b14b000000000000000000000000000000000000000005d0ecd38610e6d408000000000000000000000000000000000000000000000005a790ea17ace06a96000000
oracleRelayer.initializeCollateralType(YV_VELO_MSETH_WETH, abi.encode(_oracleRelayerCParams[YV_VELO_MSETH_WETH]));
5. Initialize the new collateral in the Liquidation Engine [Executable Code Function 5]
address YV_VELO_MSETH_WETH_CAH = 0x430555C6345f4A26DD123F81BE1925968f341A14; // Simulated from step 2
_liquidationEngineCParams[YV_VELO_MSETH_WETH] = ILiquidationEngine
.LiquidationEngineCollateralParams({
collateralAuctionHouse: YV_VELO_MSETH_WETH_CAH, // CAH from step 2
liquidationPenalty: 1.2e18, // 20%
liquidationQuantity: 50_000 * RAD // 50k HAI
});
// Encoded Params:
0x000000000000000000000000430555c6345f4a26dd123f81be1925968f341a1400000000000000000000000000000000000000000000000010a741a462780000000000000000000000000022361d8afcc93343e962029a7edab2000000000000
liquidationEngine.initializeCollateralType(YV_VELO_MSETH_WETH, abi.encode(_liquidationEngineCParams[YV_VELO_MSETH_WETH]));
6. Initialize the new collateral in the Tax Collector [Executable Code Function 6]
bc -l <<< 'scale=27; e( l(1.025)/(60 * 60 * 24 * 365) )'
1.000000000782997609082909351
1_000_000_000_782_997_609_082_909_351
_taxCollectorCParams[YV_VELO_MSETH_WETH].stabilityFee = 1_000_000_000_782_997_609_082_909_351; // 2.5% / yr
// Encoded Params: 0x0000000000000000000000000000000000000000033b2e3caaae446a355df2a7
taxCollector.initializeCollateralType(YV_VELO_MSETH_WETH, abi.encode(_taxCollectorCParams[YV_VELO_MSETH_WETH]));
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(YV_VELO_MSETH_WETH, 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: 0x000000000000000000000000e9e54c55d41d6622933f9f736e0c55484b3c4f6f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000002c68af0bb140000
taxCollector.modifyParameters(YV_VELO_MSETH_WETH, SECONDARY_TAX_RECEIVER, abi.encode(secondSecondaryReceiver));
9. Setup initial price for the collateral. [Executable Code Function 9]
oracleRelayer.updateCollateralPrice(YV_VELO_MSETH_WETH);
Contracts referenced in this proposal
- Yearn Velo Vault Relayer (YV_VELO_MSETH_WETH) -
0xde369a4ebb943d2b208503d810065ee2b88d1768 - Delayed Oracle (YV_VELO_MSETH_WETH) -
0xb780ebA83D6210B4f7fcc86B2996F2918Eb7B14b - Collateral Join Factory -
0xfE7987b1Ee45a8d592B15e8E924d50BFC8536143 - Collateral Auction House Factory -
0x81c5C2DA8C1a74c6077B03aD69ca04b74b94B427 - SAFE (Vault) Engine -
0x9Ff826860689483181C5FAc9628fd2F70275A700 - Oracle Relayer -
0x6270403b908505F02Da05BE5c1956aBB59FDb3A6 - Liquidation Engine -
0x8Be588895BE9B75F9a9dAee185e0c2ad89891b56 - Tax Collector -
0x62B82ccE08f8F2D808348409E9418c65EB1973C3 - Stability Fee Treasury -
0xE9E54c55d41D6622933F9F736e0c55484b3c4f6f - Admin Safe -
0x468c572c41DB8B206B3919AC9a41ad8dE2eAc822 - yvVelo-msETH-WETH Token -
0xd0d2Ac44Cc842079e978bB11b094764f7D0dec6A
Final Votes
Quorum
38.01K of 9.74K
Majority support
Yes
For
38.01K
Against
0
Abstain
0
Final Votes
Status
Sun Aug 24, 10:59 am
Voting period started
Mon Aug 25, 03:47 pm
Voting period extended
Tue Aug 26, 03:47 pm
Voting period ended
