code refactor: stop double counting staking tvl

This commit is contained in:
g1nt0ki
2023-02-07 00:16:11 +05:30
parent 07b83701bd
commit 31d85bd809
2 changed files with 6 additions and 130 deletions

View File

@@ -1,146 +1,21 @@
const BigNumber = require("bignumber.js");
const sdk = require("@defillama/sdk");
const { utils } = require("ethers");
const factoryABI = require("../helper/abis/factory.json");
const tokenABI = require("../helper/abis/erc20.json");
const { toUSDTBalances } = require("../helper/balances");
const { sumChainTvls } = require("@defillama/sdk/build/generalUtil");
const { sumTokensExport } = require("../helper/unknownTokens");
const METER_FTB_CONTRACT = "0x6cfe9adad5215195c1aa9755daed29360e6ab986";
const METER_REWARDS_CONTRACT = "0x103ed6fb861a2651ff59f0852d3739c18d45cd9b";
const METER_FTB_MTRG_CONTRACT = "0x88cdb3e764dedcc2e3a1642957ebd513765b252a";
const METER_MTRG_BUSD_CONTRACT = "0x4A74C4110726Ac162558062250c671B2BdB17c07";
const POLYGON_FTB_CONTRACT = "0xF305012EA754252184f1071C86ae99fAc5B40320";
const POLYGON_REWARDS_CONTRACT = "0x0455e50b2822e6f3d8dc01246aca8378a8992466";
const POLYGON_FTB_MATIC_CONTRACT = "0x1Df39b565652eACa24dfB16A07dcfe4d7f8f02c3";
const POLYGON_MATICUSDC_CONTRACT = "0x6e7a5fafcec6bb1e78bae2a1f0b612012bf14827";
const meterGetFTBValueOnUSD = async () => {
const FTBMTRG = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: METER_FTB_MTRG_CONTRACT,
chain: "meter",
})
).output;
const MTRGBUSD = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: METER_MTRG_BUSD_CONTRACT,
chain: "meter",
})
).output;
return (
((Number(utils.formatEther(MTRGBUSD[1])) /
Number(utils.formatEther(MTRGBUSD[0]))) *
Number(utils.formatEther(FTBMTRG[0]))) /
Number(utils.formatEther(FTBMTRG[1]))
);
};
const polygonGetFTBValueOnUSD = async () => {
const FTBMATIC = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: POLYGON_FTB_MATIC_CONTRACT,
chain: "polygon",
})
).output;
const MATICUSDC = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: POLYGON_MATICUSDC_CONTRACT,
chain: "polygon",
})
).output;
return (
(((Number(utils.formatEther(MATICUSDC[1])) * Math.pow(10, 12)) /
Number(utils.formatEther(MATICUSDC[0]))) *
Number(utils.formatEther(FTBMATIC[0]))) /
Number(utils.formatEther(FTBMATIC[1]))
);
};
const _meterStaking = async (timestamp, block, chainBlocks) => {
const TOTAL_FTB_ON_REWARDS_POOL = (
await sdk.api.erc20.balanceOf({
target: METER_FTB_CONTRACT,
owner: METER_REWARDS_CONTRACT,
chain: "meter",
block: chainBlocks["meter"],
})
).output;
return toUSDTBalances(
Number(utils.formatEther(TOTAL_FTB_ON_REWARDS_POOL)) *
(await meterGetFTBValueOnUSD())
);
};
const _meterPool2 = async (timestamp, block, chainBlocks) => {
const FTBMTRG = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: METER_FTB_MTRG_CONTRACT,
chain: "meter",
})
).output;
return toUSDTBalances(
Number(utils.formatEther(FTBMTRG[1])) * (await meterGetFTBValueOnUSD())
);
};
const _polygonStaking = async (timestamp, block, chainBlocks) => {
const TOTAL_FTB_ON_REWARDS_POOL = (
await sdk.api.erc20.balanceOf({
target: POLYGON_FTB_CONTRACT,
owner: POLYGON_REWARDS_CONTRACT,
chain: "polygon",
block: chainBlocks["polygon"],
})
).output;
return toUSDTBalances(
Number(utils.formatEther(TOTAL_FTB_ON_REWARDS_POOL)) *
(await polygonGetFTBValueOnUSD())
);
};
const _polygonPool2 = async (timestamp, block, chainBlocks) => {
const FTB_MATIC = (
await sdk.api.abi.call({
abi: factoryABI.getReserves,
target: POLYGON_FTB_MATIC_CONTRACT,
chain: "polygon",
})
).output;
return toUSDTBalances(
Number(utils.formatEther(FTB_MATIC[1])) * (await polygonGetFTBValueOnUSD())
);
};
module.exports = {
misrepresentedTokens: true,
meter: {
staking: _meterStaking,
pool2: _meterPool2,
tvl: sumChainTvls([_meterStaking, _meterPool2]),
staking: sumTokensExport({ owner: METER_REWARDS_CONTRACT, tokens:[METER_FTB_CONTRACT,], useDefaultCoreAssets: true, lps: [METER_FTB_MTRG_CONTRACT] }),
},
polygon: {
staking: _polygonStaking,
pool2: _polygonPool2,
tvl: sumChainTvls([_polygonStaking, _polygonPool2]),
staking: sumTokensExport({ owner: POLYGON_REWARDS_CONTRACT, tokens:[POLYGON_FTB_CONTRACT,], useDefaultCoreAssets: true, lps: [POLYGON_FTB_MATIC_CONTRACT] }),
tvl: () => 0,
},
methodology: `Staking: we include locked tokens on the rewards contracts as staking.\n
Pool2: Relation between liquidity, token value and total tokens on the liquidity pools.\n
TVL: Based on the staking and pool2 summation including rewards storage and market liquidity tokens.`,
methodology: `Staking: we include locked tokens on the rewards contracts as staking`,
};

View File

@@ -1116,6 +1116,7 @@
],
"meter": [
"0x5729cb3716a315d0bde3b5e489163bf8b9659436",
"0x228ebbee999c6a7ad74a6130e81b12f9fe237ba3",
"0x160361ce13ec33c993b5cca8f62b6864943eb083",
"0xd86e243fc0007e6226b07c9a50c9d70d78299eb5",
"0x6abaedab0ba368f1df52d857f24154cc76c8c972",