我有 solana 上两个代币的铸币地址及其配对地址。使用javascript,我想知道矿池的流动性是否被锁定并燃烧。谢谢
这是我尝试过的:
const info = await connection.getAccountInfo(
new PublicKey(pooladdress)
);
if (!info) return;
const poolState = LIQUIDITY_STATE_LAYOUT_V4.decode(info.data);
console.log("poolState=============", poolState);
};
const SOL_USDC_POOL_ID = "58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2";
getPoolInfo(SOL_USDC_POOL_ID);
我希望能得到正确方向的指点。
类似这样的:
获取 LP 铸币和矿池储备:
const acc = await connection.getMultipleAccountsInfo([new
PublicKey("pool address")])
const parsed = acc.map((v) => {
return LIQUIDITY_STATE_LAYOUT_V4.decode(v.data)
})
const lpMint = parsed[0].lpMint
const lpReserve = parsed[0].lpReserve
获取铸币厂信息:
const accInfo = await connection.getParsedAccountInfo(new solana.PublicKey(lpMint));
const mintInfo = accInfo?.value?.data?.parsed?.info
计算:
const lpReserve = lpReserve / Math.pow(10, mintInfo?.decimals)
const actualSupply = mintInfo?.supply / Math.pow(10, mintInfo?.decimals)
console.log(`lpMint: ${lpMint}, Reserve: ${lpReserve}, Actual Supply: ${actualSupply}`);
//Calculate burn percentage
const maxLpSupply = Math.max(actualSupply, (lpReserve - 1));
const burnAmt = (lpReserve - actualSupply)
console.log(`burn amt: ${burnAmt}`)
const burnPct = (burnAmt / lpReserve) * 100;
console.log(`${burnPct} LP burned`);