Skip to content

Commit

Permalink
raydium: pull token balances from their api
Browse files Browse the repository at this point in the history
  • Loading branch information
g1nt0ki committed Feb 5, 2025
1 parent 5910bf0 commit 6b66041
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 20 deletions.
3 changes: 3 additions & 0 deletions projects/raydium/api.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const { getExports } = require('../helper/heroku-api')
const { sumTokens2 } = require('../helper/solana')
const index = require('../index')

module.exports = {
timetravel: false,
Expand All @@ -12,6 +13,8 @@ module.exports.solana = {
tvl: tvlWithCheck,
}

module.exports.solana = index.solana

async function tvlWithCheck(api) {
const balances = await tvl(api)
api.addBalances(balances)
Expand Down
66 changes: 46 additions & 20 deletions projects/raydium/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const { PublicKey, } = require("@solana/web3.js");
const { TokenAmountLayout, KeyLayoutv4 } = require("../helper/utils/solana/layouts/raydium-layout");
const { transformDexBalances } = require("../helper/portedTokens");
const { sleep } = require("../helper/utils");
const { get } = require("../helper/http");

const CLMM = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK'
const AmmV4 = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8'
Expand Down Expand Up @@ -52,7 +53,7 @@ async function ammV4Tvl(api) {
await sleep(20000)
const allPoolKeyInfo = await connection.getProgramAccounts(new PublicKey(AmmV4), { filters: [{ dataSize: 752 }], dataSlice: { offset: 336, length: KeyLayoutv4.span } })


let i = 0
let j = 0
let data = []
Expand Down Expand Up @@ -120,26 +121,26 @@ async function ammV2V3() {
async function combinedTvl(api) {
try {

console.time('raydium: combinedTvl')
console.time('raydium: combinedTvl')

console.time('raydium: tvlCLMM')
const balancesCLMM = await tvlCLMM()
api.addBalances(balancesCLMM)
console.timeEnd('raydium: tvlCLMM')
/* */ console.time('raydium: tvlCLMM')
const balancesCLMM = await tvlCLMM()
api.addBalances(balancesCLMM)
console.timeEnd('raydium: tvlCLMM')

console.time('raydium: ammStableTvl')
const balancesAmmStable = await ammStableTvl()
api.addBalances(balancesAmmStable)
console.timeEnd('raydium: ammStableTvl')
console.time('raydium: ammStableTvl')
const balancesAmmStable = await ammStableTvl()
api.addBalances(balancesAmmStable)
console.timeEnd('raydium: ammStableTvl')

console.time('raydium: ammV2V3')
const balancesAmmV2V3 = await ammV2V3()
api.addBalances(balancesAmmV2V3)
console.timeEnd('raydium: ammV2V3')
console.time('raydium: ammV2V3')
const balancesAmmV2V3 = await ammV2V3()
api.addBalances(balancesAmmV2V3)
console.timeEnd('raydium: ammV2V3')

console.time('raydium: ammV4Tvl')
await ammV4Tvl(api)
console.timeEnd('raydium: ammV4Tvl')
console.time('raydium: ammV4Tvl')
// await ammV4Tvl(api)
console.timeEnd('raydium: ammV4Tvl')

} catch (e) {
console.error('raydium', e)
Expand All @@ -148,7 +149,10 @@ async function combinedTvl(api) {

console.timeEnd('raydium: combinedTvl')
const tvl = await api.getUSDValue()
if (tvl < 1.5e8) throw new Error('TVL is too low :' + tvl/1e6 + 'M')
if (tvl < 1.5e8) throw new Error('TVL is too low :' + tvl / 1e6 + 'M')

api.removeTokenBalance('DS4QiZfkp39PsHXYCRV3NkyDUKV9SpTczp2qnAUg6Nt6') // ZMB
api.removeTokenBalance('HDa3zJc12ahykSsBRvgiWzr6WLEByf36yzKKbVvy4gnF') // SOS
return api.getBalances()
}

Expand All @@ -159,7 +163,29 @@ module.exports = {
hallmarks: [[1667865600, "FTX collapse"]],

solana: {
tvl: combinedTvl,
// tvl: combinedTvl,
tvl: tvlApi,
staking: () => sumTokens2({ tokenAccounts: ['8tnpAECxAT9nHBqR1Ba494Ar5dQMPGhL31MmPJz1zZvY'] })
},
};
};

async function tvlApi(api) {
let hasMore = true
let page = 1
const pageSize = 1000
do {
const { data: { data } } = await get(`https://api-v3.raydium.io/pools/info/list?poolType=all&poolSortField=liquidity&sortType=desc&pageSize=${pageSize}&page=${page}`)
const lastItem = data[data.length - 1]
hasMore = data.length === pageSize && lastItem.tvl > 1000
api.log('lastItem', lastItem.tvl, page)
data.forEach(({ mintA, mintB, mintAmountA, mintAmountB, }) => {
api.add(mintA.address, mintAmountA * (10 ** mintA.decimals))
api.add(mintB.address, mintAmountB * (10 ** mintB.decimals))
})
page++
} while (hasMore)

api.removeTokenBalance('DS4QiZfkp39PsHXYCRV3NkyDUKV9SpTczp2qnAUg6Nt6') // ZMB
api.removeTokenBalance('HDa3zJc12ahykSsBRvgiWzr6WLEByf36yzKKbVvy4gnF') // SOS
return api.getBalances()
}

0 comments on commit 6b66041

Please # to comment.