Skip to content
This repository was archived by the owner on Aug 26, 2024. It is now read-only.

Commit 92ed245

Browse files
committed
Merge branch 'development' into feat/liquidate-borrow-permissioning
2 parents 4888e78 + 7db37ce commit 92ed245

File tree

5 files changed

+154
-715
lines changed

5 files changed

+154
-715
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ contracts.iml
1414
node_modules/
1515
ionic-contracts.iml
1616
cache_hardhat
17-
transactions.json
17+
transactions.json

chains/mode/leveragePairs.ts

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,92 @@
1+
import { Address } from "viem";
12
import { LeveragePoolConfig } from "../types";
23

3-
const leveragePairs: LeveragePoolConfig[] = [];
4+
const leveragePairs: LeveragePoolConfig[] = [
5+
{
6+
pool: "Main" as Address,
7+
pairs: [
8+
// ezETH
9+
{
10+
collateral: "0x59e710215d45F584f44c0FEe83DA6d43D762D857",
11+
borrow: "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038"
12+
}, // usdc
13+
{
14+
collateral: "0x59e710215d45F584f44c0FEe83DA6d43D762D857",
15+
borrow: "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3"
16+
}, // usdt
17+
{
18+
collateral: "0x59e710215d45F584f44c0FEe83DA6d43D762D857",
19+
borrow: "0xd70254C3baD29504789714A7c69d60Ec1127375C"
20+
}, // wbtc
21+
{
22+
collateral: "0x59e710215d45F584f44c0FEe83DA6d43D762D857",
23+
borrow: "0x19f245782b1258cf3e11eda25784a378cc18c108"
24+
}, // mbtc
25+
{
26+
collateral: "0x59e710215d45F584f44c0FEe83DA6d43D762D857",
27+
borrow: "0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2"
28+
}, // weth
29+
30+
// wrsETH
31+
{
32+
collateral: "0x49950319aBE7CE5c3A6C90698381b45989C99b46",
33+
borrow: "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038"
34+
}, // usdc
35+
{
36+
collateral: "0x49950319aBE7CE5c3A6C90698381b45989C99b46",
37+
borrow: "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3"
38+
}, // usdt
39+
{
40+
collateral: "0x49950319aBE7CE5c3A6C90698381b45989C99b46",
41+
borrow: "0xd70254C3baD29504789714A7c69d60Ec1127375C"
42+
}, // wbtc
43+
{
44+
collateral: "0x49950319aBE7CE5c3A6C90698381b45989C99b46",
45+
borrow: "0x19f245782b1258cf3e11eda25784a378cc18c108"
46+
}, // mbtc
47+
{
48+
collateral: "0x49950319aBE7CE5c3A6C90698381b45989C99b46",
49+
borrow: "0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2"
50+
}, // weth
51+
52+
// weETH.mode
53+
{
54+
collateral: "0xA0D844742B4abbbc43d8931a6Edb00C56325aA18",
55+
borrow: "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038"
56+
}, // usdc
57+
{
58+
collateral: "0xA0D844742B4abbbc43d8931a6Edb00C56325aA18",
59+
borrow: "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3"
60+
}, // usdt
61+
{
62+
collateral: "0xA0D844742B4abbbc43d8931a6Edb00C56325aA18",
63+
borrow: "0xd70254C3baD29504789714A7c69d60Ec1127375C"
64+
}, // wbtc
65+
{
66+
collateral: "0xA0D844742B4abbbc43d8931a6Edb00C56325aA18",
67+
borrow: "0x19f245782b1258cf3e11eda25784a378cc18c108"
68+
}, // mbtc
69+
{
70+
collateral: "0xA0D844742B4abbbc43d8931a6Edb00C56325aA18",
71+
borrow: "0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2"
72+
}, // weth
73+
74+
// mbtc
75+
{
76+
collateral: "0x19f245782b1258cf3e11eda25784a378cc18c108",
77+
borrow: "0x2BE717340023C9e14C1Bb12cb3ecBcfd3c3fB038"
78+
}, // usdc
79+
{
80+
collateral: "0x19f245782b1258cf3e11eda25784a378cc18c108",
81+
borrow: "0x94812F2eEa03A49869f95e1b5868C6f3206ee3D3"
82+
}, // usdt
83+
{
84+
collateral: "0x19f245782b1258cf3e11eda25784a378cc18c108",
85+
borrow: "0xd70254C3baD29504789714A7c69d60Ec1127375C"
86+
}, // wbtc
87+
{ collateral: "0x19f245782b1258cf3e11eda25784a378cc18c108", borrow: "0x71ef7EDa2Be775E5A7aa8afD02C45F059833e9d2" } // mbtc
88+
]
89+
}
90+
];
491

592
export default leveragePairs;

remappings.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ solidity-bytes-utils/=lib/solidity-bytes-utils/
33
@openzeppelin=lib/openzeppelin-contracts/
44
@pythnetwork/pyth-sdk-solidity/=lib/pyth-sdk-solidity/
55
@pythnetwork/express-relay-sdk-solidity/=node_modules/@pythnetwork/express-relay-sdk-solidity
6+

tasks/leverage/configurePair.ts

Lines changed: 64 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,80 @@
11
import { task } from "hardhat/config";
22
import { chainIdToConfig } from "../../chains";
3-
import { Address } from "viem";
3+
import { Address, encodeFunctionData } from "viem";
4+
import { addTransaction, writeTransactionsToFile } from "../../chainDeploy/helpers/logging";
45

