本指南将帮助您设置和使用脚本从池(例如 Meteora 的 USDC-USDT 池)中获取 LP(流动性提供者)代币余额。该脚本以 Lamport 和 UI 单位获取 LP 代币余额。UI 余额可用于检查人性化阈值,例如池中的 1000 美元价值。
先决条件

确保你的系统上安装了 Node.js 和 npm(Node 包管理器)。你可以通过运行以下命令来验证安装:
node -vnpm -v
安装
步骤 1:ts-node
全局安装
ts-node
是 Node 的 TypeScript 执行环境。使用 npm 全局安装:
npm install -g ts-node
第 2 步:安装所需的依赖项
运行以下命令来安装必要的库:
npm install @metaplex-foundation/mpl-token-metadata @metaplex-foundation/mpl-toolbox @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults
步骤3:安装开发依赖项
安装 TypeScript 作为开发依赖项:
npm i
脚本设置
创建一个名为的文件getLPBalance.ts
并将以下代码片段粘贴到其中:
import { mplTokenMetadata } from "@metaplex-foundation/mpl-token-metadata";import { findAssociatedTokenPda, safeFetchMint, safeFetchToken,} from "@metaplex-foundation/mpl-toolbox";import { publicKey } from "@metaplex-foundation/umi";import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; const getLPBalance = async ( userPublicKeyString: string, // USER WALLET ADDRESS mintPublicKeyString: string, // LP MINT ADDRESS) => { try { // Get RPC from Helius or any other RPC provider of your choice const endpoint = "ADD YOUR RPC HERE"; const umi = createUmi(endpoint).use(mplTokenMetadata()); const userPublicKey = publicKey(userPublicKeyString); const mint = publicKey(mintPublicKeyString); const associatedTokenAccount = findAssociatedTokenPda(umi, { mint, owner: userPublicKey, }); const mintData = await safeFetchMint(umi, mint); const userPublicKeyData = await safeFetchToken( umi, associatedTokenAccount[0] ); const balanceInLamports = userPublicKeyData?.amount; let uiBalance = BigInt(0); if (balanceInLamports && mintData) { uiBalance = balanceInLamports / BigInt(10 ** mintData?.decimals); } else { // Handle cases where balance or mint data is not available console.error("Balance or mint data not available."); } // LAMPORTS AMOUNT console.log(balanceInLamports); // UI AMOUNT console.log(uiBalance); return { balanceInLamports, uiBalance }; } catch (error) { console.error(error); }};
用法
该getLPBalance
函数获取给定用户钱包地址和 LP 铸币地址的 LP 代币余额。它以 Lamport 和 UI 单位返回余额。
参数
userPublicKeyString
:用户钱包的公钥。mintPublicKeyString
:LP铸币地址的公钥。
例子
(async () => { const result = await getLPBalance( "USER_WALLET_PUBLIC_KEY", // Replace with actual user wallet public key "LP_MINT_PUBLIC_KEY" // Replace with actual LP mint public key ); if (result) { const { balanceInLamports, uiBalance } = result; // Check if the user has provided $1000 worth in the LP Pool const threshold = BigInt(1_000); if (uiBalance > threshold) { console.log("User has provided more than $1000 worth in the LP Pool."); } else { console.log("User has provided less than $1000 worth in the LP Pool."); } }})()
笔记
确保将“在此添加您的 RPC”替换为您选择的 RPC 提供商的端点。
根据您的要求调整用户钱包公钥和LP mint公钥。
要找到 LP Mint 地址,请访问 Meteora 的 USDC-USDT 池并找到 LP Mint 地址,如下图所示。
此脚本提供了使用 Metaplex Foundation 库获取 LP 代币余额的基本示例。您可以扩展或修改它以适合您的特定用例。