Skip to content

Commit 3a5aeb4

Browse files
authored
Merge pull request #1087 from ionicprotocol/development
Enhance Metal L2 Asset Management and Integrate Chainlink Price Oracle
2 parents 3a063f9 + 56c14f0 commit 3a5aeb4

12 files changed

Lines changed: 2377 additions & 8 deletions

File tree

packages/chains/src/metalL2/addresses.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { assets } from "./assets";
55

66
const chainAddresses: ChainAddresses = {
77
PAIR_INIT_HASH: "", // TODO is this used anywhere?
8-
STABLE_TOKEN: zeroAddress,
8+
STABLE_TOKEN: "0x51e85d70944256710cb141847f1a04f568c1db0e",
99
UNISWAP_V2_ROUTER: zeroAddress,
1010
UNISWAP_V2_FACTORY: zeroAddress,
1111
UNISWAP_V3: {
@@ -16,7 +16,7 @@ const chainAddresses: ChainAddresses = {
1616
UNISWAP_V3_ROUTER: zeroAddress, // universal router, need to check if this works
1717
W_BTC_TOKEN: zeroAddress, // underlying(assets, assetSymbols.WBTC),
1818
W_TOKEN: underlying(assets, assetSymbols.WETH),
19-
W_TOKEN_USD_CHAINLINK_PRICE_FEED: zeroAddress
19+
W_TOKEN_USD_CHAINLINK_PRICE_FEED: "0x5b0cf2b36a65a6BB085D501B971e4c102B9Cd473"
2020
};
2121

2222
export default chainAddresses;

packages/chains/src/metalL2/assets.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
1-
import { assetSymbols, OracleTypes, SupportedAsset, SupportedChains } from "@ionicprotocol/types";
2-
import { parseEther } from "viem";
1+
import {
2+
assetSymbols,
3+
ChainlinkFeedBaseCurrency,
4+
ChainlinkSpecificParams,
5+
OracleTypes,
6+
SupportedAsset,
7+
SupportedChains
8+
} from "@ionicprotocol/types";
9+
import { parseEther, parseUnits } from "viem";
310

411
import { wrappedAssetDocs } from "../common";
512

613
export const WETH = "0x4200000000000000000000000000000000000006";
14+
export const MTL = "0xBCFc435d8F276585f6431Fc1b9EE9A850B5C00A9";
15+
export const USDC = "0x51e85d70944256710cb141847f1a04f568c1db0e";
716

817
export const assets: SupportedAsset[] = [
918
{
@@ -16,6 +25,36 @@ export const assets: SupportedAsset[] = [
1625
initialBorrowCap: parseEther("100").toString(),
1726
initialSupplyCap: parseEther("100").toString(),
1827
initialCf: "0.5"
28+
},
29+
{
30+
symbol: assetSymbols.MTL,
31+
underlying: MTL,
32+
name: "Metal",
33+
decimals: 8,
34+
oracle: OracleTypes.ChainlinkPriceOracleV2,
35+
oracleSpecificParams: {
36+
aggregator: "0x5d6f129900b1516A59e59C122C9ba3446E090DB0",
37+
feedBaseCurrency: ChainlinkFeedBaseCurrency.USD
38+
} as ChainlinkSpecificParams,
39+
extraDocs: wrappedAssetDocs(SupportedChains.superseed),
40+
initialBorrowCap: parseUnits("20000", 8).toString(),
41+
initialSupplyCap: parseUnits("20000", 8).toString(),
42+
initialCf: "0.5"
43+
},
44+
{
45+
symbol: assetSymbols.USDC,
46+
underlying: USDC,
47+
name: "Bridged USDC (Metal Mainnet)",
48+
decimals: 6,
49+
oracle: OracleTypes.ChainlinkPriceOracleV2,
50+
oracleSpecificParams: {
51+
aggregator: "0x374E48C630F815ffa51d3b5e740482f37a40Ef64",
52+
feedBaseCurrency: ChainlinkFeedBaseCurrency.USD
53+
} as ChainlinkSpecificParams,
54+
extraDocs: wrappedAssetDocs(SupportedChains.superseed),
55+
initialBorrowCap: parseUnits("30000", 6).toString(),
56+
initialSupplyCap: parseUnits("30000", 6).toString(),
57+
initialCf: "0.5"
1958
}
2059
];
2160

packages/contracts/chainDeploy/mainnets/metalL2.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { metalL2 } from "@ionicprotocol/chains";
22

3-
import { ChainDeployConfig } from "../helpers";
3+
import { ChainDeployConfig, deployChainlinkOracle } from "../helpers";
44
import { Address, parseEther, zeroAddress } from "viem";
55
import { HardhatRuntimeEnvironment } from "hardhat/types";
6+
import { ChainlinkSpecificParams, OracleTypes } from "@ionicprotocol/types";
7+
import { ChainlinkAsset } from "../types";
68

79
const assets = metalL2.assets;
810

@@ -48,6 +50,24 @@ export const deploy = async ({
4850
const { deployer } = await getNamedAccounts();
4951
const publicClient = await viem.getPublicClient();
5052

53+
const chainlinkAssets = metalL2.assets
54+
.filter((asset) => asset.oracle === OracleTypes.ChainlinkPriceOracleV2)
55+
.map((a) => ({
56+
symbol: a.symbol,
57+
aggregator: (a.oracleSpecificParams! as ChainlinkSpecificParams).aggregator,
58+
feedBaseCurrency: (a.oracleSpecificParams! as ChainlinkSpecificParams).feedBaseCurrency
59+
})) as ChainlinkAsset[];
60+
await deployChainlinkOracle({
61+
viem,
62+
getNamedAccounts,
63+
deployments,
64+
deployConfig,
65+
assets,
66+
chainlinkAssets,
67+
run,
68+
chainId: metalL2.chainId
69+
});
70+
5171
//// Uniswap V3 Liquidator Funder
5272
const uniswapV3LiquidatorFunder = await deployments.deploy("UniswapV3LiquidatorFunder", {
5373
from: deployer,

0 commit comments

Comments
 (0)