Skip to content

Commit

Permalink
fixup! feat: add SolvBTC market
Browse files Browse the repository at this point in the history
  • Loading branch information
kkirka committed Oct 8, 2024
1 parent e983a63 commit 5b8e5c6
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 0 deletions.
42 changes: 42 additions & 0 deletions vips/vip-400/bscmainnet.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { BigNumberish } from "ethers";
import { parseUnits } from "ethers/lib/utils";
import { ethers } from "hardhat";
import { NETWORK_ADDRESSES } from "src/networkAddresses";
Expand All @@ -14,6 +15,45 @@ export const SOLVBTC_REDSTONE_FEED = "0xF5F641fF3c7E39876A76e77E84041C300DFa4550
const SOLVBTC_MAX_STALE_PERIOD = 7 * 3600; // 7 hours
const REDUCE_RESERVES_BLOCK_DELTA = "28800";

const configureConverters = (fromAssets: string[], incentive: BigNumberish = 1e14) => {
const USDT = "0x55d398326f99059fF775485246999027B3197955";
const USDC = "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d";
const BTCB = "0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c";
const XVS = "0xcF6BB5389c92Bdda8a3747Ddb454cB7a64626C63";
const ETH = "0x2170Ed0880ac9A755fd29B2688956BD959F933F8";
const RISK_FUND_CONVERTER = "0xA5622D276CcbB8d9BBE3D1ffd1BB11a0032E53F0";
const USDT_PRIME_CONVERTER = "0xD9f101AA67F3D72662609a2703387242452078C3";
const USDC_PRIME_CONVERTER = "0xa758c9C215B6c4198F0a0e3FA46395Fa15Db691b";
const BTCB_PRIME_CONVERTER = "0xE8CeAa79f082768f99266dFd208d665d2Dd18f53";
const ETH_PRIME_CONVERTER = "0xca430B8A97Ea918fF634162acb0b731445B8195E";
const XVS_VAULT_CONVERTER = "0xd5b9AE835F4C59272032B3B954417179573331E0";

const converterBaseAssets = {
[RISK_FUND_CONVERTER]: USDT,
[USDT_PRIME_CONVERTER]: USDT,
[USDC_PRIME_CONVERTER]: USDC,
[BTCB_PRIME_CONVERTER]: BTCB,
[ETH_PRIME_CONVERTER]: ETH,
[XVS_VAULT_CONVERTER]: XVS,
};

enum ConversionAccessibility {
NONE = 0,
ALL = 1,
ONLY_FOR_CONVERTERS = 2,
ONLY_FOR_USERS = 3,
}

return Object.entries(converterBaseAssets).map(([converter, baseAsset]: [string, string]) => {
const conversionConfigs = fromAssets.map(() => [incentive, ConversionAccessibility.ALL]);
return {
target: converter,
signature: "setConversionConfigs(address,address[],(uint256,uint8)[])",
params: [baseAsset, fromAssets, conversionConfigs],
};
});
};

export const marketSpec = {
vToken: {
address: SOLVBTC_VTOKEN,
Expand Down Expand Up @@ -147,6 +187,8 @@ export const vip400 = () => {
signature: "approve(address,uint256)",
params: [marketSpec.vToken.address, 0],
},

...configureConverters([marketSpec.vToken.underlying.address]),
],
meta,
ProposalType.REGULAR,
Expand Down
42 changes: 42 additions & 0 deletions vips/vip-400/bsctestnet.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { BigNumberish } from "ethers";
import { parseUnits } from "ethers/lib/utils";
import { ethers } from "hardhat";
import { NETWORK_ADDRESSES } from "src/networkAddresses";
Expand Down Expand Up @@ -46,6 +47,45 @@ export const marketSpec = {
},
};

const configureConverters = (fromAssets: string[], incentive: BigNumberish = 1e14) => {
const ETH = "0x98f7A83361F7Ac8765CcEBAB1425da6b341958a7";
const USDT = "0xA11c8D9DC9b66E209Ef60F0C8D969D3CD988782c";
const USDC = "0x16227D60f7a0e586C66B005219dfc887D13C9531";
const BTCB = "0xA808e341e8e723DC6BA0Bb5204Bafc2330d7B8e4";
const XVS = "0xB9e0E753630434d7863528cc73CB7AC638a7c8ff";
const RISK_FUND_CONVERTER = "0x32Fbf7bBbd79355B86741E3181ef8c1D9bD309Bb";
const USDT_PRIME_CONVERTER = "0xf1FA230D25fC5D6CAfe87C5A6F9e1B17Bc6F194E";
const USDC_PRIME_CONVERTER = "0x2ecEdE6989d8646c992344fF6C97c72a3f811A13";
const BTCB_PRIME_CONVERTER = "0x989A1993C023a45DA141928921C0dE8fD123b7d1";
const ETH_PRIME_CONVERTER = "0xf358650A007aa12ecC8dac08CF8929Be7f72A4D9";
const XVS_VAULT_CONVERTER = "0x258f49254C758a0E37DAb148ADDAEA851F4b02a2";

const converterBaseAssets = {
[RISK_FUND_CONVERTER]: USDT,
[USDT_PRIME_CONVERTER]: USDT,
[USDC_PRIME_CONVERTER]: USDC,
[BTCB_PRIME_CONVERTER]: BTCB,
[ETH_PRIME_CONVERTER]: ETH,
[XVS_VAULT_CONVERTER]: XVS,
};

enum ConversionAccessibility {
NONE = 0,
ALL = 1,
ONLY_FOR_CONVERTERS = 2,
ONLY_FOR_USERS = 3,
}

return Object.entries(converterBaseAssets).map(([converter, baseAsset]: [string, string]) => {
const conversionConfigs = fromAssets.map(() => [incentive, ConversionAccessibility.ALL]);
return {
target: converter,
signature: "setConversionConfigs(address,address[],(uint256,uint8)[])",
params: [baseAsset, fromAssets, conversionConfigs],
};
});
};

export const vip400 = () => {
const meta = {
version: "v2",
Expand Down Expand Up @@ -145,6 +185,8 @@ export const vip400 = () => {
signature: "approve(address,uint256)",
params: [marketSpec.vToken.address, 0],
},

...configureConverters([marketSpec.vToken.underlying.address]),
],
meta,
ProposalType.REGULAR,
Expand Down

0 comments on commit 5b8e5c6

Please sign in to comment.