Skip to content

Latest commit

 

History

History
84 lines (72 loc) · 3.09 KB

YPP-0077.md

File metadata and controls

84 lines (72 loc) · 3.09 KB

Proposal

Enable Witch v2 on Arbitrum for all positions, and disable Witch v1 for all positions.

Background

Witch v2 is a more powerful and configurable liquidation engine than Witch v1. The math has been simplified to remove rounding errors, the limits have been changed to reduce risks and match the Cauldron. Payment with fyTokens is now possible. Partial liquidations are also possible.

Details

In this proposal Witch V2 will be allowed to liquidate all positions. Some series and underlying/collateral pairs were already available to Witch v2 and won't be configured again. Witch v1 will be disabled by setting maximum concurrent collateral under auction to zero for all collaterals.

  1. Governance proposal
    1. Orchestrate Witch v2 with the DAI series, ETH Join and USDC Join.
    2. Set auction parameters for ETH/DAI, ETH/USDC, USDC/DAI and USDC/ETH

Script that performs said actions: https://github.com/yieldprotocol/environments-v2/blob/edbd9c19b0826573ff65ef75548b23c874719e76/scripts/governance/replace/witchV2/completeWitchV2.arbitrum.sh

Configuration applied:

/// The Witch v2 will accept payment in these fyToken
export const seriesIds: Array<string> = [FYDAI2212, FYDAI2303]

/// Auction configuration for each asset pair
/// @param baseId assets in scope as underlying for vaults to be auctioned
/// @param ilkId assets in scope as collateral for vaults to be auctioned
/// @param duration time that it takes for the auction to offer maximum collateral
/// @param vaultProportion proportion of a vault that will be auctioned at a time
/// @param collateralProportion proportion of the collateral that will be paid out
/// at the begining of an auction
/// @param max If the aggregated collateral under auction for vaults of this pair
/// exceeds this number, no more auctions of for this pair can be started.
export const v2Limits: AuctionLineAndLimit[] = [
  // ETH
  {
    baseId: DAI,
    ilkId: ETH,
    duration: 600,
    vaultProportion: parseUnits('0.5'),
    collateralProportion: parseUnits('0.75'), // 105 / 140
    max: parseUnits('1000'),
  },
  {
    baseId: USDC,
    ilkId: ETH,
    duration: 600,
    vaultProportion: parseUnits('0.5'),
    collateralProportion: parseUnits('0.75'), // 105 / 140
    max: parseUnits('1000'),
  },
  // USDC
  {
    baseId: ETH,
    ilkId: USDC,
    duration: 600,
    vaultProportion: parseUnits('0.5'),
    collateralProportion: parseUnits('0.75'), // 105 / 140
    max: parseUnits('1000000', 6),
  },
  {
    baseId: DAI,
    ilkId: USDC,
    duration: 600,
    vaultProportion: parseUnits('1'),
    collateralProportion: parseUnits('0.9545454545'), // 105 / 110
    max: parseUnits('1000000', 6),
  },
]

/// @notice Limits to be used in an auction
/// @param base identifier (bytes6 tag)
/// @param Maximum concurrently auctionable for this asset, modified by decimals
/// @param Minimum vault debt, modified by decimals
/// @param Decimals to append to auction ceiling and minimum vault debt.
export const v1Limits: Array<[string, number, number, number]> = [
  [ETH, 0, 30000, 12],
  [DAI, 0, 100, 18],
  [USDC, 0, 100, 6],
]

Testing

Testing will be done in production