Skip to content

Commit

Permalink
Merge pull request #217 from dappradar/base_integartion
Browse files Browse the repository at this point in the history
Base integartion
  • Loading branch information
Sonmezturk authored Oct 12, 2023
2 parents 0745a49 + 6b47f6a commit d5fafe2
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,6 @@ nodeUrls['CRONOS_NODE_URL'] = process.env['CRONOS_NODE_URL'];
nodeUrls['ARBITRUM_NODE_URL'] = process.env['ARBITRUM_NODE_URL'];
nodeUrls['ZKSYNC-ERA_NODE_URL'] = process.env['ZKSYNC-ERA_NODE_URL'];
nodeUrls['ELYSIUM_NODE_URL'] = process.env['ELYSIUM_NODE_URL'];
nodeUrls['BASE_NODE_URL'] = process.env['BASE_NODE_URL'];

export { config, nodeUrls };
33 changes: 22 additions & 11 deletions src/constants/contracts.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"polygon": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270",
"cronos": "0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23",
"arbitrum": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1",
"zksync-era": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91"
"zksync-era": "0x5aea5775959fbc2557cc8789bc1bf90a239d9a91",
"base": "0x4200000000000000000000000000000000000006"
},
"BULK_BALANCE_ADDRESSES": {
"ethereum": "0xb173393e08496209ad1cd9d57c769de76bdcea5a",
Expand All @@ -27,7 +28,8 @@
"polygon": "0xb81bB004BD9ccc0EEd7a1A60D3D8eD8DC52D11d8",
"cronos": "0x63aCCa16a1fcfD406d3EA8Ec5137884861863828",
"arbitrum": "0x63acca16a1fcfd406d3ea8ec5137884861863828",
"zksync-era": "0x19b86d343394427ccc6c82c921b68305feaee833"
"zksync-era": "0x19b86d343394427ccc6c82c921b68305feaee833",
"base": "0x63acca16a1fcfd406d3ea8ec5137884861863828"
},
"BULK_BALANCE_DEPOLYED": {
"ethereum": 11439603,
Expand All @@ -42,7 +44,8 @@
"polygon": 16836227,
"cronos": 7617073,
"arbitrum": 86897490,
"zksync-era": 6397812
"zksync-era": 6397812,
"base": 4724504
},
"BULK_RESERVES_ADDRESSES": {
"ethereum": "0x4261b012f3d0d752ee9d738a4664df7117a148ab",
Expand All @@ -57,7 +60,8 @@
"polygon": "0x92E144b73abb3b1aA4BEA18d4dbc142F95a3E56a",
"cronos": "0xBb90C1A84F51d57c2046741B15156810D20f3592",
"arbitrum": "0xbb90c1a84f51d57c2046741b15156810d20f3592",
"zksync-era": "0xe7b54a13e456532675b4edc360a1c2818ef9f707"
"zksync-era": "0xe7b54a13e456532675b4edc360a1c2818ef9f707",
"base": "0xbb90c1a84f51d57c2046741b15156810d20f3592"
},
"BULK_RESERVES_DEPOLYED": {
"ethereum": 11438212,
Expand All @@ -72,7 +76,8 @@
"polygon": 15823447,
"cronos": 7617098,
"arbitrum": 86898048,
"zksync-era": 6398730
"zksync-era": 6398730,
"base": 4729900
},
"MULTIBALANCES_ADDRESSES": {
"ethereum": "0x09b6fd79f8c6bdaba4d94731f0fc90edd15742af",
Expand All @@ -87,7 +92,8 @@
"polygon": "0x3e9E7c58dc5f5b25DA878790bed0E17Ea4290278",
"cronos": "0x5a3CF2C199bBB28cD0A2f380d1f96B8d73D74B78",
"arbitrum": "0x47012c5a5a20893f342d279ddc6fd0847f196898",
"zksync-era": "0x7d1f4f2bc62bd7e7d1208ae4d8f3ad1b35467244"
"zksync-era": "0x7d1f4f2bc62bd7e7d1208ae4d8f3ad1b35467244",
"base": "0x7d9965aee6b51c944b20beb8954fe5018781fb19"
},
"MULTIBALANCES_DEPOLYED": {
"ethereum": 11606340,
Expand All @@ -102,7 +108,8 @@
"polygon": 16354960,
"cronos": 7617273,
"arbitrum": 86899235,
"zksync-era": 6399985
"zksync-era": 6399985,
"base": 4729971
},
"BULK_METADATA_ADDRESSES": {
"ethereum": "0x570B73444cC1077398f83777f34Bd672a50235cD",
Expand All @@ -117,7 +124,8 @@
"polygon": "0x06A9b1F8f87968137D57D53eA40fF1Bfa7Be6dcA",
"cronos": "0x7d9965AeE6b51C944b20beb8954Fe5018781fb19",
"arbitrum": "0x7d9965aee6b51c944b20beb8954fe5018781fb19",
"zksync-era": "0x9ccc6685b99cc682e432441f704775550d8c5664"
"zksync-era": "0x9ccc6685b99cc682e432441f704775550d8c5664",
"base": "0x47012c5a5a20893f342d279ddc6fd0847f196898"
},
"BULK_METADATA_DEPOLYED": {
"ethereum": 12825801,
Expand All @@ -132,7 +140,8 @@
"polygon": 16851733,
"cronos": 7617255,
"arbitrum": 86899489,
"zksync-era": 6399344
"zksync-era": 6399344,
"base": 4729939
},
"MULTICALL_ADDRESSES": {
"ethereum": "0x092C637b120Ad6C5DF6CFc2b2A9b284ed2E5b11F",
Expand All @@ -147,7 +156,8 @@
"polygon": "0x5b0a546efac0ce2914f3ce163b6379bceef9b50a",
"cronos": "0xD3C43fb98512E5965034087b891F4460223F8940",
"arbitrum": "0x5a3cf2c199bbb28cd0a2f380d1f96b8d73d74b78",
"zksync-era": "0x9ce596f561ca117591bfb0f6f9a20f721290976b"
"zksync-era": "0x9ce596f561ca117591bfb0f6f9a20f721290976b",
"base": "0x5a3cf2c199bbb28cd0a2f380d1f96b8d73d74b78"
},
"MULTICALL_DEPOLYED": {
"ethereum": 12949381,
Expand All @@ -162,6 +172,7 @@
"polygon": 17554810,
"cronos": 7617284,
"arbitrum": 86899646,
"zksync-era": 6400154
"zksync-era": 6400154,
"base": 4730173
}
}
21 changes: 21 additions & 0 deletions src/factory/providers/base/friendtech/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl';
import formatter from '../../../../util/formatter';
import util from '../../../../util/blockchainUtil';

