code refactor

This commit is contained in:
g1nt0ki
2024-09-05 13:19:40 +02:00
parent d9ed73ec94
commit 37b22cd6d1
15 changed files with 136 additions and 665 deletions

View File

@@ -1,24 +1,15 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { stakingUnknownPricedLP } = require("../helper/staking");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const { sumTokensExport } = require("../helper/unwrapLPs");
const photon = "0x2F1305F0619ADa14688A4291953bd7d284f9C2a5";
const stakingContract = "0x81177472Ce36A9b1AB573804CD215C72cEb76F36";
const photonbusd = "0xEBAa17dA7D5C616441290669E9D2c982c8B1Da25"; //PHOTON-BUSD
const treasury = "0x0f90591b01DE6F832e8B8E4ec3525efD423BCaD1";
const treasuryTokens = [
[ADDRESSES.bsc.BUSD, false], // BUSD
];
async function tvl (timestamp, block, chainBlocks) {
let balances = {};
await sumTokensAndLPsSharedOwners(balances, treasuryTokens, [treasury], chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`);
return balances;
}
module.exports = {
bsc: {
tvl,
staking: stakingUnknownPricedLP(stakingContract, photon, "bsc", photonbusd, addr=>`bsc:${addr}`)
}
bsc: {
tvl: sumTokensExport({ tokens: [ADDRESSES.bsc.BUSD], owner: treasury }),
staking: stakingUnknownPricedLP(stakingContract, photon, "bsc", photonbusd, addr => `bsc:${addr}`)
}
}

View File

@@ -1,33 +1,17 @@
const ADDRESSES = require('../helper/coreAssets.json')
const {sumTokensAndLPsSharedOwners, sumLPWithOnlyOneToken} = require('../helper/unwrapLPs')
const { stakingPricedLP } = require('../helper/staking')
const treasury = "0x6687379035822ee15e2164f9C1280fBEAd0D7627";
const PB_TOKEN = "0x0E75CDb914DdCcA683357dD94d26Caa39BC14B16"
const LP_TOKEN = "0xd3a6eebbe6f6d9197a7fc2aaaf94d8b0ec51f8a8";
const STAKING_ADDRESS = "0xE4738791690AF507C8C7Bf5981ef541568C7C312"
const COREASSETNAME = "magic-internet-money";
const CHAIN = "avax";
const MIM = "0x130966628846bfd36ff31a822705796e8cb8c18d"
async function avaxTvl(time, ethBlock, chainBlocks){
const balances = {}
const transform = addr => 'avax:'+addr
await sumLPWithOnlyOneToken(balances, "0xd3a6eebbe6f6d9197a7fc2aaaf94d8b0ec51f8a8", treasury, MIM, chainBlocks.avax, "avax", transform)
await sumTokensAndLPsSharedOwners(balances, [
[MIM, false],
[ADDRESSES.avax.WBTC_e, false]
], [treasury], chainBlocks.avax, "avax", transform)
return balances
}
module.exports={
deadFrom: 1648765747,
misrepresentedTokens: true,
avax:{
tvl: avaxTvl,
tvl: () => ({}),
staking: stakingPricedLP(STAKING_ADDRESS, PB_TOKEN, CHAIN, LP_TOKEN, COREASSETNAME, true),
}
}

View File

@@ -1,5 +1,4 @@
const { staking, stakings } = require("../helper/staking");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
/*** Ethereum Addresses ***/
const UFI = "0xcDa4e840411C00a614aD9205CAEC807c7458a0E3";
@@ -51,23 +50,8 @@ const farmingStakingContracts_polygon = [
"0xF1a44C75E4D92f4DA737485f96b0c2a1327d91b2",
];
const polygonTvl = async (chainBlocks) => {
const balances = {};
let transformAddress = i => `polygon:${i}`;
await sumTokensAndLPsSharedOwners(
balances,
[
[SAFLE_polygon, false],
[SCA_polygon, false],
],
farmingStakingContracts_polygon,
chainBlocks["polygon"],
"polygon",
transformAddress
);
return balances;
const polygonTvl = async (api) => {
return api.sumTokens({ owners: farmingStakingContracts_polygon, tokens: [SAFLE_polygon, SCA_polygon,] });
};
module.exports = {
@@ -82,6 +66,5 @@ module.exports = {
staking: stakings(farmingStakingContracts_polygon, UFI_polygon),
tvl: polygonTvl,
},
//tvl: (tvl) => ({}),
methodology: "Counts tvl of the assets staked on the Farming seccion thgough Farming Contracts",
};

View File

@@ -1,6 +1,5 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { sumTokensAndLPsSharedOwners, sumTokens2, genericUnwrapCvx } = require('../helper/unwrapLPs')
const sdk = require('@defillama/sdk')
const { sumTokens2, genericUnwrapCvx } = require('../helper/unwrapLPs')
const treasuries = ["0xa52fd396891e7a74b641a2cb1a6999fcf56b077e", "0x086c98855df3c78c6b481b6e1d47bef42e9ac36b"]
@@ -20,110 +19,72 @@ const BTRFLYV2 = '0xc55126051B22eBb829D00368f4B12Bde432de5Da'
const cvxCRVPool = '0x0392321e86F42C2F94FBb0c6853052487db521F0'
const rlBTRFLYAbi = {
lockedSupply: "uint256:lockedSupply",
}
async function tvl(timestamp, block, chainBlocks){
const balances = {}
//Add tokens/curve LPs in wallet
await sumTokensAndLPsSharedOwners(balances, [
[CVX, false],
[cvxCRV, false],
[FXS, false],
[CRV, false],
[AURA, false],
// BTRFLY/ETH Curve LP
['0x7483Dd57f6488b0e194A151C57Df6Ec85C00aCE9', false],
[ADDRESSES.ethereum.USDC, false],
[ADDRESSES.ethereum.FRAX, false],
], treasuries, block)
//Add UniswapV3 LPs
await sumTokens2({ balances, owners: treasuries, block, resolveUniV3: true, })
//Add convex deposited curve LPs
await genericUnwrapCvx(balances, treasuries[0], cvxCRVPool, block, 'ethereum')
//This causes an error and not sure why
//await genericUnwrapCvx(balances, treasuries[0], cvxFXSPool, block, 'ethereum')
//Add vlCVX as CVX
const vlCVXBalance = await sdk.api.erc20.balanceOf({
target: ADDRESSES.ethereum.vlCVX,
owner: treasuries[0],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, CVX, vlCVXBalance)
//Add vlAURA as AURA
const vlAURABalance = await sdk.api.erc20.balanceOf({
target: AURALocker,
owner: treasuries[0],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, AURA, vlAURABalance)
//Add staked cvxCRV as cvxCRV
const cvxCRVStakedBalance = await sdk.api.erc20.balanceOf({
target: cvxCRVStaking,
owner: treasuries[0],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, cvxCRV, cvxCRVStakedBalance)
//Add veFXS as 1/4 FXS since locked for 4 years
const veFXSBalance = await sdk.api.erc20.balanceOf({
target: veFXS,
owner: treasuries[0],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, FXS, veFXSBalance/4)
//Add veCRV as 1 CRV since locked for 4 years
const veCRVBalance = await sdk.api.erc20.balanceOf({
target: veCRV,
owner: treasuries[0],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, CRV, veCRVBalance)
//Add sOHM as OHM since 1:1
const sOHMBalance = await sdk.api.erc20.balanceOf({
target: sOHM,
owner: treasuries[1],
chain: 'ethereum',
block: chainBlocks['ethereum']
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, OHM, sOHMBalance)
return balances
lockedSupply: "uint256:lockedSupply",
}
async function staking(timestamp, block, chainBlocks) {
const balances = {}
//Adding locked BTRFLY
const lockedBTRFLY = await sdk.api.abi.call({
abi: rlBTRFLYAbi.lockedSupply,
target: rlBTRFLY,
chain: 'ethereum',
block: chainBlocks['ethereum'],
}).then(result => result.output)
sdk.util.sumSingleBalance(balances, BTRFLYV2, lockedBTRFLY)
return balances
async function tvl(api) {
const block = api.block
const balances = api.getBalances()
const tokens = [
CVX,
cvxCRV,
FXS,
CRV,
AURA,
// BTRFLY/ETH Curve LP
'0x7483Dd57f6488b0e194A151C57Df6Ec85C00aCE9',
ADDRESSES.ethereum.USDC,
ADDRESSES.ethereum.FRAX,
]
//Add tokens/curve LPs in wallet
await api.sumTokens({ owners: treasuries, tokens })
//Add UniswapV3 LPs
await sumTokens2({ api, owners: treasuries, resolveUniV3: true, })
//Add convex deposited curve LPs
await genericUnwrapCvx(balances, treasuries[0], cvxCRVPool, block)
//This causes an error and not sure why
//await genericUnwrapCvx(balances, treasuries[0], cvxFXSPool, block, 'ethereum')
//Add vlCVX as CVX
const [vlCVXBalance, vlAURABalance, cvxCRVStakedBalance, veFXSBalance, veCRVBalance, sOHMBalance] = await api.multiCall({
abi: 'erc20:balanceOf',
calls: [
{ target: ADDRESSES.ethereum.vlCVX, params: treasuries[0] },
{ target: AURALocker, params: treasuries[0] },
{ target: cvxCRVStaking, params: treasuries[0] },
{ target: veFXS, params: treasuries[0] },
{ target: veCRV, params: treasuries[0] },
{ target: sOHM, params: treasuries[1] },
]
})
api.add(CVX, vlCVXBalance)
api.add(AURA, vlAURABalance)
api.add(cvxCRV, cvxCRVStakedBalance)
api.add(CRV, veCRVBalance)
api.add(OHM, sOHMBalance)
api.add(FXS, veFXSBalance / 4)
//Add vlAURA as AURA
//Add staked cvxCRV as cvxCRV
//Add veFXS as 1/4 FXS since locked for 4 years
//Add veCRV as 1 CRV since locked for 4 years
//Add sOHM as OHM since 1:1
}
async function staking(api) {
//Adding locked BTRFLY
const lockedBTRFLY = await api.call({ abi: rlBTRFLYAbi.lockedSupply, target: rlBTRFLY, })
api.add(BTRFLYV2, lockedBTRFLY)
}
module.exports = {
methodology: "tvl = Treasury assets (bonding). staking = rlBTRFLY (locked tokens)",
ethereum:{
tvl,
staking
},
methodology: "tvl = Treasury assets (bonding). staking = rlBTRFLY (locked tokens)",
ethereum: {
tvl,
staking
},
}

View File

@@ -1,9 +1,7 @@
const sdk = require("@defillama/sdk");
const abi = require("./abi.json");
const { staking } = require("../helper/staking");
const { pool2s } = require("../helper/pool2");
const { unwrapUniswapLPs } = require("../helper/unwrapLPs");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const { sumTokens2 } = require("../helper/unwrapLPs");
// --- BSC Addresses ---
const masterChefContractBsc = "0x738600B15B2b6845d7Fe5B6C7Cb911332Fb89949";
@@ -57,153 +55,24 @@ const pool2StratsPolygon = ["0xB045Ea272229f9c0c94ca36C1e805226c9C8c034"];
const excludePool2Polygon = ["0x312D2eAb1c01C0c3d74f41a3B7Dd5772aD9F3Ca2"];
const calcTvl = async (
balances,
chain,
block,
masterchef,
transformAddress,
excludePool2
) => {
const poolLength = (
await sdk.api.abi.call({
abi: abi.poolLength,
target: masterchef,
chain,
block,
})
).output;
const lpPositions = [];
for (let index = 0; index < poolLength; index++) {
const strat = (
await sdk.api.abi.call({
abi: abi.poolInfo,
target: masterchef,
params: index,
chain,
block,
})
).output.strat;
const want = (
await sdk.api.abi.call({
abi: abi.poolInfo,
target: masterchef,
params: index,
chain,
block,
})
).output.want;
const strat_bal = (
await sdk.api.abi.call({
abi: 'erc20:balanceOf',
target: want,
params: strat,
chain,
block,
})
).output;
const symbol = (
await sdk.api.abi.call({
abi: abi.symbol,
target: want,
chain,
block,
})
).output;
if (
excludePool2.some((addr) => addr.toLowerCase() === want.toLowerCase()) ||
symbol.includes("RCUBE") ||
symbol.includes("QBERT") ||
symbol.includes("pQBERT")
) {
continue
} else if (symbol.includes("LP")) {
lpPositions.push({
token: want,
balance: strat_bal,
});
} else {
sdk.util.sumSingleBalance(balances, `${chain}:${want}`, strat_bal);
}
}
await unwrapUniswapLPs(balances, lpPositions, block, chain, transformAddress);
};
const bscStaking = async (chainBlocks) => {
const balances = {};
const transformAddress = i => `bsc:${i}`;
for (const token of stakingTokensBsc) {
await sumTokensAndLPsSharedOwners(
balances,
[[token, false]],
retroStakingsBsc,
chainBlocks["bsc"],
"bsc",
transformAddress
);
}
return balances;
};
const polygonStaking = async (...params) => {
for (const stakingContract of retroStakingsPolygon) {
return staking(stakingContract, pQBERT)(...params);
}
};
const bscTvl = async (chainBlocks) => {
const balances = {};
const transformAddress = i => `bsc:${i}`;
await calcTvl(
balances,
"bsc",
chainBlocks["bsc"],
masterChefContractBsc,
transformAddress,
excludePool2Bsc
);
return balances;
};
const polygonTvl = async (chainBlocks) => {
const balances = {};
const transformAddress = i => `polygon:${i}`;
await calcTvl(
balances,
"polygon",
chainBlocks["polygon"],
masterChefContractPolygon,
transformAddress,
excludePool2Polygon
);
return balances;
};
async function tvl(api) {
const masterchef = api.chain === "bsc" ? masterChefContractBsc : masterChefContractPolygon;
const blacklistedTokens = excludePool2Bsc.concat(excludePool2Polygon).concat([pQBERT])
const poolInfos = await api.fetchList({ lengthAbi: abi.poolLength , itemAbi: abi.poolInfo, target: masterchef})
const tokensAndOwners = poolInfos.map(poolInfo => [poolInfo.want, poolInfo.strat])
return sumTokens2({ api, tokensAndOwners, blacklistedTokens, })
}
module.exports = {
misrepresentedTokens: true,
bsc: {
tvl: bscTvl,
staking: bscStaking,
tvl,
staking: staking(retroStakingsBsc, stakingTokensBsc),
pool2: pool2s(pool2StratsBsc, excludePool2Bsc),
},
polygon: {
tvl: polygonTvl,
staking: polygonStaking,
tvl,
staking: staking(retroStakingsPolygon, pQBERT),
pool2: pool2s(pool2StratsPolygon, excludePool2Polygon),
},
methodology:

View File

@@ -1,6 +1,5 @@
const { stakings } = require("../helper/staking");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const sashimidaoStakings = [
"0x7dCb04c9e60B52E23f0F46FE2E5D00B234402dAA",
@@ -8,41 +7,15 @@ const sashimidaoStakings = [
];
const SASHI = "0xb88e3edb378ed7ddef10b86962d97fa0b8defb6d"; // SASHI is not on coingecko yet!!!
const treasuryAddress = "0xD4a23b563019cd148Dc148e69a84535cf8368282";
const MIM = "0x130966628846bfd36ff31a822705796e8cb8c18d";
const SASHI_MIM_JLP = "0x71f8DF8A958D5a09694312a79355655F44310084";
/*** Bonds TVL Portion (Treasury) ***
* Treasury TVL consists of MIM and Trisolaris JLP balances
***/
async function avaxTvl(timestamp, chainBlocks) {
const balances = {};
let transformAddress = addr => 'avax:'+addr
await sumTokensAndLPsSharedOwners(
balances,
[
[MIM, false],
[SASHI_MIM_JLP, true],
],
[treasuryAddress],
chainBlocks["avax"],
"avax",
transformAddress
);
return balances;
}
module.exports = {
hallmarks: [
[1642464000, "Rug Pull"]
],
deadFrom: 1642464000,
misrepresentedTokens: true,
avax: {
staking: stakings(sashimidaoStakings, SASHI),
tvl: avaxTvl,
tvl: () => ({}),
},
methodology: "Counts MIM and TLP (SASHI-MIM) on the treasury",
};

View File

@@ -1,58 +1,21 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const { staking } = require("../helper/staking");
const { pool2s } = require("../helper/pool2");
const CHAINS = ["boba"];
const Boba_SHIBUI = "0xf08ad7c3f6b1c6843ba027ad54ed8ddb6d71169b";
const Boba_BOBA = ADDRESSES.boba.BOBA;
const Boba_USDT = ADDRESSES.boba.USDT;
const Boba_SHIBUI_WETH = "0xcE9F38532B3d1e00a88e1f3347601dBC632E7a82";
const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa";
const Boba_4Koyo = "0xDAb3Fc342A242AdD09504bea790f9b026Aa1e709";
const CHAIN_ORGANISED_DATA = {
boba: () => {
return [
{
treasuryTokens: [
[Boba_BOBA, false],
[Boba_USDT, false],
[Boba_SHIBUI_WETH, true],
[Boba_SHIBUI_USDT, true],
],
treasuryKoyoTokens: [Boba_4Koyo],
treasuryAddresses: [
"0x9596E01Ad72d2B0fF13fe473cfcc48D3e4BB0f70", // Hot treasury
],
gaugeTokens: [Boba_SHIBUI_USDT],
gaugeAddresses: [
"0x6b8f4Fa6E44e923f5A995A87e4d79B3Bb9f8aaa3", // SHIBUI-USDT<>WAGMIv3
],
},
true,
];
},
};
module.exports = {
start: 394825,
boba: {
tvl: () => ({}),
pool2: (() => {
const chain = CHAINS[0];
const [data] = CHAIN_ORGANISED_DATA[chain]();
return pool2s(data.gaugeAddresses, data.gaugeTokens, chain);
})(),
staking: staking(
"0xabAF0A59Bd6E937F852aC38264fda35EC239De82",
Boba_SHIBUI,
CHAINS[0]
),
pool2: pool2s([
"0x6b8f4Fa6E44e923f5A995A87e4d79B3Bb9f8aaa3", // SHIBUI-USDT<>WAGMIv3
], [Boba_SHIBUI_USDT]),
staking: staking("0xabAF0A59Bd6E937F852aC38264fda35EC239De82", Boba_SHIBUI),
},
}

View File

@@ -1,6 +1,6 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { stakings } = require("../helper/staking");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const { sumTokens2 } = require("../helper/unwrapLPs");
const boardroomContracts = "0x7F28D5a90b3A0BE2e34accDEF255eC13cf695b1e";
const SAS = "0x4c38d0e726b6c86f64c1b281348e725973542043";
@@ -52,29 +52,8 @@ const tokenAddresses = [
"0xE95A203B1a91a908F9B9CE46459d101078c2c3cb",
];
async function pool2() {
const balances = {};
for (let i = 0; i < lpStakingContracts.length; i++) {
await sumTokensAndLPsSharedOwners(
balances,
[[lpAddresses[i], true]],
[lpStakingContracts[i]]
);
}
for (let i = 0; i < poolContracts.length; i++) {
await sumTokensAndLPsSharedOwners(
balances,
[
[tokenAddresses[i], false],
[SAC, false],
],
[poolContracts[i]]
);
}
return balances;
async function pool2(api) {
return sumTokens2({ api, owners: poolContracts.concat(lpStakingContracts), tokens: [...tokenAddresses, SAC, ...lpAddresses], resolveLP: true })
}
module.exports = {
@@ -82,7 +61,7 @@ module.exports = {
ethereum: {
staking: stakings(stakingContracts, SAS),
pool2: pool2,
tvl: (tvl) => ({}),
tvl: () => ({}),
},
methodology: "Counts liquidty on the Staking and Pool2 Only",
};

View File

@@ -1,4 +0,0 @@
{
"getAssetLength": "uint256:getAssetLength",
"assetBalance": "function assetBalance(uint16) view returns (uint256)"
}

View File

@@ -1,69 +1,19 @@
const ADDRESSES = require('../helper/coreAssets.json')
const sdk = require("@defillama/sdk");
const abi = require("./abi.json");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const { staking } = require('../helper/staking');
// Contracts
const assetManager = "0xA2b6eC586F989cf1C055B7C9D16fDdA80FDD679b";
const sellerContract = "0xc73C6C3e80C28dBc55F65bBdC895E828bb98C72d";
const stakingContract = "0x21edB57A75ee69BCe0Fe3D0EfC5674bcF1D5BF93";
// Tokens
const USDC = ADDRESSES.polygon.USDC;
const TIDAL = "0xB41EC2c036f8a42DA384DDE6ADA79884F8b84b26";
/*** Staking of native token (TIDAL) TVL portion ***/
const staking = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
const transformAddress = i => `polygon:${i}`;
await sumTokensAndLPsSharedOwners(
balances,
[[TIDAL, false]],
[stakingContract],
chainBlocks["polygon"],
"polygon",
transformAddress
);
return balances;
};
/*** Polygon TVL Portions ***/
const polygonTvl = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
const lengthOfAssets = (
await sdk.api.abi.call({
abi: abi.getAssetLength,
target: assetManager,
chain: "polygon",
block: chainBlocks["polygon"],
})
).output;
for (let i = 0; i < lengthOfAssets; i++) {
const BalanceOfAsset = (
await sdk.api.abi.call({
abi: abi.assetBalance,
target: sellerContract,
params: i,
chain: "polygon",
block: chainBlocks["polygon"],
})
).output;
sdk.util.sumSingleBalance(balances, `polygon:${USDC}`, BalanceOfAsset);
}
return balances;
const polygonTvl = async (api) => {
return api.sumTokens({ owner: sellerContract, tokens: [ADDRESSES.polygon.USDC] })
};
module.exports = {
misrepresentedTokens: true,
polygon: {
staking,
staking: staking(stakingContract, TIDAL,),
tvl: polygonTvl,
},
methodology:

View File

@@ -1,102 +1,22 @@
const sdk = require("@defillama/sdk");
const abi = require("./abi.json");
const { staking } = require('../helper/staking')
const { pool2 } = require('../helper/pool2')
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const TimeWarpPool_LP_UNISWAP_ETH =
"0x55c825983783c984890bA89F7d7C9575814D83F2";
const TimeWarpPool_LP_PANCAKE_BSC =
"0xC48467BA55cF0B777978F19701329c87949EFD3C";
const TimeWarpPool_LP_UNISWAP_ETH = "0x55c825983783c984890bA89F7d7C9575814D83F2";
const TimeWarpPool_LP_PANCAKE_BSC = "0xC48467BA55cF0B777978F19701329c87949EFD3C";
const TimeWarpPool_TIME_ETH = "0xa106dd3Bc6C42B3f28616FfAB615c7d494Eb629D";
const TimeWarpPool_TIME_BSC = "0x59f2757Ae3a1BAa21e4f397a28985Ceb431c676b";
const calcTvl = async (balances, chain, block, TimeWarpPool) => {
const erc20TokenOrLp = (
await sdk.api.abi.call({
abi: abi.erc20Deposit,
target: TimeWarpPool,
chain,
block,
})
).output;
const transformAddress = i => `bsc:${i}`;
await sumTokensAndLPsSharedOwners(
balances,
TimeWarpPool == TimeWarpPool_TIME_ETH ||
TimeWarpPool == TimeWarpPool_TIME_BSC
? [[erc20TokenOrLp, false]]
: [[erc20TokenOrLp, true]],
[TimeWarpPool],
block,
chain,
chain == "bsc" ? transformAddress : (addr) => addr
);
};
/*** Staking of native token (TIME) on Ethereum and Binance TVL portion ***/
const stakingETH = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
// --- Staking of native token TIME on Ethereum ---
await calcTvl(
balances,
"ethereum",
chainBlocks["ethereum"],
TimeWarpPool_TIME_ETH
);
return balances;
};
const stakingBSC = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
// --- Staking of native token TIME on Binance ---
await calcTvl(balances, "bsc", chainBlocks["bsc"], TimeWarpPool_TIME_BSC);
return balances;
};
/*** Ethereum TVL Portion ***/
const ethTvl = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
await calcTvl(
balances,
"ethereum",
chainBlocks["ethereum"],
TimeWarpPool_LP_UNISWAP_ETH
);
return balances;
};
/*** Binance TVL Portion ***/
const bscTvl = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
await calcTvl(
balances,
"bsc",
chainBlocks["bsc"],
TimeWarpPool_LP_PANCAKE_BSC
);
return balances;
};
module.exports = {
misrepresentedTokens: true,
ethereum: {
tvl: ethTvl,
staking: stakingETH
tvl: () => ({}),
pool2: pool2(TimeWarpPool_LP_UNISWAP_ETH, '0x1d474d4B4A62b0Ad0C819841eB2C74d1c5050524'),
staking: staking(TimeWarpPool_TIME_ETH, '0x485d17A6f1B8780392d53D64751824253011A260'),
},
bsc: {
tvl: bscTvl,
staking: stakingBSC
tvl: () => ({}),
pool2: pool2(TimeWarpPool_LP_PANCAKE_BSC, '0xa5ebD19961CF4B8aF06a9d9D2B91d73B48744867'),
staking: staking(TimeWarpPool_TIME_BSC, '0x3b198e26E473b8faB2085b37978e36c9DE5D7f68'),
},
methodology: `We count as TVL the staking Lps on Ethereum (TIME-ETH Sushiswap LP)
and Binance (TIME-BNB Pancake LP) networks threw their TimeWarpPool contracts; and

View File

@@ -1,7 +1,4 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const gg = "0xF2F7CE610a091B94d41D69f4fF1129434a82E2f0"
// https://app.galaxygoggle.money/#/bonds
const treasury = "0xD5F922e23693e552793fE0431F9a95ba67A60A23"
@@ -10,42 +7,22 @@ const mim = "0x130966628846BFd36ff31a822705796e8cb8C18D"
const wavax = ADDRESSES.avax.WAVAX
const joe = ADDRESSES.avax.JOE
async function tvl(timestamp, block, chainBlocks) {
const balances = {};
await sumTokensAndLPsSharedOwners(
balances,
[
[mim, false],
[wavax, false],
[joe, false],
["0xe9E8d6b6ce6D94Fc9d724711e80784Ec096949Fc", true], // mim-gg
],
[treasury, dao],
chainBlocks.avax,
'avax',
addr=>`avax:${addr}`
);
return balances;
async function tvl(api) {
return api.sumTokens({ owners: [treasury, dao], tokens: [mim, wavax, joe, "0xe9E8d6b6ce6D94Fc9d724711e80784Ec096949Fc",] });
}
const bscTreasury = "0xF76C9753507B3Df0867EB02D86d07C6fFcEecaf1";
const treasuryTokensBSC = [
[ADDRESSES.bsc.BUSD, false], // BUSD
["0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", true] // GG-BUSD
ADDRESSES.bsc.BUSD, // BUSD
"0x13Cf29b3F58f777dDeD38278F7d938401f6b260c", // GG-BUSD
]
async function bscTvl(timestamp, block, chainBlocks) {
let balances = {};
await sumTokensAndLPsSharedOwners(balances, treasuryTokensBSC, [bscTreasury], chainBlocks.bsc, "bsc", addr=>`bsc:${addr}`);
balances[`avax:${gg}`] = balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"] || 0;
delete balances["bsc:0xcaf23964ca8db16d816eb314a56789f58fe0e10e"];
return balances;
async function bscTvl(api) {
return api.sumTokens({ owners: [bscTreasury], tokens: treasuryTokensBSC });
}
module.exports = {
avax:{
avax: {
tvl,
},
bsc: {

View File

@@ -1,6 +1,3 @@
const { getChainTransform } = require("../helper/portedTokens");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const treasuryAddress = "0xB3FC6B9be3AD6b2917d304d4F5645a311bCFd0A8";
const erc20Tokens = [
//MDX
@@ -10,11 +7,8 @@ const erc20Tokens = [
];
/*** Treasury ***/
const Treasury = async (timestamp, ethBlock, chainBlocks) => {
const balances = {};
let transformAddress = await getChainTransform('heco')
await sumTokensAndLPsSharedOwners(balances, erc20Tokens.map(t => [t, false]), [treasuryAddress], chainBlocks["heco"], "heco", transformAddress);
return balances;
const Treasury = async (api) => {
return api.sumTokens({ owner: treasuryAddress, tokens: erc20Tokens });
};
module.exports = {

View File

@@ -1,61 +1,23 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const CHAINS = ["boba"];
const Boba_SHIBUI = "0xf08ad7c3f6b1c6843ba027ad54ed8ddb6d71169b";
const Boba_BOBA = ADDRESSES.boba.BOBA;
const Boba_USDT = ADDRESSES.boba.USDT;
const Boba_SHIBUI_WETH = "0xcE9F38532B3d1e00a88e1f3347601dBC632E7a82";
const Boba_SHIBUI_USDT = "0x3f714fe1380ee2204ca499d1d8a171cbdfc39eaa";
const Boba_4Koyo = "0xDAb3Fc342A242AdD09504bea790f9b026Aa1e709";
const CHAIN_ORGANISED_DATA = {
boba: () => {
return [
{
treasuryTokens: [
[Boba_BOBA, false],
[Boba_USDT, false],
[Boba_SHIBUI_WETH, true],
[Boba_SHIBUI_USDT, true],
],
treasuryKoyoTokens: [Boba_4Koyo],
treasuryAddresses: [
"0x9596E01Ad72d2B0fF13fe473cfcc48D3e4BB0f70", // Hot treasury
],
gaugeTokens: [Boba_SHIBUI_USDT],
gaugeAddresses: [
"0x6b8f4Fa6E44e923f5A995A87e4d79B3Bb9f8aaa3", // SHIBUI-USDT<>WAGMIv3
],
},
true,
];
},
};
module.exports = {
start: 394825,
boba: {
tvl: async (timestamp, _ethBlock, chainBlocks) => {
const chain = CHAINS[0];
const [data, koyoAssets] = CHAIN_ORGANISED_DATA[chain]();
const balances = {};
const block = chainBlocks[chain];
await sumTokensAndLPsSharedOwners(
balances,
data.treasuryTokens,
data.treasuryAddresses,
block,
chain
);
return balances;
tvl: async (api) => {
return api.sumTokens({ owners: [
"0x9596E01Ad72d2B0fF13fe473cfcc48D3e4BB0f70", // Hot treasury
], tokens: [
Boba_BOBA,
Boba_USDT,
Boba_SHIBUI_WETH,
Boba_SHIBUI_USDT,
] });
},
},
}

View File

@@ -1,60 +1,29 @@
const ADDRESSES = require('../helper/coreAssets.json')
const { stakingUnknownPricedLP } = require("../helper/staking");
const { sumTokensAndLPsSharedOwners } = require("../helper/unwrapLPs");
const sdk = require("@defillama/sdk");
const { BigNumber } = require("bignumber.js");
const { sumTokens2 } = require('../helper/unwrapLPs');
const ftmToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6";
const ftmStaking = "0xc6a54adddf7463f73a4c5a8e3e480bc798cf8a09";
const ftmTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792";
const ftmTokens = [
[ADDRESSES.fantom.DAI, false],
["0x78b51a1fd7524186982c2cb8982df312b1e896a8", true]
ADDRESSES.fantom.DAI,
"0x78b51a1fd7524186982c2cb8982df312b1e896a8"
];
const avaxToken = "0x4c9993c7107495020c2ce9a13d11839f48ecd2e6";
const avaxStaking = "0xfae672012b90cfb6bf245ac072a3aca374604b17";
const avaxTreasury = "0x05ab17e4dfa87ef4ac487ed20cfcc2ae75c2a792";
const avaxTokens = [
[ADDRESSES.avax.DAI, false],
["0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8", true]
ADDRESSES.avax.DAI,
"0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8"
]
async function tokenPrice(block, chain, lp, unlisted, listed) {
const tokensInLP = (await sdk.api.abi.multiCall({
calls: [
{
target: unlisted,
params: lp
},
{
target: listed,
params: lp
}
],
abi: "erc20:balanceOf",
block,
chain
})).output;
return Number(tokensInLP[1].output) / Number(tokensInLP[0].output);
async function ftmTvl(api) {
return sumTokens2({ api, owner: ftmTreasury, tokens: ftmTokens, resolveLP: true })
}
async function ftmTvl (timestamp, block, chainBlocks) {
let balances = {};
await sumTokensAndLPsSharedOwners(balances, ftmTokens, [ftmTreasury], chainBlocks.fantom, "fantom", addr=>`fantom:${addr}`);
const ratio = await tokenPrice(chainBlocks.fantom, "fantom", "0x78b51a1fd7524186982c2cb8982df312b1e896a8", ftmToken, ADDRESSES.fantom.DAI);
sdk.util.sumSingleBalance(balances, "fantom:" + ADDRESSES.fantom.DAI, BigNumber(balances["fantom:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0));
delete balances["fantom:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"];
return balances;
}
async function avaxTvl (timestamp, block, chainBlocks) {
let balances = {};
await sumTokensAndLPsSharedOwners(balances, avaxTokens, [avaxTreasury], chainBlocks.avax, "avax", addr=>`avax:${addr}`);
const ratio = await tokenPrice(chainBlocks.avax,"avax", "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8", avaxToken, ADDRESSES.avax.DAI);
sdk.util.sumSingleBalance(balances, "avax:" + ADDRESSES.avax.DAI, BigNumber(balances["avax:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"]).times(ratio).toFixed(0));
delete balances["avax:0x4c9993c7107495020c2ce9a13d11839f48ecd2e6"];
return balances;
async function avaxTvl(api) {
return sumTokens2({ api, owner: avaxTreasury, tokens: avaxTokens, resolveLP: true })
}
module.exports = {
@@ -63,7 +32,7 @@ module.exports = {
tvl: ftmTvl,
staking: stakingUnknownPricedLP(ftmStaking, ftmToken, "fantom", "0x78b51a1fd7524186982c2cb8982df312b1e896a8")
},
avax:{
avax: {
tvl: avaxTvl,
staking: stakingUnknownPricedLP(avaxStaking, avaxToken, "avax", "0x26e7c9b2890440866d7d3f8f84b1ccaff443b9d8")
}