Skip to content

Commit ea7ed1f

Browse files
feat: pareto frontier deployment
1 parent 63b2114 commit ea7ed1f

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"externalVaults": [],
3+
"irms": [
4+
"0x66d56E8Acad6a8fb6914753317cD3277D458E540",
5+
"0x0000000000000000000000000000000000000000"
6+
],
7+
"oracleRouters": [
8+
"0x82b82F2e8cAa7432Bf8e13ee51c3a713bc2B4CE6",
9+
"0x82b82F2e8cAa7432Bf8e13ee51c3a713bc2B4CE6"
10+
],
11+
"stubOracle": "0x0000000000000000000000000000000000000000",
12+
"vaults": [
13+
"0xFbd4F1d0B2AF661bD43ef6577966daa6587f0b7c",
14+
"0x834b16f76A950bFCDB517A533709F81E58C5a83E"
15+
]
16+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// SPDX-License-Identifier: GPL-2.0-or-later
2+
3+
pragma solidity ^0.8.0;
4+
5+
import {ManageCluster} from "./ManageCluster.s.sol";
6+
7+
contract Cluster is ManageCluster {
8+
address internal constant sUSP = 0x271C616157e69A43B4977412A64183Cf110Edf16;
9+
10+
function defineCluster() internal override {
11+
// define the path to the cluster addresses file here
12+
cluster.clusterAddressesPath = "/script/production/frontier/Pareto.json";
13+
14+
// do not change the order of the assets in the .assets array. if done, it must be reflected in other the other
15+
// arrays the ltvs matrix.
16+
// if more than one vauls has to be deployed for the same asset, it can be added in the array as many times as
17+
// needed.
18+
// note however, that mappings may need reworking as they always use asset address as key.
19+
cluster.assets = [USDC, sUSP];
20+
}
21+
22+
function configureCluster() internal override {
23+
super.configureCluster();
24+
25+
// define unit of account here
26+
cluster.unitOfAccount = USD;
27+
28+
// define oracle providers here.
29+
// adapter names can be found in the relevant adapter contract (as returned by the `name` function).
30+
// for cross adapters, use the following format: "CrossAdapter=<adapterName1>+<adapterName2>".
31+
// although Redstone Classic oracles reuse the ChainlinkOracle contract and returns "ChainlinkOracle" name,
32+
// they should be referred to as "RedstoneClassicOracle".
33+
// in case the asset is an ERC4626 vault itself (i.e. sUSDS) and is recognized as a valid external vault as per
34+
// External Vaults Registry, the string should be preceeded by "ExternalVault|" prefix. this is in order to
35+
// resolve the asset (vault) in the oracle router.
36+
// in case the adapter is not present in the Adapter Registry, the adapter address can be passed instead in form
37+
// of a string.
38+
cluster.oracleProviders[USDC] = "0xD35657aE033A86FFa8fc6Bc767C5eb57C7c3D4B8";
39+
cluster.oracleProviders[sUSP] = "ExternalVault|0x8424db29b3f19a6B494d20cB3071669fd277Ed0C";
40+
41+
// define IRM classes here and assign them to the assets or refer to the adaptive IRM address directly
42+
{
43+
// Base=0% APY Kink(90%)=2.7% APY Max=40.00% APY
44+
//cluster.kinkIRMParams[WETH] = [uint256(0), uint256(218407859), uint256(22859618857), uint256(3865470566)];
45+
46+
cluster.irms[USDC] = IRM_ADAPTIVE_USD;
47+
}
48+
49+
// define ltv values here. columns are liability vaults, rows are collateral vaults
50+
cluster.ltvs = [
51+
// 0 1
52+
// USDC sUSP
53+
/* 0 USDC */ [LTV_ZERO, LTV_ZERO],
54+
/* 1 sUSP */ [LTV_HIGH, LTV_ZERO]
55+
];
56+
}
57+
}

0 commit comments

Comments
 (0)