GTokenTool全网最好的代币发行工具平台
当前位置:首页 >> solana教程 >> 检查 Solana SPL 代币账户余额的五种方法

检查 Solana SPL 代币账户余额的五种方法

admin solana教程 75

如果您计划在 Solana 上构建 DeFi 协议、钱包、NFT 平台或任何类型的支付应用程序,则需要能够检查 Solana SPL 代币帐户的余额。在本指南中,我们将介绍五种简单的方法来检查 SPL 代币帐户的余额:

  • 使用 Solana 的 SPL-Token 命令行界面 (SPL-Token CLI) 

  • 使用 Solana 的 JavaScript API

  • 使用 Solana 的 SPL 代币计划 API

  • 使用 cURL 脚本

  • 使用 Rust 

依赖版本
solana 命令行工具1.16.14
spl-token-cli3.1.1
节点.js16.15
卷曲8.1.12
@solana/web3.js1.78.5
@solana/spl-令牌0.3.7
solana-sdk1.16.14
solana 客户端1.6.14
货物1.69.0
Solana 基础知识:集群

在查询我们的代币账户之前,让我们快速回顾一下 Solana 的集群,因为我们需要在检查钱包余额时指定一个特定的集群。“Solana 集群是一组验证器,它们共同协作以服务客户端交易并维护账本的完整性。许多集群可能共存。”。事实上,Solana 维护着三个集群,每个集群都有不同的用途:

  • 主网 Beta 版:使用真实代币的生产、无需许可的环境

  • Devnet:应用程序开发人员测试 Solana 应用程序的游乐场(Devnet 上的代币不是真实的,也没有财务价值)。Devnet 通常运行与 Mainnet Beta 相同的软件版本

  • 测试网:Solana 核心贡献者和验证者对新更新和功能进行压力测试的环境,重点是测试网络性能(测试网上的代币不是真实的,也没有财务价值)

对于本指南,我们将使用Mainnet-Beta,但您应该知道一个钱包可以同时在每个集群上拥有余额。

我们的第一种方法是使用 Solana SPL-Token CLI 检查钱包余额。如果您尚未安装它,请按照spl.solana.com/token上针对您的操作环境的说明进行操作。为确保安装成功,请打开一个新终端并输入:

spl-token --version

你应该看到类似这样的内容:

'Solana CLI 版本检查'

您已准备就绪!您需要做的就是准备好您的代币账户地址——如果您不知道您的代币账户地址

在您的终端中,输入以下命令获取您的钱包余额:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
Solana 基础知识:集群

-u您可以通过修改(Solana 的 JSON RPC 的 URL)选项来修改搜索以获取不同集群上该钱包的余额。我们已使用-um以确保我们在 Solana 的主网上进行搜索。要获取开发网或测试网余额,请尝试:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet

这些默认集群(mainnet-beta、testnet、devnet)是公共 JSON RPC 端点。如果您计划在 Solana 上进行大量查询或构建,您可能需要一个自己的端点。


您现在可以使用 Solana 上的 USDC 支付 QuickNode 计划。作为第一家接受 Solana 付款的多链提供商,我们正在为开发人员简化流程——无论您是创建新帐户还是管理现有帐户。

您将需要一个主网节点来查询钱包的真实余额:

“Solana 主网端点”

您现在可以修改查询以使用您的端点:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u https://example.solana.quiknode.pro/000000/

'Solana CLI 结果'

做得好!

在终端中创建一个新的项目目录和文件balance.js ,并使用以下命令:

mkdir token-address && cd token-address && echo > balance.js

安装 Solana Web3 依赖项:

yarn init -y
yarn add @solana/web3.js@1

或者

npm init -y
npm install --save @solana/web3.js@1

在所选的代码编辑器中打开balance.js ,在第 1 行,需要@solana/web3.js。我们将从此包中解构ConnectionPublicKey类。

const { Connection, PublicKey } = require('@solana/web3.js');
用于简化调试的日志

您现在可以访问 RPC 端点的日志,从而帮助您更有效地解决问题。如果您在 RPC 调用中遇到问题,只需检查 QuickNode 仪表板中的日志即可快速识别和解决问题。