const POST_TECH = '0xcf205808ed36593aa40a44f10c7f7c2f67d4a4d4';
const START_BLOCK = 2430440;

async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
const { block, web3 } = params;
if (block < START_BLOCK) {
return { balances: {} };
}

const balances = {
[util.ZERO_ADDRESS]: await web3.eth.getBalance(POST_TECH, block),
};

formatter.convertBalancesToFixed(balances);
return { balances };
}
export { tvl };
133 changes: 133 additions & 0 deletions src/factory/providers/cronos/vvsfinance/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
import formatter from '../../../../util/formatter';
import uniswapV2 from '../../../../util/calculators/uniswapV2';
import basicUtil from '../../../../util/basicUtil';
import util from '../../../../util/blockchainUtil';
import { log } from '../../../../util/logger/logger';
import PAIR_ABI from '../../../../constants/abi/uni.json';
import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl';

const START_BLOCK = 2100000;
const FACTORY_ADDRESS = '0x3b44b2a187a7b3824131f8db5a74194d0a42fc15';
const V3_START_BLOCK = 10292950;
const V3_FACTORY_ADDRESS = '0x40aB11c64E9fF5368F09343Ac860dAfA34e14C35';

async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
const { block, chain, provider, web3 } = params;
Expand All @@ -19,6 +25,133 @@ async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
web3,
);