5-
export default task("levered-positions:configure-pairs").setAction(async ({}, { viem, getChainId, deployments }) => {
6-
const publicClient = await viem.getPublicClient();
7-
const chainId = parseInt(await getChainId());
8-
const leveredPairsConfig = chainIdToConfig[chainId].leveragePairs;
6+
export default task("levered-positions:configure-pairs").setAction(
7+
async ({}, { viem, getChainId, deployments, getNamedAccounts }) => {
8+
const { deployer } = await getNamedAccounts();
9+
console.log("deployer: ", deployer);
10+
const publicClient = await viem.getPublicClient();
11+
const walletClient = await viem.getWalletClient(deployer as Address);
12+
const chainId = parseInt(await getChainId());
13+
const leveredPairsConfig = chainIdToConfig[chainId].leveragePairs;
914

10-
const factory = await viem.getContractAt(
11-
"ILeveredPositionFactory",
12-
(await deployments.get("LeveredPositionFactory")).address as Address
13-
);
14-
const configuredCollateralMarkets = await factory.read.getWhitelistedCollateralMarkets();
15+
const factory = await viem.getContractAt(
16+
"ILeveredPositionFactory",
17+
(await deployments.get("LeveredPositionFactory")).address as Address
18+
);
19+
const configuredCollateralMarkets = await factory.read.getWhitelistedCollateralMarkets();
1520

16-
console.log(`Collateral markets already configured: ${configuredCollateralMarkets.join(", ")}`);
21+
console.log(`Collateral markets already configured: ${configuredCollateralMarkets.join(", ")}`);
1722

18-
for (const pool of leveredPairsConfig) {
19-
console.log(`Configuring pairs for pool: ${pool.pool}`);
23+
for (const pool of leveredPairsConfig) {
24+
console.log(`Configuring pairs for pool: ${pool.pool}`);
2025

21-
for (const pair of pool.pairs) {
22-
const { collateral, borrow } = pair;
26+
for (const pair of pool.pairs) {
27+
const { collateral, borrow } = pair;
2328

24-
const collateralMarket = await viem.getContractAt("CErc20Delegate", collateral);
25-
const borrowMarket = await viem.getContractAt("CErc20Delegate", borrow);
29+
const collateralMarket = await viem.getContractAt("CErc20Delegate", collateral);
30+
const borrowMarket = await viem.getContractAt("CErc20Delegate", borrow);
2631

27-
const collateralToken = await collateralMarket.read.underlying();
28-
const borrowToken = await borrowMarket.read.underlying();
32+
const collateralToken = await collateralMarket.read.underlying();
33+
const borrowToken = await borrowMarket.read.underlying();
2934

30-
const configuredBorrowableMarkets = await factory.read.getBorrowableMarketsByCollateral([collateral]);
31-
console.log(
32-
`Borrow markets already configured for collateral ${collateral}: ${configuredBorrowableMarkets.join(", ")}`
33-
);
34-
35-
// check if borrow market is already configured
36-
if (configuredBorrowableMarkets.includes(borrow) && configuredCollateralMarkets.includes(collateral)) {
37-
console.log(
38-
`Borrow (market: ${borrow}, underlying: ${borrowToken}) is already configured for collateral (market: ${collateral}, underlying: ${collateralToken})`
39-
);
40-
continue;
41-
} else {
35+
const configuredBorrowableMarkets = await factory.read.getBorrowableMarketsByCollateral([collateral]);
4236
console.log(
43-
`Configuring pair:\n - BORROW (market: ${borrow}, underlying: ${borrowToken})\n - COLLATERAL: (market: ${collateral}, underlying: ${collateralToken})`
37+
`Borrow markets already configured for collateral ${collateral}: ${configuredBorrowableMarkets.join(", ")}`
4438
);
4539

46-
const tx = await factory.write._setPairWhitelisted([collateral, borrow, true]);
47-
await publicClient.waitForTransactionReceipt({ hash: tx });
48-
console.log(
49-
`configured the markets pair:\n - BORROW (market: ${borrow}, underlying: ${borrowToken})\n - COLLATERAL: (market: ${collateral}, underlying: ${collateralToken}) as whitelisted for levered positions`
50-
);
40+
// check if borrow market is already configured
41+
if (configuredBorrowableMarkets.includes(borrow) && configuredCollateralMarkets.includes(collateral)) {
42+
console.log(
43+
`Borrow (market: ${borrow}, underlying: ${borrowToken}) is already configured for collateral (market: ${collateral}, underlying: ${collateralToken})`
44+
);
45+
continue;
46+
} else {
47+
console.log(
48+
`Configuring pair:\n - BORROW (market: ${borrow}, underlying: ${borrowToken})\n - COLLATERAL: (market: ${collateral}, underlying: ${collateralToken})`
49+
);
50+
51+
const owner = await factory.read.owner();
52+
if (owner.toLowerCase() !== deployer.toLowerCase()) {
53+
console.log(
54+
`adding transaction to set pair as whitelisted: BORROW (market: ${borrow}, underlying: ${borrowToken}) - COLLATERAL: (market: ${collateral}, underlying: ${collateralToken})`
55+
);
56+
addTransaction({
57+
to: factory.address,
58+
value: "0",
59+
data: encodeFunctionData({
60+
abi: factory.abi,
61+
functionName: "_setPairWhitelisted",
62+
args: [collateral, borrow, true]
63+
}),
64+
contractMethod: null,
65+
contractInputsValues: null
66+
});
67+
} else {
68+
const tx = await factory.write._setPairWhitelisted([collateral, borrow, true]);
69+
await publicClient.waitForTransactionReceipt({ hash: tx });
70+
console.log(
71+
`configured the markets pair:\n - BORROW (market: ${borrow}, underlying: ${borrowToken})\n - COLLATERAL: (market: ${collateral}, underlying: ${collateralToken}) as whitelisted for levered positions`
72+
);
73+
}
74+
}
5175
}
5276
}
77+
78+
await writeTransactionsToFile();
5379
}
54-
});
80+
);

0 commit comments

Comments
 (0)