mirror of
https://github.com/alexgo-io/DefiLlama-Adapters.git
synced 2026-01-12 08:34:23 +08:00
Update: Backpack (#16972)
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
const sdk = require('@defillama/sdk')
|
||||
const { sumTokensExport } = require('../helper/sumTokens')
|
||||
const ADDRESSES = require('../helper/coreAssets.json')
|
||||
const { defaultTokens } = require('../helper/cex')
|
||||
const { getConfig } = require('../helper/cache.js')
|
||||
const { getStakedSol } = require('../helper/solana')
|
||||
|
||||
const API_URL = 'https://api.backpack.exchange/api/v1/wallets'
|
||||
|
||||
const _getConfig = async () => {
|
||||
const data = await getConfig('backpack/wallets', API_URL)
|
||||
const config = {}
|
||||
const data = await getConfig('backpack/wallets', API_URL)
|
||||
const config = {}
|
||||
data.forEach(({ address, blockchain }) => {
|
||||
let chain = blockchain.toLowerCase()
|
||||
if (chain === 'avalanche') chain = 'avax'
|
||||
@@ -17,24 +19,75 @@ const _getConfig = async () => {
|
||||
return config
|
||||
}
|
||||
|
||||
const exportObj = { timetravel: false }
|
||||
const chains = ['ethereum', 'solana', 'bitcoin', 'litecoin', 'arbitrum', 'optimism', 'polygon', 'base', 'bsc', 'avax', 'tron'];
|
||||
const exportObj = { timetravel: false }
|
||||
const CHAINS = [
|
||||
'solana',
|
||||
'ethereum',
|
||||
'bitcoin',
|
||||
'doge',
|
||||
'litecoin',
|
||||
'arbitrum',
|
||||
'base',
|
||||
'bsc',
|
||||
'optimism',
|
||||
'avax',
|
||||
'polygon',
|
||||
'tron',
|
||||
'aptos',
|
||||
'ripple',
|
||||
'plasma',
|
||||
'hyperliquid'
|
||||
]
|
||||
|
||||
chains.forEach((chain) => {
|
||||
const CHAIN_BLACKLISTS = {
|
||||
ethereum: ['0x57ab1e02fee23774580c119740129eac7081e9d3'],
|
||||
}
|
||||
|
||||
CHAINS.forEach((chain) => {
|
||||
exportObj[chain] = {
|
||||
tvl: async () => {
|
||||
const config = await _getConfig()
|
||||
const entry = config[chain]
|
||||
if (!entry) return {}
|
||||
|
||||
let { tokensAndOwners, owners, tokens, blacklistedTokens, fungibleAssets } = entry
|
||||
if (!tokensAndOwners && !tokens && chain !== 'solana') tokens = defaultTokens[chain] || [ADDRESSES.null]
|
||||
const tokenLists = [...new Set([
|
||||
...(Object.values(ADDRESSES[chain] || {})),
|
||||
...(defaultTokens[chain] || []),
|
||||
])]
|
||||
|
||||
let { tokensAndOwners, owners, tokens, blacklistedTokens = [], fungibleAssets } = entry
|
||||
|
||||
if (!tokensAndOwners && !tokens) tokens = tokenLists
|
||||
|
||||
if (CHAIN_BLACKLISTS[chain]) {
|
||||
blacklistedTokens = [
|
||||
...new Set([...(blacklistedTokens || []), ...CHAIN_BLACKLISTS[chain]]),
|
||||
]
|
||||
}
|
||||
|
||||
const options = { ...entry, owners, tokens, chain, blacklistedTokens }
|
||||
if (chain === 'solana' || chain === 'eclipse') options.solOwners = owners
|
||||
if (chain === 'ton') options.onlyWhitelistedTokens = true
|
||||
if (chain === 'aptos' && Array.isArray(fungibleAssets)) options.fungibleAssets = fungibleAssets
|
||||
|
||||
if (chain === 'solana') {
|
||||
const balances = await sumTokensExport(options)()
|
||||
|
||||
if (Array.isArray(owners) && owners.length) {
|
||||
const uniqOwners = [...new Set(owners)]
|
||||
const BATCH = 50
|
||||
let totalStaked = 0
|
||||
for (let i = 0; i < uniqOwners.length; i += BATCH) {
|
||||
const chunk = uniqOwners.slice(i, i + BATCH)
|
||||
const parts = await Promise.all(chunk.map(addr => getStakedSol(addr)))
|
||||
totalStaked += parts.reduce((a, b) => a + b, 0)
|
||||
}
|
||||
sdk.util.sumSingleBalance(balances, `solana:${ADDRESSES.solana.SOL}`, totalStaked)
|
||||
}
|
||||
|
||||
return balances
|
||||
}
|
||||
|
||||
return sumTokensExport(options)()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,7 +626,8 @@
|
||||
"JupSOL": "jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v",
|
||||
"BNSOL": "BNso1VUJnh4zcfpZa6986Ea66P6TCp59hvtNJ8b1X85",
|
||||
"bbSOL": "Bybit2vBJGhPF52GBdNaQfUJ6ZpThSgHBobjWZpLPb4B",
|
||||
"JitoSOL": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"
|
||||
"JitoSOL": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
|
||||
"PYUSD": "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"
|
||||
},
|
||||
"soon": {
|
||||
"USDT": "742wcXVzkhNuEePAot7L3GvPseh93pvYFPgyHLX8mUy9",
|
||||
|
||||
Reference in New Issue
Block a user