Enable Witch v2 on Arbitrum for all positions, and disable Witch v1 for all positions.
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.
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.
- Governance proposal
- Orchestrate Witch v2 with the DAI series, ETH Join and USDC Join.
- 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 will be done in production