Skip to content

Commit

Permalink
script to find possible defunct pools
Browse files Browse the repository at this point in the history
  • Loading branch information
DevRozaDev committed Jan 21, 2025
1 parent c94761c commit 50419e9
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions scripts/find-defunct-pools.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { Provider } from '@project-serum/anchor'
import { Network } from '@invariant-labs/sdk/src/network'
import { Market } from '@invariant-labs/sdk/src'
import { Decimal, PoolStructure } from '@invariant-labs/sdk/lib/market'
import { DECIMAL } from '@invariant-labs/sdk/lib/utils'
import { DENOMINATOR } from '@invariant-labs/sdk'

require('dotenv').config()
console.log(process.cwd())

const provider = Provider.local(
'https://mainnet.helius-rpc.com/?api-key=ef843b40-9876-4a02-a181-a1e6d3e61b4c'
)

const connection = provider.connection

const main = async () => {
const market = await Market.build(Network.MAIN, provider.wallet, connection)

const allPools = await market.getAllPools()
const allTickmaps = Object.fromEntries(
(await market.program.account.tickmap.all()).map(x => [x.publicKey, x.account.bitmap])
)

const emptyPools: PoolStructure[] = []

for (const poolState of allPools) {
const tickmap: number[] = allTickmaps[poolState.tickmap.toString()]

const empty = !tickmap.some((tick: number) => tick !== 0)
if (empty) {
emptyPools.push(poolState)
console.log(
poolState.tokenX.toString(),
poolState.tokenY.toString(),
formatFee(poolState.fee),
poolState.tickSpacing.toString()
)
}
}

console.log(emptyPools.length)
console.log(allPools.length)
}

main()

export const formatFee = (fee: Decimal) => {
const feeB = BigInt(fee.v.toString())
const feeDenominator = BigInt(DENOMINATOR)
let afterDot = (feeB % feeDenominator).toString()
return (feeB / feeDenominator).toString() + '.' + '0'.repeat(DECIMAL - afterDot.length) + afterDot
}

0 comments on commit 50419e9

Please sign in to comment.