Executed

Add Beefy Finance vault VELO-​OP vLP V2 collateral


Proposal ID

101845...9340

Proposed

Aug 20th, 2024

Result details
Final Votes

Quorum

41.45K of 8.64K

Majority support

Yes

For

41.45K

Against

1

Abstain

0

Actions

Type

Address

Details

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(..)

Custom

0x8Be5...1b56

initializeCollateralType(..)

Custom

Account

0x8Be5...1b56

Method

initializeCollateralType(..)

Proposal

Overview

The DAO has decided to make VELO-​OP vLP V2 Beefy Finance vaults the next new added collateral. There has been discussion both in the discord and on the forum about it.

Forum Discussion

Discord Discussion

We have already deployed an oracle for VELO-​OP vLP V2 Beefy Finance vaults in an earlier governance proposal.

VELO-​OP vLP V2 Beefy Finance Vaults Oracle Deployment Proposal

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.

Descriptions of what the parameters represent can be found in the following document.

HAI New Collateral Parameter Guide

The parameters used in the other collaterals can be found in the following document.

HAI Mainnet Paramters Guide

This collateral distributes taxes in the following proportions:

  • 20% Surplus Buffer
  • 5% Stability Fee Treasury
  • 5% Admin Safe
  • 70% VELO Lock Safe

The VELO Lock Safe will be used to purchase VELO, lock it, and vote for the HAI-KITE pool.

This proposal will have 9 actions

// 0x4d4f4f2d56454c4f2d56322d4f502d56454c4f00000000000000000000000000
bytes32 constant MOO_VELO_V2_OP_VELO = bytes32("MOO-VELO-V2-OP-VELO");

1. Deploy a new collateral join for MOO_VELO_V2_OP_VELO in the Collateral Join Factory [_Executable Code Function 1*]

address OP_MOO_VELO_V2_OP_VELO_ADDRESS = 0x04c4a21D7439eD05fd33469565541bF6464F7157;

collateralJoinFactory.deployCollateralJoin({_cType: MOO_VELO_V2_OP_VELO, _collateral: OP_MOO_VELO_V2_OP_VELO_ADDRESS});

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

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

 _collateralAuctionHouseParams[MOO_VELO_V2_OP_VELO] = 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[MOO_VELO_V2_OP_VELO] = ISAFEEngine.SAFEEngineCollateralParams({
    debtCeiling: 50_000 * RAD, // 50k HAI
    debtFloor: 150 * RAD // 150 HAI
});

// Encoded Params: 0x000000000000000000000022361d8afcc93343e962029a7edab20000000000000000000000000000000000001a463b8d8ef089acfcf74dc68649c00000000000

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

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

delayedOracle[MOO_VELO_V2_OP_VELO] = IDelayedOracle(
    0xEe2996D48BC4807b587bF742F49Ba236602a2DEB
);

_oracleRelayerCParams[MOO_VELO_V2_OP_VELO] = IOracleRelayer.OracleRelayerCollateralParams({
    oracle: delayedOracle[MOO_VELO_V2_OP_VELO],
    safetyCRatio: 2.2e27, // 220%
    liquidationCRatio: 2e27 // 200%
});

// Encoded Params: 0x000000000000000000000000ee2996d48bc4807b587bf742f49ba236602a2deb0000000000000000000000000000000000000000071bcc1ef9311a1f98000000000000000000000000000000000000000000000006765c793fa10079d0000000

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

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

address MOO_VELO_V2_OP_VELO_CAH = 0xc362e012733FcFf9b83c02Ef12B9156472e007C7; // Simulated from step 2

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

// Encoded Params:
0x000000000000000000000000c362e012733fcff9b83c02ef12b9156472e007c700000000000000000000000000000000000000000000000010a741a462780000000000000000000000000022361d8afcc93343e962029a7edab2000000000000

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

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

bc -l <<< 'scale=27; e( l(1.1)/(60 * 60 * 24 * 365) )'
1.000000003022265980097387650
1_000_000_003_022_265_980_097_387_650

_taxCollectorCParams[MOO_VELO_V2_OP_VELO].stabilityFee = 1_000_000_003_022_265_980_097_387_650; // 10% / yr

// Encoded Params: 0x0000000000000000000000000000000000000000033b2e3cc9c1bf225873dc82

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

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.05e18 // 5%
});

// Encoded Params: 0x000000000000000000000000e9e54c55d41d6622933f9f736e0c55484b3c4f6f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000b1a2bc2ec50000

taxCollector.modifyParameters(VELO, 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.05e18 // 5%
});

// Encoded Params: 0x000000000000000000000000468c572c41db8b206b3919ac9a41ad8de2eac822000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000b1a2bc2ec50000

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

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

ITaxCollector.TaxReceiver memory thirdSecondaryReceiver = ITaxCollector.TaxReceiver({
    receiver: 0x844a139a717A61D8CE5D7b8d3c3988978b74d5Ea, // VELO Lock Safe
    canTakeBackTax: true, // [bool]
    taxPercentage: 0.7e18 // 70%
});

// Encoded Params: 0x000000000000000000000000844a139a717a61d8ce5d7b8d3c3988978b74d5ea000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000009b6e64a8ec60000

taxCollector.modifyParameters(VELO, SECONDARY_TAX_RECEIVER, abi.encode(thirdSecondaryReceiver));

Contracts referenced in this proposal

  1. Beefy Velo Vault Relayer (VELO-​OP vLP V2) -0x154b4ea396067E9B3C33f88235d93066d63207E2
  2. Delayed Oracle (Beefy VELO-​OP vLP V2) -0xEe2996D48BC4807b587bF742F49Ba236602a2DEB
  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. VELO Lock Safe - 0x844a139a717A61D8CE5D7b8d3c3988978b74d5Ea
  12. MOO-VELO-V2-OP-VELO Token - 0x04c4a21D7439eD05fd33469565541bF6464F7157
Final Votes

Quorum

41.45K of 8.64K

Majority support

Yes

For

41.45K

Against

1

Abstain

0

Final Votes
Status

Fri Aug 16, 03:43 am

Draft created

Tue Aug 20, 07:44 pm

Published onchain

Wed Aug 21, 07:44 am

Voting period started

Thu Aug 22, 07:44 pm

Voting period ended

Fri Aug 23, 01:43 am

Proposal queued

Sat Aug 24, 02:04 am

Proposal executed