本文提供了四种方法来检查Solana钱包的余额,分别是使用Solana的命令行接口、JavaScript API、cURL脚本和Rust SDK。文章详细介绍了每种方法的步骤与所需工具,适合初学者入门使用Solana。
如果你刚开始你的 Solana 之旅,你可能需要检查一个账户的余额。在本指南中,我们将介绍四种简单的方法来检查 Solana 钱包的余额:
E645TckHQnDcavVv92Etc6xSWQaq8zzPtPRGBheviRAk
)Solana 基础知识:集群
在查询我们的钱包之前,让我们快速回顾一下 Solana 的集群,因为在检查钱包余额时我们需要指定特定的集群。 "一个 Solana 集群是一组验证者共同工作以服务客户端交易并维护账本完整性。许多集群可能共存。" (来源:docs.solana.com/cluster/overview)。事实上,Solana 维护三个各自服务不同目的的集群:
在本指南中,我们将使用 Mainnet-Beta
,但你需要知道,一个钱包可以同时在每个集群上都有余额。
我们首先的方法是使用 Solana CLI 检查钱包的余额。如果你尚未安装,请按照 docs.solana.com/cli/install-solana-cli-tools 中的说明进行操作。为了确认你的安装是否成功,打开一个新的终端并输入:
solana --version
你应该会看到类似这样的内容:
你准备好了!你只需准备好你的钱包地址——你可以直接从 Phantom 或其他钱包复制它:
在你的终端中,通过输入以下命令获取你的钱包余额:
solana balance YOUR_WALLET_ADDRESS -u mainnet-beta
Solana 基础知识:集群
你可以修改你的查询以获取该钱包在不同集群上的余额,通过修改你的 -u
(Solana的 JSON RPC的 URL)选项。要获取 devnet 或 testnet 的余额,可以尝试:
solana balance YOUR_WALLET_ADDRESS -u devnet # for Devnet
## 或
solana balance YOUR_WALLET_ADDRESS -u testnet # for Testnet
这些默认集群(mainnet-beta、testnet、devnet)是公共 JSON RPC 端点。如果你打算进行大量查询或在 Solana 上进行构建,你可能会想要一个自己的端点。了解为什么超过 50% 的 Solana 项目选择 QuickNode,并在 这里 注册一个 免费 账户。你将需要一个 mainnet 节点来查询钱包的真实余额:
现在你可以修改你的查询使用你的端点:
solana balance YOUR_WALLET_ADDRESS -u https://example.solana.quiknode.pro/000000/
做得很好!
在你的终端中创建一个新的项目目录和文件,balance.js,如下:
mkdir sol_balance
cd sol_balance
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,在第一行,引用 @solana/web3.js 并将其存储在常量 SOLANA 中。在第二行,解构 SOLANA 以获取一些必要的类、方法和常量。
const SOLANA = require('@solana/web3.js');
const { Connection, PublicKey, LAMPORTS_PER_SOL, clusterApiUrl } = SOLANA;
在第四行,使用你的 QuickNode 端点(或通过使用 clusterApiUrl('CLUSTER_NAME')
连接到公共集群)建立与集群的连接,并将你的钱包地址定义为 WALLET_ADDRESS
。
const QUICKNODE_RPC = 'https://example.solana.quiknode.pro/000000/'; // 👈 用你的 QuickNode 端点替换 OR clusterApiUrl('mainnet-beta')
const SOLANA_CONNECTION = new Connection(QUICKNODE_RPC);
const WALLET_ADDRESS = 'YOUR_WALLET_ADDRESS'; //👈 用你的钱包地址替换
如果你将要经常使用 Solana-Web3.js,你将对 Connection 类非常熟悉。这实际上是你如何建立与 JSON RPC 端点连接的方法。
最后,通过在 Connection 的实例上调用 getBalance()
方法来获取你的余额:
(async () => {
let balance = await SOLANA_CONNECTION.getBalance(new PublicKey(WALLET_ADDRESS));
console.log(`钱包余额: ${balance/LAMPORTS_PER_SOL}`)
})();
关于我们脚本的一些说明:
getBalance
promise 从网络返回响应WALLET_ADDRESS
,我们首先创建了一个新的 PublicKey 实例。PublicKeys 对于从 Solana 集群获取和发送信息至关重要。你可以通过将钱包的字符串地址传递给 new PublicKey()
构造函数来在代码中定义一个 PublicKey。balance
除以 LAMPORTS_PER_SOL
,因为 Solana 跟踪 SOL 的原生单位实际上是 lamports(1 / 1_000_000_000 的 1 SOL)。运行你的代码。在你的终端输入,
node balance
你应该会看到类似这样的内容:
干得好!
cURL 是一个用于通过 URL 传输数据的命令行工具和库。大多数基于 *nix 的系统都原生支持 cURL。通过运行以下命令检查你是否已安装 cURL:
curl -h
如果未安装,请前往 curl.se 进行设置。
准备好后,你只需在终端中输入此 HTTP 请求(确保替换你的端点和钱包地址)。在你的终端输入:
curl https://example.solana.quiknode.pro/000000/ -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0", "id": 1,
"method": "getBalance",
"params": [\
"YOUR_WALLET_ADDRESS"\
]
}
'
你应该会看到类似这样的内容:
请注意,我们的余额在 result.value
字段中以 lamports 格式返回。
如果你是 Rust 开发者,你也可以使用 Solana Rust SDK。在你的项目文件夹中,使用以下命令初始化一个新项目:
cargo new sol-balance
导航到新创建的目录:
cd sol-balance
在你的 Cargo.toml 文件中添加必要的依赖:
[dependencies]
solana-sdk = "1.16.14"
solana-client = "1.6.14"
打开 src/main.rs,在第一行导入必要的包:
use solana_sdk::pubkey::Pubkey;
use solana_client::rpc_client::RpcClient;
use std::str::FromStr;
在第 5-6 行,定义你的所有者账户地址和一个 LAMPORTS_PER_SOL
常量:
const OWNER: &str = "YOUR_WALLET_ADDRESS";
const LAMPORTS_PER_SOL: f64 = 1_000_000_000.0;
最后,创建你的 main
函数,通过将所有者钱包的公共密钥传递到 get_balance
方法中来获取钱包的余额:
fn main() {
let owner_pubkey = Pubkey::from_str(OWNER).unwrap();
let connection = RpcClient::new("https://example.solana.quiknode.pro/000000/".to_string()); // 👈 用你的 QuickNode 端点替换
let balance = connection.get_balance(&owner_pubkey).unwrap() as f64;
println!("余额: {}", balance / LAMPORTS_PER_SOL);
}
编译并运行你的代码。在你的终端输入,
cargo build
cargo run
你应该可以看到你的钱包余额被返回。做得很好!
做得很好!你现在有四种方便的工具来获取 Solana 钱包的余额。如果你刚刚开始你的 Solana 之旅,这里有一些可能有用的资源:
我们非常乐意听到你正在构建的内容。在 Discord 上与我们联系,或在 Twitter 上关注我们,以随时获得最新信息!
如果你对本指南有任何反馈,请 告诉我们。我们非常希望听到你的声音。
- 原文链接: quicknode.com/guides/sol...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!