Skip to content

Commit f3e74f8

Browse files
authored
Update: Backpack (#16972)
1 parent 4217332 commit f3e74f8

File tree

2 files changed

+62
-8
lines changed

2 files changed

+62
-8
lines changed

projects/backpack/index.js

Lines changed: 60 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1+
const sdk = require('@defillama/sdk')
12
const { sumTokensExport } = require('../helper/sumTokens')
23
const ADDRESSES = require('../helper/coreAssets.json')
34
const { defaultTokens } = require('../helper/cex')
45
const { getConfig } = require('../helper/cache.js')
6+
const { getStakedSol } = require('../helper/solana')
57

68
const API_URL = 'https://api.backpack.exchange/api/v1/wallets'
79

810
const _getConfig = async () => {
9-
const data = await getConfig('backpack/wallets', API_URL)
10-
const config = {}
11+
const data = await getConfig('backpack/wallets', API_URL)
12+
const config = {}
1113
data.forEach(({ address, blockchain }) => {
1214
let chain = blockchain.toLowerCase()
1315
if (chain === 'avalanche') chain = 'avax'
@@ -17,24 +19,75 @@ const _getConfig = async () => {
1719
return config
1820
}
1921

20-
const exportObj = { timetravel: false }
21-
const chains = ['ethereum', 'solana', 'bitcoin', 'litecoin', 'arbitrum', 'optimism', 'polygon', 'base', 'bsc', 'avax', 'tron'];
22+
const exportObj = { timetravel: false }
23+
const CHAINS = [
24+
'solana',
25+
'ethereum',
26+
'bitcoin',
27+
'doge',
28+
'litecoin',
29+
'arbitrum',
30+
'base',
31+
'bsc',
32+
'optimism',
33+
'avax',
34+
'polygon',
35+
'tron',
36+
'aptos',
37+
'ripple',
38+
'plasma',
39+
'hyperliquid'
40+
]
2241

23-
chains.forEach((chain) => {
42+
const CHAIN_BLACKLISTS = {
43+
ethereum: ['0x57ab1e02fee23774580c119740129eac7081e9d3'],
44+
}
45+
46+
CHAINS.forEach((chain) => {
2447
exportObj[chain] = {
2548
tvl: async () => {
2649
const config = await _getConfig()
2750
const entry = config[chain]
2851
if (!entry) return {}
2952

30-
let { tokensAndOwners, owners, tokens, blacklistedTokens, fungibleAssets } = entry
31-
if (!tokensAndOwners && !tokens && chain !== 'solana') tokens = defaultTokens[chain] || [ADDRESSES.null]
53+
const tokenLists = [...new Set([
54+
...(Object.values(ADDRESSES[chain] || {})),
55+
...(defaultTokens[chain] || []),
56+
])]
57+
58+
let { tokensAndOwners, owners, tokens, blacklistedTokens = [], fungibleAssets } = entry
59+
60+
if (!tokensAndOwners && !tokens) tokens = tokenLists
61+
62+
if (CHAIN_BLACKLISTS[chain]) {
63+
blacklistedTokens = [
64+
...new Set([...(blacklistedTokens || []), ...CHAIN_BLACKLISTS[chain]]),
65+
]
66+
}
3267

3368
const options = { ...entry, owners, tokens, chain, blacklistedTokens }
3469
if (chain === 'solana' || chain === 'eclipse') options.solOwners = owners
3570
if (chain === 'ton') options.onlyWhitelistedTokens = true
3671
if (chain === 'aptos' && Array.isArray(fungibleAssets)) options.fungibleAssets = fungibleAssets
3772

73+
if (chain === 'solana') {
74+
const balances = await sumTokensExport(options)()
75+
76+
if (Array.isArray(owners) && owners.length) {
77+
const uniqOwners = [...new Set(owners)]
78+
const BATCH = 50
79+
let totalStaked = 0
80+
for (let i = 0; i < uniqOwners.length; i += BATCH) {
81+
const chunk = uniqOwners.slice(i, i + BATCH)
82+
const parts = await Promise.all(chunk.map(addr => getStakedSol(addr)))
83+
totalStaked += parts.reduce((a, b) => a + b, 0)
84+
}
85+
sdk.util.sumSingleBalance(balances, `solana:${ADDRESSES.solana.SOL}`, totalStaked)
86+
}
87+
88+
return balances
89+
}
90+
3891
return sumTokensExport(options)()
3992
}
4093
}

projects/helper/coreAssets.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,8 @@
626626
"JupSOL": "jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v",
627627
"BNSOL": "BNso1VUJnh4zcfpZa6986Ea66P6TCp59hvtNJ8b1X85",
628628
"bbSOL": "Bybit2vBJGhPF52GBdNaQfUJ6ZpThSgHBobjWZpLPb4B",
629-
"JitoSOL": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"
629+
"JitoSOL": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
630+
"PYUSD": "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"
630631
},
631632
"soon": {
632633
"USDT": "742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",

0 commit comments

Comments
 (0)