本指南将帮助您设置和使用脚本来获取用户钱包的代币余额。该脚本会获取 Lamport 和 UI 单元中的代币余额(例如 BONK)。UI 余额可用于检查人类可读的阈值,例如 1,000,000 个代币。
先决条件

确保你的系统上安装了 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 install --save-dev typescript
脚本设置
创建一个名为的文件getTokenBalance.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 getTokenbalance = async ( userPublicKeyString: string, // USER WALLET ADDRESS mintPublicKeyString: string, // TOKEN MINT) => { 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); }};
用法
该getTokenbalance
函数获取给定用户钱包地址和代币铸币的代币余额。它以 Lamport 和 UI 单位返回余额。
参数
userPublicKeyString
:用户钱包的公钥。mintPublicKeyString
:代币铸造者的公钥。
例子
(async () => { const result = await getTokenbalance( "USER_WALLET_PUBLIC_KEY", // Replace with actual user wallet public key "TOKEN_MINT_PUBLIC_KEY" // Replace with actual token mint public key ); if (result) { const { balanceInLamports, uiBalance } = result; // Check if the user has 1,000,000 BONK const threshold = BigInt(1_000_000); if (uiBalance > threshold) { console.log("User has more than 1,000,000 BONK tokens."); } else { console.log("User has less than 1,000,000 BONK tokens."); } }})();
笔记
确保将“在此添加您的 RPC”替换为您选择的 RPC 提供商的端点。
根据您的需求调整用户钱包公钥和代币铸造公钥。
此脚本提供了使用 Metaplex Foundation 库获取代币余额的基本示例。您可以扩展或修改它以适合您的特定用例。