1
- const { cexExports } = require ( "../helper/cex" ) ;
1
+ const axios = require ( 'axios' )
2
2
const bitcoinAddressBook = require ( "../helper/bitcoin-book/index.js" ) ;
3
+ const { sumTokensExport } = require ( '../helper/sumTokens' )
4
+ const ADDRESSES = require ( '../helper/coreAssets.json' )
5
+ const { defaultTokens } = require ( '../helper/cex' )
3
6
4
- // https://dune.com/21co/ backpack- exchange
5
- const config = {
6
- solana : {
7
- owners : [
8
- "43DbAvKxhXh1oSxkJSqGosNw3HpBnmsWiak6tB5wpecN" ,
9
- "BbHG9GvPActFGogv3iNrpDAj4qpXr8t3jF16uGxXcKci" ,
10
- "9NJmj9VaTU9D7ytdzy5RHMrfAgw2pYwqnUhuMqatcsr" ,
11
- "HwDX5eJkzPAJ7y7ENrH23HaDGUgB4nXPxG8UsB4cEMGE" ,
12
- "HgTWrWU195u6s4v3JiEjJFCb6J6wxtQh8DAYV63tCx6Q" ,
13
- "DFFN6XgrTYDR2uFvaXJFRcFrMrtt6ZbPxpDs3mVbpxuR" ,
14
- "J16ovD5x6kZLYDYAa6CqfrwacHdM7fcKD9iKG5EoNeGR" ,
15
- "4VULyn2PoqzF6EyQ9acJqeAwg7pwmQPppM56NRJyQ1Fi" ,
16
- "5stwKMsakQkH3uzN5eQx9LKzq6N8q3DBjXzkHyvudFde" ,
17
- "J4RR6RDvCBVcwrLgCnfDkXmv9cxYtxTz5t4NPvCRMSQR" ,
18
- "FCQSFKkw2JPhpG4M18nvGfiNAK6N3gFBmp8pkn4CxYGs" ,
19
- "6wspq3nz3qPQ9X6rbLM5bEDHK525yPSNqyqeABXcSMHQ" ,
20
- "6m68XVvBR4oLCgM7YFgH1VqzzV5vk9UimvmVUvyKw6c2" ,
21
- ] ,
22
- } ,
23
- ethereum : {
24
- owners : [
25
- "0x2228e5704B637131A3798A186CAF18366c146f74" ,
26
- "0x6a3eAb9Ee70C82A2B13708041f2C5892bEa6857B" ,
27
- "0xEC8F9ef3031b0CdF05E42e0Ece8D6397F92595e8" ,
28
- "0x73ac628b14fb35d70266e96a886b8c5fe7ce22cf" ,
29
- ] ,
30
- } ,
31
- bitcoin : {
32
- owners : bitcoinAddressBook . backpack ,
33
- } ,
34
- sui : {
35
- owners : [
36
- "0x96073f85f1d558329999e03000dba6bcf30d8b0aff26a88a9227402e87c200aa" ,
37
- ] ,
38
- } ,
39
- } ;
40
-
41
- module . exports = cexExports ( config ) ;
7
+ const API_URL = ' https://api. backpack. exchange/api/v1/wallets'
8
+
9
+ const getConfig = async ( ) => {
10
+ const { data } = await axios . get ( API_URL )
11
+ const config = { }
12
+ data . forEach ( ( { address , blockchain } ) => {
13
+ let chain = blockchain . toLowerCase ( )
14
+ if ( chain === 'avalanche' ) chain = 'avax'
15
+ if ( ! config [ chain ] ) config [ chain ] = { owners : [ ] }
16
+ config [ chain ] . owners . push ( address )
17
+ } )
18
+ return config
19
+ }
20
+
21
+ const exportObj = { timetravel : false }
22
+ const chains = [ 'ethereum' , 'solana' , 'bitcoin' , 'litecoin' , 'arbitrum' , 'optimism' , 'polygon' , 'base' , 'bsc' , 'avax' , 'tron' ] ;
23
+
24
+ chains . forEach ( ( chain ) => {
25
+ exportObj [ chain ] = {
26
+ tvl : async ( ) => {
27
+ const config = await getConfig ( )
28
+ const entry = config [ chain ]
29
+ if ( ! entry ) return { }
30
+
31
+ let { tokensAndOwners , owners , tokens , blacklistedTokens , fungibleAssets } = entry
32
+ if ( ! tokensAndOwners && ! tokens && chain !== 'solana' ) tokens = defaultTokens [ chain ] || [ ADDRESSES . null ]
33
+
34
+ const options = { ... entry , owners , tokens , chain , blacklistedTokens }
35
+ if ( chain === 'solana' || chain === 'eclipse' ) options . solOwners = owners
36
+ if ( chain === 'ton' ) options . onlyWhitelistedTokens = true
37
+ if ( chain === 'aptos' && Array . isArray ( fungibleAssets ) ) options . fungibleAssets = fungibleAssets
38
+
39
+ return sumTokensExport ( options ) ( )
40
+ }
41
+ }
42
+ } )
43
+
44
+ module . exports = exportObj
0 commit comments