mirror of
https://github.com/alexgo-io/DefiLlama-Adapters.git
synced 2026-04-29 13:25:30 +08:00
Add core asset addresses***
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
"tvl": "cd utils;npm i; cd ..; node utils/testInteractive",
|
||||
"treasury": "cd utils;npm i; cd ..; node utils/testInteractive treasury",
|
||||
"entities": "cd utils;npm i; cd ..; node utils/testInteractive entities",
|
||||
"useTokenLabels": "node utils/scripts/useTokenLabels.js",
|
||||
"postinstall": "echo 'run \"npm update @defillama/sdk\" if you want lastest sdk changes' "
|
||||
},
|
||||
"author": "",
|
||||
|
||||
@@ -1,22 +1,11 @@
|
||||
const TOKEN_CONTRACT_NOTE = '0x4e71A2E537B7f9D9413D3991D37958c0b5e1e503';
|
||||
const ADDRESSES = require('../helper/coreAssets.json');
|
||||
const { sumTokensExport } = require('../helper/unwrapLPs');
|
||||
const MARKET_1155TECH_CONTRACT = '0x33b77fAf955Ed3eDAf939ae66C4D7a2D78bc30C6';
|
||||
|
||||
async function tvl(_, _1, _2, { api }) {
|
||||
const balance = await api.call({
|
||||
abi: 'erc20:balanceOf',
|
||||
target: TOKEN_CONTRACT_NOTE,
|
||||
params: [MARKET_1155TECH_CONTRACT],
|
||||
});
|
||||
|
||||
api.add(TOKEN_CONTRACT_NOTE, balance)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
timetravel: true,
|
||||
misrepresentedTokens: false,
|
||||
methodology: 'Value of all Keys across all art markets is TVL in the protocol',
|
||||
start: 7280880,
|
||||
canto: {
|
||||
tvl
|
||||
}
|
||||
methodology: 'Value of all Keys across all art markets is TVL in the protocol',
|
||||
start: 7280880,
|
||||
canto: {
|
||||
tvl: sumTokensExport({ owner: MARKET_1155TECH_CONTRACT, tokens: [ADDRESSES.canto.NOTE] })
|
||||
}
|
||||
};
|
||||
@@ -1,5 +1,6 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const euphrates = '0x7Fe92EC600F15cD25253b421bc151c51b0276b7D';
|
||||
const ldotAddr = '0x0000000000000000000100000000000000000003';
|
||||
const ldotAddr = ADDRESSES.acala.LDOT;
|
||||
const wtdotAddr = '0xe1bD4306A178f86a9214c39ABCD53D021bEDb0f9';
|
||||
|
||||
async function tvl(timestamp) {
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { getResources, getTableData } = require("../helper/chain/aptos");
|
||||
|
||||
const extractCoinAddress = (str) =>
|
||||
str.slice(str.indexOf("<") + 1, str.lastIndexOf(">"));
|
||||
|
||||
const APT = "0x1::aptos_coin::AptosCoin";
|
||||
const APT = ADDRESSES.aptos.APT;
|
||||
|
||||
const ALT =
|
||||
"0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::aptos_launch_token::AptosLaunchToken";
|
||||
@@ -12,9 +13,9 @@ const MOVE =
|
||||
"0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund";
|
||||
|
||||
const lzUSDT =
|
||||
"0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT";
|
||||
ADDRESSES.aptos.USDT_2;
|
||||
const lzUSDC =
|
||||
"0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDC";
|
||||
ADDRESSES.aptos.USDC_2;
|
||||
|
||||
const MOVE_APT_LP =
|
||||
"0xc7efb4076dbe143cbcd98cfaaa929ecfc8f299203dfff63b95ccb6bfe19850fa::swap::LPToken<0x1::aptos_coin::AptosCoin, 0xd0b4efb4be7c3508d9a26a9b5405cf9f860d0b9e5fe2f498b90e68b8d2cedd3e::move_ecosystem_fund::MoveEcosystemFund>";
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { sumTokensExport } = require('../helper/unwrapLPs');
|
||||
|
||||
const tokens = {
|
||||
avax: {
|
||||
WAVAX: "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7",
|
||||
USDC: "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
|
||||
USDT: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7",
|
||||
DAI: "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70",
|
||||
WAVAX: ADDRESSES.avax.WAVAX,
|
||||
USDC: ADDRESSES.avax.USDC,
|
||||
USDT: ADDRESSES.avax.USDt,
|
||||
DAI: ADDRESSES.avax.DAI,
|
||||
LINK: "0x5947bb275c521040051d82396192181b413227a3",
|
||||
WBTC: "0x50b7545627a5162F82A992c33b87aDc75187B218",
|
||||
WZEN: "0xAA1dA1591cBF7f2Df46884E7144297FF15Ea3a7f",
|
||||
},
|
||||
ethereum: {
|
||||
WETH: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
||||
USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
||||
USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
|
||||
DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
|
||||
LINK: "0x514910771AF9Ca656af840dff83E8264EcF986CA",
|
||||
WBTC: "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
|
||||
WETH: ADDRESSES.ethereum.WETH,
|
||||
USDC: ADDRESSES.ethereum.USDC,
|
||||
USDT: ADDRESSES.ethereum.USDT,
|
||||
DAI: ADDRESSES.ethereum.DAI,
|
||||
LINK: ADDRESSES.ethereum.LINK,
|
||||
WBTC: ADDRESSES.ethereum.WBTC,
|
||||
WZEN: "0xd21475D90686c9A6FDBe0849cb6670fEc2aC9E21",
|
||||
},
|
||||
eon: {
|
||||
@@ -26,8 +27,8 @@ const tokens = {
|
||||
USDT: "0xA167bcAb6791304EDa9B636C8beEC75b3D2829E6",
|
||||
DAI: "0x38C2a6953F86a7453622B1E7103b738239728754",
|
||||
LINK: "0xDF8DBA35962Aa0fAD7ade0Df07501c54Ec7c4A89",
|
||||
WBTC: "0x1d7fb99AED3C365B4DEf061B7978CE5055Dfc1e7",
|
||||
WZEN: "0xF5cB8652a84329A2016A386206761f455bCEDab6",
|
||||
WBTC: ADDRESSES.eon.WBTC,
|
||||
WZEN: ADDRESSES.eon.ZEN,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const ADDRESSES = require('./helper/coreAssets.json')
|
||||
const sdk = require("@defillama/sdk");
|
||||
|
||||
const WBTC = "0x68f180fcce6836688e9084f035309e29bf0a2095";
|
||||
const WBTC = ADDRESSES.optimism.WBTC;
|
||||
const bitANT = ADDRESSES.optimism.BitANT;
|
||||
const bitBTC = "0xc98b98d17435aa00830c87ea02474c5007e1f272";
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ const {
|
||||
const owner = "0x103dd1184599c7511a3016E0a383E11F84AE7173";
|
||||
const tokens = {
|
||||
ethereum: [ADDRESS.ethereum.USDT],
|
||||
bsc: ["0xc5f0f7b66764F6ec8C8Dff7BA683102295E16409"],
|
||||
bsc: [ADDRESSES.ethereum.FDUSD],
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const {
|
||||
queryContract: queryContractCosmos,
|
||||
} = require("../helper/chain/cosmos");
|
||||
|
||||
@@ -1,217 +1,24 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const sdk = require("@defillama/sdk");
|
||||
const abi = require("../helper/abis/blindex.json");
|
||||
const { formatAddressChecksum } = require("../helper/formatAddressChecksum.js");
|
||||
const { getUniTVL, getTokenPrices, } = require("../helper/unknownTokens");
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
// How to add a new chain?
|
||||
// 1. Add it to the chains global array
|
||||
// 2. create a function to calculate the TVL of the chain (similar to what we did with the 'rskTvl' function)
|
||||
// 3. Add your new chain to the export module
|
||||
// 4. Add your new chain to the 'sumChainTvls' function in the export module
|
||||
//-------------------------------------------------------------------------------------------------------------
|
||||
const { getUniTVL, } = require("../helper/unknownTokens");
|
||||
|
||||
// Test on the RSK network:
|
||||
const blindexBTCLP = '0x15f2f01159a73a56a7149096942ae4e2c019cbef'
|
||||
const wbtc = '0x542fda317318ebf1d3deaf76e0b632741a7e677d'
|
||||
const chains = {
|
||||
rsk: {
|
||||
uniswapFactoryAddress: "0x5Af7cba7CDfE30664ab6E06D8D2210915Ef73c2E",
|
||||
bdxTokenAddress: "0x6542a10E68cEAc1Fa0641ec0D799a7492795AAC1",
|
||||
// If a token doesn't exist on CoinGecko, map it to another token that's equal to it / wrappes it
|
||||
coingeckoMapping: {
|
||||
prefix: "rsk",
|
||||
"0x542fda317318ebf1d3deaf76e0b632741a7e677d": "rootstock", // RSK's WRBTC
|
||||
[ADDRESSES.rsk.ETHs]: "ethereum", // RSK's ETHs
|
||||
"0xb450ff06d950efa9a9c0ad63790c51971c1be885": "usd-coin", // RSK's BDUS - USD stable
|
||||
"0x99ac494badd0cba26143bd423e39a088591c7b09": "tether-eurt", // RSK's BDEU, - Euro stable
|
||||
"0xa4a8fb98a26e5314397170e5d12da8b73dc2ceb5": "pax-gold", // RSK's bXAU, - Gold stable
|
||||
"0x2415e222755fd1f07b0a565eb4f036e410852ee0":
|
||||
"jarvis-synthetic-british-pound", // RSK's bGBP - British Pound Stable
|
||||
"0xb5999795be0ebb5bab23144aa5fd6a02d080299f": "usd-coin", // RSK's XUSD, - USD stable
|
||||
"0xe700691da7b9851f2f35f8b8182c69c53ccad9db": "usd-coin", // RSK's DOC - USD stable
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
function mapCoingeckoAddress(chainName, address) {
|
||||
let mappedName =
|
||||
chains[chainName].coingeckoMapping[address] ||
|
||||
chains[chainName].coingeckoMapping[address.toLowerCase()];
|
||||
|
||||
if (!mappedName) {
|
||||
const addressPrefix =
|
||||
chainName === "ethereum"
|
||||
? ""
|
||||
: `${chains[chainName].coingeckoMapping["prefix"]}:`;
|
||||
mappedName = `${addressPrefix}${formatAddressChecksum(address, chainName)}`;
|
||||
}
|
||||
|
||||
return mappedName;
|
||||
async function tvl(chainName, block,_, { api }) {
|
||||
const bdstables = await api.fetchList({ lengthAbi: abi.getBdStablesLength, itemAbi: abi.getBDStable, target: chains.rsk.bdxTokenAddress })
|
||||
console.log(bdstables)
|
||||
await Promise.all(bdstables.map(async bdstable => {
|
||||
const pools = await api.fetchList({ lengthAbi: abi.getBdStablesPoolsLength, itemAbi: abi.bdstable_pools_array, target: bdstable})
|
||||
const tokens = await api.multiCall({ abi: abi.getBDStablePoolCollateral, calls: pools})
|
||||
await api.sumTokens({ tokensAndOwners2:[tokens, pools,]})
|
||||
}))
|
||||
return api.getBalances()
|
||||
}
|
||||
|
||||
async function getBDStableCollateralBalances(block, chainName, bdstable) {
|
||||
const collateralPoolsLength = (
|
||||
await sdk.api.abi.call({
|
||||
target: formatAddressChecksum(bdstable.address, chainName),
|
||||
abi: abi["getBdStablesPoolsLength"],
|
||||
chain: chainName,
|
||||
block,
|
||||
})
|
||||
).output;
|
||||
|
||||
const bdstableCollateralPools = [];
|
||||
for (let index = 0; index < collateralPoolsLength; index++) {
|
||||
const poolAddress = (
|
||||
await sdk.api.abi.call({
|
||||
target: formatAddressChecksum(bdstable.address, chainName),
|
||||
abi: abi["bdstable_pools_array"],
|
||||
params: index,
|
||||
chain: chainName,
|
||||
block,
|
||||
})
|
||||
).output;
|
||||
|
||||
bdstableCollateralPools.push(poolAddress);
|
||||
}
|
||||
|
||||
const balances = {};
|
||||
|
||||
for (let index = 0; index < bdstableCollateralPools.length; index++) {
|
||||
const collateralAddress = await (
|
||||
await sdk.api.abi.call({
|
||||
target: formatAddressChecksum(
|
||||
bdstableCollateralPools[index],
|
||||
chainName
|
||||
),
|
||||
abi: abi["getBDStablePoolCollateral"],
|
||||
chain: chainName,
|
||||
block,
|
||||
})
|
||||
).output;
|
||||
|
||||
const coingeckoMappedName = mapCoingeckoAddress(
|
||||
chainName,
|
||||
collateralAddress
|
||||
);
|
||||
const collateralBalance = await getBalanceOfWithPercision(
|
||||
block,
|
||||
chainName,
|
||||
formatAddressChecksum(bdstableCollateralPools[index], chainName),
|
||||
collateralAddress
|
||||
);
|
||||
|
||||
sdk.util.sumSingleBalance(balances, coingeckoMappedName, collateralBalance)
|
||||
}
|
||||
|
||||
const bdxTokenAddress = chains[chainName].bdxTokenAddress;
|
||||
const coingeckoMapBdxAddress = mapCoingeckoAddress(
|
||||
chainName,
|
||||
bdxTokenAddress
|
||||
);
|
||||
|
||||
balances[coingeckoMapBdxAddress] = await getBalanceOfWithPercision(
|
||||
block,
|
||||
chainName,
|
||||
formatAddressChecksum(bdstable.address, chainName),
|
||||
formatAddressChecksum(bdxTokenAddress, chainName)
|
||||
);
|
||||
|
||||
return balances;
|
||||
}
|
||||
|
||||
async function getBalanceOfWithPercision(block, chainName, owner, target) {
|
||||
let balance = (
|
||||
await sdk.api.erc20.balanceOf({
|
||||
target: formatAddressChecksum(target, chainName),
|
||||
owner: formatAddressChecksum(owner, chainName),
|
||||
chain: chainName,
|
||||
block,
|
||||
})
|
||||
).output;
|
||||
|
||||
const decimals = (
|
||||
await sdk.api.erc20.decimals(
|
||||
formatAddressChecksum(target, chainName),
|
||||
chainName
|
||||
)
|
||||
).output;
|
||||
|
||||
return balance / 10 ** decimals;
|
||||
}
|
||||
|
||||
function sumBalances(balancesArray) {
|
||||
return balancesArray.reduce((balances, singleBalance) => {
|
||||
for (const [coingeckoTokenId, amount] of Object.entries(singleBalance)) {
|
||||
if (!balances[coingeckoTokenId]) {
|
||||
balances[coingeckoTokenId] = 0;
|
||||
}
|
||||
|
||||
balances[coingeckoTokenId] += amount;
|
||||
}
|
||||
|
||||
return balances;
|
||||
}, {});
|
||||
}
|
||||
|
||||
async function getAllBDStables(block, bdxTokenAddress, chainName) {
|
||||
const bdStables = [];
|
||||
const bdstablesLength = (
|
||||
await sdk.api.abi.call({
|
||||
target: formatAddressChecksum(bdxTokenAddress, chainName),
|
||||
abi: abi["getBdStablesLength"],
|
||||
chain: chainName,
|
||||
block,
|
||||
})
|
||||
).output;
|
||||
|
||||
for (let index = 0; index < bdstablesLength; index++) {
|
||||
bdStables.push({
|
||||
address: (
|
||||
await sdk.api.abi.call({
|
||||
target: formatAddressChecksum(bdxTokenAddress, chainName),
|
||||
abi: abi["getBDStable"],
|
||||
chain: chainName,
|
||||
block,
|
||||
params: index,
|
||||
})
|
||||
).output,
|
||||
});
|
||||
}
|
||||
|
||||
return bdStables;
|
||||
}
|
||||
|
||||
async function tvl(chainName, block) {
|
||||
const chain = chainName
|
||||
|
||||
//===================
|
||||
// Collateral
|
||||
//===================
|
||||
const bdstables = await getAllBDStables(
|
||||
block,
|
||||
chains[chainName].bdxTokenAddress,
|
||||
chainName
|
||||
);
|
||||
let promises = []
|
||||
for (let index = 0; index < bdstables.length; index++) {
|
||||
promises.push(
|
||||
getBDStableCollateralBalances(block, chainName, bdstables[index])
|
||||
);
|
||||
}
|
||||
|
||||
const balancesArray = await Promise.all(promises);
|
||||
|
||||
const balances = sumBalances(balancesArray);
|
||||
const { updateBalances } = await getTokenPrices({ chain, block, useDefaultCoreAssets: true, lps: [blindexBTCLP] }) // get blindex price from LP
|
||||
await updateBalances(balances)
|
||||
return balances
|
||||
}
|
||||
|
||||
const rsk = async function rskTvl(timestamp, ethBlock, chainblocks) {
|
||||
return tvl("rsk", chainblocks.rsk);
|
||||
};
|
||||
|
||||
const dexTVL = getUniTVL({
|
||||
factory: '0x5Af7cba7CDfE30664ab6E06D8D2210915Ef73c2E',
|
||||
useDefaultCoreAssets: true,
|
||||
@@ -222,6 +29,6 @@ module.exports = {
|
||||
methodology:
|
||||
"(1) AMM LP pairs - All the liquidity pools from the Factory address are used to find the LP pairs. (2) Collateral - All the collateral being used to support the stable coins - Bitcoin, Ethereum & BDX",
|
||||
rsk: {
|
||||
tvl: sdk.util.sumChainTvls([rsk, dexTVL]),
|
||||
tvl: sdk.util.sumChainTvls([tvl, dexTVL]),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
const WETH_ARBITRUM = '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1';
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const WETH_ARBITRUM = ADDRESSES.arbitrum.WETH;
|
||||
const BRACKETX_PROXY_ARBITRUM = '0x12625Af4248E8137c6C58aed6eE804f8854669a6';
|
||||
|
||||
async function tvl(_, _1, _2, { api }) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const sui = require("../helper/chain/sui");
|
||||
|
||||
const MAINNET_PROTOCOL_ID =
|
||||
@@ -5,9 +6,9 @@ const MAINNET_PROTOCOL_ID =
|
||||
const BUCK =
|
||||
"0xce7ff77a83ea0cb6fd39bd8748e2ec89a3f41e8efdc3f4eb123e0ca37b184db2::buck::BUCK";
|
||||
const USDC =
|
||||
"0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN";
|
||||
ADDRESSES.sui.USDC;
|
||||
const USDT =
|
||||
"0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN";
|
||||
ADDRESSES.sui.USDT;
|
||||
|
||||
const AF_LP_IDs = [
|
||||
"0xe2569ee20149c2909f0f6527c210bc9d97047fe948d34737de5420fab2db7062",
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { nullAddress, sumTokensExport } = require('../helper/unwrapLPs')
|
||||
|
||||
module.exports = {
|
||||
ethereum: {
|
||||
tvl: sumTokensExport({
|
||||
tokens:[nullAddress, "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xdac17f958d2ee523a2206206994597c13d831ec7"],
|
||||
tokens:[nullAddress, ADDRESSES.ethereum.WSTETH, ADDRESSES.ethereum.USDC, ADDRESSES.ethereum.USDT],
|
||||
owners: ["0xA8AB795731fbBFDd1Fbc57ca11e6f722e7783642"]
|
||||
})
|
||||
},
|
||||
arbitrum: {
|
||||
tvl: sumTokensExport({
|
||||
tokens:[nullAddress, "0x5979D7b546E38E414F7E9822514be443A4800529", "0xaf88d065e77c8cc2239327c5edb3a432268e5831", "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],
|
||||
tokens:[nullAddress, ADDRESSES.arbitrum.WSTETH, ADDRESSES.arbitrum.USDC_CIRCLE, ADDRESSES.arbitrum.USDT],
|
||||
owners: ["0x475c4af369b28997b25bd756ef92797ad3f69593"]
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { dexExport, getResources } = require('../helper/chain/aptos')
|
||||
const sui = require('../helper/chain/sui')
|
||||
const { transformDexBalances } = require('../helper/portedTokens')
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { sumTokensExport } = require('../helper/unknownTokens');
|
||||
|
||||
module.exports = {
|
||||
jbc: {
|
||||
tvl: sumTokensExport({
|
||||
owner: '0x280608DD7712a5675041b95d0000B9089903B569',
|
||||
tokens: ['0x24599b658b57f91E7643f4F154B16bcd2884f9ac'],
|
||||
tokens: [ADDRESSES.jbc.JUSDT],
|
||||
}),
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { cexExports } = require('../helper/cex')
|
||||
|
||||
const config = {
|
||||
@@ -29,8 +30,8 @@ const config = {
|
||||
'0x8c7Efd5B04331EFC618e8006f19019A3Dc88973e',
|
||||
'0xCCFA6f3b01c7bf07B033A9d496Fdf22F0cdF5293',
|
||||
'0x90f76616d34Cb6A1F4423B33c0201B2A1980Fc81',
|
||||
'0x4E15361FD6b4BB609Fa63C81A2be19d873717870',
|
||||
'0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0',
|
||||
ADDRESSES.ethereum.FTM,
|
||||
ADDRESSES.ethereum.MATIC,
|
||||
'0xC1723Af0Dc5400A1cAAa47E76a45c39538A6AD49',
|
||||
'0x07E114C06462D8892Ae4574A7502b8c1c0FBdFbb',
|
||||
'0x274c427B1BF0bB4a137EDE688c6D621263CA7Ce8',
|
||||
|
||||
@@ -14,7 +14,7 @@ async function tvl(_, _b, _cb, { api, }) {
|
||||
const vaults = logs.map(log => log.vault)
|
||||
const bals = await api.multiCall({ abi: 'function stTotalAmount() external view returns (uint256 balance)', calls: vaults })
|
||||
let tokens = await api.multiCall({ abi: 'function asset() external view returns (address)', calls: vaults })
|
||||
tokens = tokens.map(token => token === '0x0000000000000000000000000000000000000001' ? ADDRESSES.null : token)
|
||||
tokens = tokens.map(token => token === ADDRESSES.linea.WETH_1 ? ADDRESSES.null : token)
|
||||
|
||||
const decimals = await api.multiCall({ abi: 'erc20:decimals', calls: tokens, permitFailure: true })
|
||||
api.addTokens(tokens, bals.map((v, i) => v / 10 ** (18 - (decimals[i] ?? 18))))
|
||||
|
||||
@@ -138,12 +138,12 @@ Object.keys(config).forEach(chain => {
|
||||
api.log(ownerTokens.length * 2, api.chain)
|
||||
if (chain === 'base')
|
||||
ownerTokens.push(...[
|
||||
[['0x4200000000000000000000000000000000000006', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0x1172035a744ea18161497e94f0bbce244d51de9f'],
|
||||
[['0x4200000000000000000000000000000000000006', '0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22'], '0xce670438dadb080d7aae65fdaff51355aa30535e'],
|
||||
[['0x4200000000000000000000000000000000000006', '0x78a087d713be963bf307b18f2ff8122ef9a63ae9'], '0x3c388c812dada10e597f802a766e7ce898bc7751'],
|
||||
[['0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca', '0x4200000000000000000000000000000000000006'], '0xd804cf0ac2a4b6dd6d375504a27874f5db073625'],
|
||||
[['0x4200000000000000000000000000000000000006', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0x72e663c4e8fd50184c8b8135315c20326cc4ad75'],
|
||||
[['0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', '0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca'], '0xe8ef69e4dd7f6ed2d84f256e97469bca22b78a8b'],
|
||||
[[ADDRESSES.optimism.WETH_1, ADDRESSES.base.USDbC], '0x1172035a744ea18161497e94f0bbce244d51de9f'],
|
||||
[[ADDRESSES.optimism.WETH_1, '0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22'], '0xce670438dadb080d7aae65fdaff51355aa30535e'],
|
||||
[[ADDRESSES.optimism.WETH_1, '0x78a087d713be963bf307b18f2ff8122ef9a63ae9'], '0x3c388c812dada10e597f802a766e7ce898bc7751'],
|
||||
[[ADDRESSES.base.USDbC, ADDRESSES.optimism.WETH_1], '0xd804cf0ac2a4b6dd6d375504a27874f5db073625'],
|
||||
[[ADDRESSES.optimism.WETH_1, ADDRESSES.base.USDbC], '0x72e663c4e8fd50184c8b8135315c20326cc4ad75'],
|
||||
[[ADDRESSES.base.USDC, ADDRESSES.base.USDbC], '0xe8ef69e4dd7f6ed2d84f256e97469bca22b78a8b'],
|
||||
])
|
||||
|
||||
return api.sumTokens({ ownerTokens, blacklistedTokens, permitFailure: true, })
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { sumTokens2 } = require("../helper/unwrapLPs");
|
||||
|
||||
const config = {
|
||||
arbitrum: {
|
||||
marketManager: "0x719Cf2A5bDb64BC47B72556A1439eF4b876D5A0C",
|
||||
usd: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"
|
||||
usd: ADDRESSES.arbitrum.USDT
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ module.exports = {
|
||||
|
||||
// eth
|
||||
[
|
||||
"0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
|
||||
ADDRESSES.bsc.ETH,
|
||||
"0xA230805C28121cc97B348f8209c79BEBEa3839C0",
|
||||
],
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ async function getMarkets(comptroller, block, chain, cether, cetheEquivalent, bl
|
||||
return;
|
||||
}
|
||||
if (['0xd2ec53e8dd00d204d3d9313af5474eb9f5188ef6', '0x0aeadb9d4c6a80462a47e87e76e487fa8b9a37d7'].includes(cToken) && chain === 'rsk') {
|
||||
markets.push({ underlying: '0x542fda317318ebf1d3deaf76e0b632741a7e677d', cToken })
|
||||
markets.push({ underlying: ADDRESSES.rsk.WRBTC1, cToken })
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('helper/coreAssets.json')
|
||||
const { request, gql } = require("graphql-request");
|
||||
|
||||
const graphUrl =
|
||||
@@ -37,7 +38,7 @@ async function getTVL(toTimestamp) {
|
||||
);
|
||||
|
||||
return {
|
||||
"base:0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA": total,
|
||||
["base:" + ADDRESSES.base.USDbC]: total,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ const poolHelpers = {
|
||||
const blacklistedTokens = [
|
||||
ADDRESSES.bsc.iUSD,
|
||||
'0x1382628e018010035999A1FF330447a0751aa84f',
|
||||
'0x0A3BB08b3a15A19b4De82F8AcFc862606FB69A2D', // mantle iUSD
|
||||
ADDRESSES.bsc.iUSD, // mantle iUSD
|
||||
'0x078f712f038A95BeEA94F036cADB49188a90604b', // manta iUSD
|
||||
]
|
||||
|
||||
|
||||
@@ -3,15 +3,15 @@ const sui = require("../helper/chain/sui");
|
||||
|
||||
const UsdcVault = {
|
||||
id: '0x7a2f75a3e50fd5f72dfc2f8c9910da5eaa3a1486e4eb1e54a825c09d82214526',
|
||||
tType: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN'
|
||||
tType: ADDRESSES.sui.USDC
|
||||
}
|
||||
const UsdtVault = {
|
||||
id: '0x0fce8baed43faadf6831cd27e5b3a32a11d2a05b3cd1ed36c7c09c5f7bcb4ef4',
|
||||
tType: '0xc060006111016b8a020ad5b33834984a437aaa7d3c74c18e09a95d48aceab08c::coin::COIN'
|
||||
tType: ADDRESSES.sui.USDT
|
||||
}
|
||||
const SuiVault = {
|
||||
id: '0x16272b75d880ab944c308d47e91d46b2027f55136ee61b3db99098a926b3973c',
|
||||
tType: '0x2::sui::SUI'
|
||||
tType: ADDRESSES.sui.SUI
|
||||
}
|
||||
|
||||
async function tvl(_, _1, _2, { api }) {
|
||||
|
||||
@@ -7,7 +7,7 @@ const PERP_V2_VAULT = "0xAD7b4C162707E0B2b5f6fdDbD3f8538A5fbA0d60";
|
||||
|
||||
const tokens = [
|
||||
ADDRESSES.tombchain.FTM,
|
||||
"0x68f180fcce6836688e9084f035309e29bf0a2095",
|
||||
ADDRESSES.optimism.WBTC,
|
||||
"0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6",
|
||||
"0x76FB31fb4af56892A25e32cFC43De717950c9278",
|
||||
"0x0994206dfe8de6ec6920ff4d779b0d950605fb53",
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const pools_provider = "0xE4534d76Cc512a14F288453F06F8961740Ae2a1E"
|
||||
|
||||
async function tvl(_, _b, _cb, { api, }) {
|
||||
let data = await api.fetchList({ lengthAbi: 'poolLength', itemAbi: 'function poolList(uint256) view returns (uint256 maxAmount, address strategy, address asset, uint64 payoutFrequency, uint32 totalPayments, uint32 rateIndex)', target: pools_provider})
|
||||
data = data.filter(i => i.strategy !== '0x0000000000000000000000000000000000000000')
|
||||
data = data.filter(i => i.strategy !== ADDRESSES.null)
|
||||
const aTokens = await api.multiCall({ abi: 'address:aToken', calls: data.map(i => i.strategy)})
|
||||
const ownerTokens = data.map((i, idx) => [[i.asset, aTokens[idx]], i.strategy])
|
||||
return api.sumTokens({ ownerTokens })
|
||||
|
||||
@@ -54,7 +54,7 @@ const arb_pools = [...new Set([...v1_3_arb_ShortCollateral, ...v1_3_arb_Liquidit
|
||||
|
||||
const op_tokens = [ADDRESSES.optimism.sUSD, ADDRESSES.optimism.sETH,
|
||||
'0xc5db22719a06418028a40a9b5e9a7c02959d0d08', '0x298b9b95708152ff6968aafd889c6586e9169f1d',
|
||||
ADDRESSES.optimism.OP, '0x68f180fcce6836688e9084f035309e29bf0a2095',
|
||||
ADDRESSES.optimism.OP, ADDRESSES.optimism.WBTC,
|
||||
ADDRESSES.optimism.WETH, ADDRESSES.optimism.USDC]
|
||||
|
||||
const arb_tokens = [ADDRESSES.arbitrum.USDC, ADDRESSES.arbitrum.WETH,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { getCache, get } = require("../helper/http");
|
||||
const sdk = require("@defillama/sdk");
|
||||
const { nullAddress } = require("../helper/tokenMapping");
|
||||
|
||||
@@ -21,7 +21,7 @@ const TOKENS_IN_LEGACY_VERSIONS = {
|
||||
ADDRESSES.optimism.BitANT, // BitANT
|
||||
ADDRESSES.base.DAI, // LYRA
|
||||
'0x65559aa14915a70190438ef90104769e5e890a00', // ENS
|
||||
'0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC
|
||||
ADDRESSES.optimism.WBTC, // WBTC
|
||||
'0x6fd9d7ad17242c41f7131d257212c54a0e816691', // UNI
|
||||
ADDRESSES.optimism.USDC, // USDC
|
||||
'0x7fb688ccf682d58f86d7e38e03f9d22e7705448b', // RAI
|
||||
|
||||
@@ -44,7 +44,7 @@ const config = {
|
||||
toa: [
|
||||
[nullAddress, '0x5B7C5daa5f4Bb37c457dA468Da1CDaA6219892A1'], // ETH pool
|
||||
[ADDRESSES.optimism.USDC, '0x24682cFDc060316355C26C420d0748F289502e83'], //usdt pool new
|
||||
['0x68f180fcCe6836688e9084f035309E29Bf0A2095', '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new
|
||||
[ADDRESSES.optimism.WBTC, '0x469CC7AF1696B5e4E6151796Dc3B3fEf39b34f39'], //wbtc pool new
|
||||
[ADDRESSES.optimism.OP, '0xc9394748D5f633152AD3F8f557a9B7743148db1B'], //Op pool new
|
||||
],
|
||||
token: '0x3E5D9D8a63CC8a88748f229999CF59487e90721e',
|
||||
|
||||
@@ -7,8 +7,8 @@ async function tvl(ts, _block, { polygon: block }, { api }) {
|
||||
owner: '0xa6D0e001A257296d5246edcEFE4Ac56BD558F6c6',
|
||||
tokens: [
|
||||
ADDRESSES.null,
|
||||
'0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063',
|
||||
'0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619',
|
||||
ADDRESSES.polygon.DAI,
|
||||
ADDRESSES.polygon.WETH_1,
|
||||
'0xa3Fa99A148fA48D14Ed51d610c367C61876997F1',
|
||||
'0xE7a24EF0C5e95Ffb0f6684b813A78F2a3AD7D171',
|
||||
]
|
||||
|
||||
@@ -99,7 +99,7 @@ module.exports = {
|
||||
ADDRESSES.optimism.USDC,
|
||||
ADDRESSES.optimism.USDT,
|
||||
ADDRESSES.optimism.USDC, // Bridge USDC
|
||||
"0x68f180fcCe6836688e9084f035309E29Bf0A2095", // WBTC
|
||||
ADDRESSES.optimism.WBTC, // WBTC
|
||||
],
|
||||
}),
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { call, view_account, addTokenBalances, sumSingleBalance } = require('../helper/chain/near');
|
||||
const { sumTokensExport } = require('../helper/unwrapLPs');
|
||||
|
||||
@@ -8,8 +9,8 @@ const FT_NEAR = 'wrap.near';
|
||||
const owner = '0x816f722424b49cf1275cc86da9840fbd5a6167e9'
|
||||
|
||||
const tokenAddress = {
|
||||
arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
|
||||
optimism: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',
|
||||
arbitrum: ADDRESSES.arbitrum.USDC_CIRCLE,
|
||||
optimism: ADDRESSES.optimism.USDC_CIRCLE,
|
||||
}
|
||||
|
||||
async function tvl() {
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { sumTokensExport, nullAddress } = require('../helper/unwrapLPs')
|
||||
|
||||
const fundStore = "0x7Cc41ee3Cba9a1D2C978c37A18A0d6b59c340224"; // FundStore
|
||||
const PINGU = "0x4615fa30fFA5716984d4372030ce28D99fCB702f"; // PINGU
|
||||
const assets = [nullAddress, "0xaf88d065e77c8cC2239327C5EDb3A432268e5831"] // ETH, USDC
|
||||
const assets = [nullAddress, ADDRESSES.arbitrum.USDC_CIRCLE] // ETH, USDC
|
||||
|
||||
module.exports = {
|
||||
start: 1704844800,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const sdk = require('@defillama/sdk');
|
||||
|
||||
const getVaultsAbi = 'address[]:getRegisteredAddresses';
|
||||
@@ -16,7 +17,7 @@ async function addFraxVaultToTVL(balances, api) {
|
||||
const totalAssets = [];
|
||||
for (let i = 0; i < vaultAddresses.length; i++) {
|
||||
// if the vault has no strategy: 1 share = 1 asset
|
||||
if (strategies[i] === "0x0000000000000000000000000000000000000000") {
|
||||
if (strategies[i] === ADDRESSES.null) {
|
||||
totalAssets.push(totalSupply[i]);
|
||||
} else {
|
||||
const assets = await api.call({ target: strategies[i], abi: convertToAssetsAbi, params: [totalSupply[i]] })
|
||||
|
||||
@@ -119,7 +119,7 @@ const wIotex = ADDRESSES.iotex.WIOTX;
|
||||
|
||||
const usdtOptimism = ADDRESSES.optimism.USDT;
|
||||
const daiOptimism = ADDRESSES.optimism.DAI;
|
||||
const wbtcOptimism = "0x68f180fcCe6836688e9084f035309E29Bf0A2095";
|
||||
const wbtcOptimism = ADDRESSES.optimism.WBTC;
|
||||
|
||||
const wbtcArbitrum = ADDRESSES.arbitrum.WBTC;
|
||||
const usdtArbitrum = ADDRESSES.arbitrum.USDT;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { get } = require("../helper/http");
|
||||
const { sumTokens2 } = require("../helper/unwrapLPs");
|
||||
|
||||
@@ -12,7 +13,7 @@ async function tvl(_, _b, _c, { api }) {
|
||||
t.l1_bridge_address,
|
||||
]);
|
||||
tokensAndOwners.push([
|
||||
"0x6B175474E89094C44Da98b954EedeAC495271d0F",
|
||||
ADDRESSES.ethereum.DAI,
|
||||
"0x0437465dfb5B79726e35F08559B0cBea55bb585C",
|
||||
]);
|
||||
return sumTokens2({
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const config = {
|
||||
arbitrum: [
|
||||
{ "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": "0x289ba1701c2f088cf0faf8b3705246331cb8a839", "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" }
|
||||
{ "tenderSwap": "0x2429fc7082eb517c14946b392b195b181d0b9781", "steak": ADDRESSES.arbitrum.LPT, "tenderToken": "0xfac38532829fdd744373fdcd4708ab90fa0c4078" }
|
||||
],
|
||||
ethereum: [
|
||||
{ "tenderSwap": "0x7de47d1c5b9415877fe6863263f97180117fdaaa", "steak": "0x18aaa7115705e8be94bffebde57af9bfc265b998", "tenderToken": "0xc83badbf764f957acc23bc9e9aac71c298b07243" },
|
||||
{ "tenderSwap": "0xf56f61f8181d118c010ca9c5f1e9e447e37b207e", "steak": "0xc944e90c64b2c07662a292be6244bdf05cda44a7", "tenderToken": "0xc29f5611dcd89bc5d3a19762783d3006bc2ad2ac" },
|
||||
{ "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" }
|
||||
{ "tenderSwap": "0x23c24c1253c602106255b357cd3efe260a3a469e", "steak": ADDRESSES.ethereum.MATIC, "tenderToken": "0x2336c10a1d3100343fa9911a2c57b77c333599a3" }
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@ module.exports = treasuryExports({
|
||||
tokens: [
|
||||
ADDRESSES.tombchain.FTM, // WETH
|
||||
'0xe50fA9b3c56FfB159cB0FCA61F5c9D750e8128c8', // aOptWETH
|
||||
'0x68f180fcce6836688e9084f035309e29bf0a2095', // WBTC
|
||||
ADDRESSES.optimism.WBTC, // WBTC
|
||||
'0x078f358208685046a11C85e8ad32895DED33A249', // aOptWBTC
|
||||
ADDRESSES.optimism.OP, // OP
|
||||
'0x513c7E3a9c69cA3e22550eF58AC1C0088e918FFf', // aOptOP
|
||||
|
||||
@@ -11,7 +11,7 @@ const ftmTokens = [
|
||||
"0x841FAD6EAe12c286d1Fd18d1d525DFfA75C7EFFE", // BOO
|
||||
ADDRESSES.fantom.WFTM, // WFTM
|
||||
"0x91a40c733c97a6e1bf876eaf9ed8c08102eb491f", // lzDAI
|
||||
"0x28a92dde19D9989F39A49905d7C9C2FAc7799bDf", // lzUSDC
|
||||
ADDRESSES.fantom.USDC_L0, // lzUSDC
|
||||
"0xcc1b99dDAc1a33c201a742A1851662E87BC7f22C", // lzUSDT
|
||||
"0xf1648C50d2863f780c57849D812b4B7686031A3D", // lzWBTC
|
||||
"0x695921034f0387eAc4e11620EE91b1b15A6A09fE", // lzWETH
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
|
||||
const { queryAddresses } = require('../helper/chain/radixdlt');
|
||||
|
||||
const pools = [
|
||||
{
|
||||
pool: 'component_rdx1cq8mm5z49x6lyet44a0jd7zq52flrmykwwxszq65uzfn6pk3mvm0k4',
|
||||
resource: 'resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd',
|
||||
resource: ADDRESSES.radixdlt.XRD,
|
||||
priceFeed: 'component_rdx1cz9u0svc4d2jtnkdqypxpcea8cj3da9vdqakrt748ackl82khfxv25'
|
||||
},
|
||||
{
|
||||
|
||||
@@ -46,7 +46,7 @@ const wooPPConfig = {
|
||||
],
|
||||
optimism: [
|
||||
ADDRESSES.optimism.WETH_1, // WETH
|
||||
'0x68f180fcCe6836688e9084f035309E29Bf0A2095', // WBTC
|
||||
ADDRESSES.optimism.WBTC, // WBTC
|
||||
ADDRESSES.optimism.OP, // OP
|
||||
ADDRESSES.optimism.USDC, // USDC
|
||||
ADDRESSES.optimism.USDT,
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const VAULTS = {
|
||||
Neutral: {
|
||||
Vault: '0x90A039797E93f2c671DE25DD24E5333b5e8F9Ab3',
|
||||
@@ -14,7 +15,7 @@ const VAULTS = {
|
||||
};
|
||||
|
||||
const HELPER = "0x8A2dD0eabE8b1A1066731C43AaC08dCDd50fcA63"
|
||||
const SUSD = '0x8c6f28f2F1A3C87F0f938b96d27520d9751ec8d9'
|
||||
const SUSD = ADDRESSES.optimism.sUSD
|
||||
|
||||
module.exports = {
|
||||
VAULTS,
|
||||
|
||||
@@ -14,7 +14,7 @@ const VE_ZOO_CONTRACT_ARBITRUM = "0xF7F963dC9c9f66c86Acd37255312FfbAC0d65b23"
|
||||
const CAMELOT_LP_TOKEN_ARBITRUM = '0x2517cd42eE966862e8EcaAc9Abd1CcD272d897b6'
|
||||
const BATTLE_ARENA_ARBITRUM = '0x19C98B4302e64d2De1cd14a7AD7d592F5dAE1319'
|
||||
|
||||
const FSGLP_ARBITRUM = '0x1aDDD80E6039594eE970E5872D247bf0414C8903'
|
||||
const FSGLP_ARBITRUM = ADDRESSES.arbitrum.fsGLP
|
||||
|
||||
const VAULT_CONTRACT_ARBITRUM = '0x9d284e037c20f029c8C56bbE4ff7C0F8de0FA4A9'
|
||||
const LIQUIDITY_MINING_ARBITRUM = '0x96EBfd5dfaBf5E94f55940FC1872f39031fb332c'
|
||||
|
||||
Reference in New Issue
Block a user