raydium-io / raydium-sdk

An SDK for building applications on top of Raydium.
https://sdk.raydium.io
GNU General Public License v3.0
363 stars 140 forks source link

Find pool initialisation transaction timestamp #57

Open CVB91 opened 9 months ago

CVB91 commented 9 months ago

I want to get the timestamp for when a raydium pool initialisation transaction occurred. Is the a simple way to do this from the pool id?

I have managed to get the pool init transaction by going through the lp mint and then getting largest token accounts for the lp mint, which is the lp token account and then getting the signatures by address for this account and parsing it. However, this needs to be done immediately because as soon as the lp tokens get burned or the liqudity gets removed this token account gets closed. There must be a simpler way right?

export async function test (id: PublicKey) {

  const info = await connection.getTokenLargestAccounts(id)

  const tokenAccount = info.value[0].address

  const tokenSignatures = await connection.getSignaturesForAddress(tokenAccount)

  console.log(tokenSignatures)

  console.log(tokenSignatures[0].blockTime)

}

Currently this works but needs to be done immediately. I want to find the transaction details after some time has passed so this is not a feasible technique for my implementation.

precious-void commented 9 months ago

You can get this information from the pool account info. Having poolIdMint:

import {
    LIQUIDITY_STATE_LAYOUT_V4
} from '@raydium-io/raydium-sdk'

const data = await connection
    .getAccountInfo(new PublicKey(poolIdMint))
    .then((info) => LIQUIDITY_STATE_LAYOUT_V4.decode(info.data))

console.log(new Date(Number(data.poolOpenTime.toString() * 1000)))