let v3Pairs = { block: V3_START_BLOCK, pairs: [], token01: [] };
try {
v3Pairs = await basicUtil.readFromCache(
'cache/v3Pairs.json',
chain,
provider,
);
} catch {}

let logs = [];
console.log('[v3] start getting tvl');
console.log('[v3] get logs1');

let offset = 10000;
for (let i = Math.max(v3Pairs.block, V3_START_BLOCK); ; ) {
console.log(`Trying from ${i} with offset ${offset}`);
let eventLog = [];
try {
eventLog = (
await util.getLogs(
i,
Math.min(block, i + offset),
'0x783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b7118',
V3_FACTORY_ADDRESS,
web3,
)
).output;
console.log(`Trying from ${i} with offset ${offset}`);
} catch (e) {
log.error({
message: e?.message || '',
stack: e?.stack || '',
detail: `Error: tvl of ethereum/uniswapv3`,
endpoint: 'tvl',
});
if (offset > 1000) {
offset -= 2000;
} else if (offset > 100) {
offset -= 200;
} else if (offset > 10) {
offset -= 20;
} else {
break;
}
continue;
}
logs = logs.concat(eventLog);

i += offset;
if (block < i) {
break;
}
}

const pairs = v3Pairs.token01;
let pairAddresses = v3Pairs.pairs;
const start = 128 - 40 + 2;
const end = 128 + 2;

const pairExist = {};
pairAddresses.forEach((address) => (pairExist[address] = true));

pairAddresses = pairAddresses.concat(
logs
.map((log) => {
let pairAddress =
typeof log === 'string' ? log : `0x${log.data.slice(start, end)}`;
pairAddress = pairAddress.toLowerCase();
if (typeof log !== 'string') {
pairs[pairAddress] = {
token0Address: `0x${log.topics[1].slice(26)}`,
token1Address: `0x${log.topics[2].slice(26)}`,
};
}
return pairAddress;
})
.filter((address) => !pairExist[address]),
);

await basicUtil.saveIntoCache(
{
block,
pairs: pairAddresses,
token01: pairs,
},
'cache/v3Pairs.json',
chain,
provider,
);

const tokens0 = await util.executeCallOfMultiTargets(
pairAddresses,
PAIR_ABI,
'token0',
[],
block,
chain,
web3,
);
const tokens1 = await util.executeCallOfMultiTargets(
pairAddresses,
PAIR_ABI,
'token1',
[],
block,
chain,
web3,
);

const token0Balances = await util.getTokenBalancesOfHolders(
pairAddresses,
tokens0.filter(Boolean),
block,
chain,
web3,
);

const token1Balances = await util.getTokenBalancesOfHolders(
pairAddresses,
tokens1.filter(Boolean),
block,
chain,
web3,
);

formatter.sumMultiBalanceOf(balances, token1Balances);
formatter.sumMultiBalanceOf(balances, token0Balances);
formatter.convertBalancesToFixed(balances);

return { balances, poolBalances };
Expand Down
6 changes: 6 additions & 0 deletions src/factory/providers/ethereum/instadapp/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import BigNumber from 'bignumber.js';
import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl';
import fetch from 'node-fetch';
import { log } from '../../../../util/logger/logger';

const API =
'https://api.internal.instadapp.io/defi/api/stats/instadapp/overall';
Expand All @@ -13,6 +14,11 @@ async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {

const balances = {};

const response = await fetch(API);
log.info({
message: await response.text(),
endpoint: 'instadapp.tvl',
});
balances['0xdac17f958d2ee523a2206206994597c13d831ec7'] = await fetch(API)
.then((res) => res.json())
.then((res) => BigNumber(res.stats[0].totalSupplied).shiftedBy(6));
Expand Down
4 changes: 4 additions & 0 deletions src/util/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ const data = {
prefix: 'lava_',
delay: 400,
},
base: {
prefix: 'base_',
delay: 400,
},
},
FILTERS: {
MarketCapInFiat: 'marketCapInFiat',
Expand Down

0 comments on commit d5fafe2

Please sign in to comment.