在第 3-5 行,定义您的钱包、铸币和相关程序(代币程序和相关代币程序):

const QUICKNODE_RPC = 'https://example.solana.quiknode.pro/000000/'; // 👈 Replace with your QuickNode Endpoint OR clusterApiUrl('mainnet-beta')
const SOLANA_CONNECTION = new Connection(QUICKNODE_RPC);
const TOKEN_ADDRESS = new PublicKey('YOUR_TOKEN_ACCOUNT_ADDRESS'); //👈 Replace with your wallet address

最后,通过创建并调用一个新函数来获取您的地址,getTokenBalanceWeb3()该函数调用ConnectiongetTokenAccountBalance类上的方法来

async function getTokenBalanceWeb3(connection, tokenAccount) {
   const info = await connection.getTokenAccountBalance(tokenAccount);
   if (info.value.uiAmount == null) throw new Error('No balance found');
   console.log('Balance (using Solana-Web3.js): ', info.value.uiAmount);
   return info.value.uiAmount;
}

getTokenBalanceWeb3(SOLANA_CONNECTION, TOKEN_ADDRESS).catch(err => console.log(err));

返回值包括amountuiAmountamount响应包含基于代币铸币的额外小数。这是因为 Solana 将小数作为整数存储在链上以避免浮点运算。uiAmount响应是amount除以铸币小数。例如,如果amount为 1000000000 且铸币小数值为 9,则uiAmount为 1。如果amount为 1000000000 且铸币小数值为 6,则uiAmount为 1000。

运行你的代码。在终端中输入:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
0

你应该看到类似这样的内容:

“Solana-Web3.js 结果”

Solana SPL Token API 使这个过程变得更容易一些。让我们看看如何使用 SPL Token API 获取关联代币帐户的地址。

首先,安装 SPL 令牌程序:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
1

或者

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
2

打开balance.js,在第 1 行(在我们之前的导入之前)需要@solana/spl-token。我们将从这个包中解构getAccountgetMint方法。

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
3

现在,在脚本的底部,创建并调用一个新函数,getTokenBalanceSpl该函数将获取你的代币帐户,然后获取与该代币帐户关联的铸币(用于处理小数):

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
4

虽然这种方法有点冗长,但它是获取代币帐户余额和处理小数的好方法。请注意,我们必须将amount调用返回的值转换getAccount为数字(因为返回值是bigint),并且必须获取代币铸币详细信息以获取小数(然后我们用它除以小数amount以获得余额)。

运行你的代码。在终端中输入:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
0

您应该看到两种方法返回相同的余额:

“Solana 代币计划结果”

cURL 是一个命令行工具和库,用于通过 URL 传输数据。大多数基于 *nix 的系统都具有现成的 cURL 支持。运行以下命令检查您是否具有该支持:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
6

如果您尚未安装,请前往curl.se进行设置。

准备就绪后,您需要做的就是将此 HTTP 请求放入终端中(确保替换您的端点和令牌帐户地址)。在您的终端中输入:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
7

你应该看到类似这样的内容:

'Solana cURL 结果'注意:如果愿意,您可以使用jq之类的包来返回格式化的 JSON 数据。

请注意,字段中返回了相同的余额result.value.uiAmount🙌。

如果你是 Rust 开发人员,你也可以使用Solana Rust SDK。在项目文件夹中,使用以下命令启动一个新项目:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
8

导航到新创建的目录:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -um
9

将必要的依赖项添加到您的Cargo.toml文件:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet
0

打开src/main.rs,在第 1 行导入必要的包:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet
1

在第 5-6 行,定义你的代币账户地址:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet
2

最后,创建你的main函数,通过将你的所有者和铸币者的公钥传递到get_token_account_balance方法中来获取你的地址:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet
3

编译并运行代码。在终端中输入:

spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u devnet # for Devnet
# or
spl-token balance --address YOUR_TOKEN_ACCOUNT_ADDRESS -u testnet # for Testnet
4

你应该会看到返回相同的令牌地址:

“Solana Rust 结果”


现在,您有五个有用的工具可以获取 Solana SPL 代币帐户的余额。

作者:GTokenTool一键发币平台

交流群:https://t.me/+Kz4u3xoDpFo3ZWY1

同类推荐