Skip to content

Commit 2147bb8

Browse files
authored
Update Backpack (#15566)
1 parent c193df2 commit 2147bb8

File tree

1 file changed

+42
-39
lines changed

1 file changed

+42
-39
lines changed

projects/backpack/index.js

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,44 @@
1-
const { cexExports } = require("../helper/cex");
1+
const axios = require('axios')
22
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')
36

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

Comments
 (0)