从零到 Web3:使用 @solana/kit 快速查询 Solana 账户余额

从零到 Web3:使用 @solana/kit 快速查询 Solana 账户余额

Web3 浪潮席卷全球,Solana 凭借其高速、低成本的区块链网络成为 Web3 开发者的热门选择。本文将带你从零开始,通过一个简单实操教程,使用 @solana/kit 快速搭建项目并查询 Solana 账户余额。无论你是 Web3 新手还是希望深入 Solana 开发的开发者,这篇指南都将助你轻松迈入 Web3 世界,掌握与 Solana 区块链交互的核心技能!

本文详细讲解如何基于 @solana/kit 构建一个 Solana 项目,从项目初始化、依赖安装到代码实现,逐步展示如何在本地节点和 Devnet 上查询账户余额。通过简洁的代码示例和运行结果,你将快速学会使用 @solana/kit 连接 Solana 网络,获取账户余额信息。本教程适合 Web3 初学者和希望提升 Solana 开发技能的开发者,为你的 Web3 开发之旅打下坚实基础。

实操

创建项目

bash 复制代码
mkdir sol-get-balance
cd sol-get-balance

初始化项目

bash 复制代码
pnpm init
tsc --init

安装依赖

bash 复制代码
pnpm add @solana/kit tsx
pnpm add dotenv

查看项目目录

bash 复制代码
solana-sandbox/get_wallet_account on  main [!?] is 📦 1.0.0 via ⬢ v23.11.0 
➜ tree . -L 6 -I "target|test-ledger|.vscode|node_modules"
.
├── package.json
├── pnpm-lock.yaml
├── src
│   ├── client.ts
│   ├── fetch_account.ts
│   ├── get_balance.ts
│   └── index.ts
└── tsconfig.json

2 directories, 7 files

client.ts 文件

ts 复制代码
import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";
import { Rpc, RpcSubscriptions, SolanaRpcApi, SolanaRpcSubscriptionsApi } from "@solana/kit";
import 'dotenv/config';
// 或
// import dotenv from 'dotenv';
// dotenv.config();

const rpcUrl = process.env.SOLANA_RPC_URL || "http://localhost:8899";

export type Client = {
    rpc: Rpc<SolanaRpcApi>;
    rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
};

let client: Client | undefined;
export function createClient(): Client {
    if (!client) {
        client = {
            rpc: createSolanaRpc(rpcUrl),
            // rpc: createSolanaRpc("http://127.0.0.1:8899"),
            rpcSubscriptions: createSolanaRpcSubscriptions("ws://127.0.0.1:8900"),
        };
    }
    return client;
}

get_balance.ts 文件

ts 复制代码
import { address, Address, Lamports, } from "@solana/kit";
import { createClient } from "./client";



async function getBalance(account: Address): Promise<Lamports> {
    const client = createClient();

    const { value: balance } = await client.rpc.getBalance(account).send();
    console.log(`Balance of ${account}: ${balance}`);
    return balance;

}

export default getBalance;

index.ts 文件

ts 复制代码
import GetBalance from './get_balance';
import { address } from "@solana/kit";


const main = async () => {
    const account = address("6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd");
    const balance = await GetBalance(account);
    console.log(`Balance: ${balance} lamports.`);
}

main().catch(err => {
    console.error(err);
})

本地节点运行

bash 复制代码
solana-sandbox/get_wallet_account on  main [!?] is 📦 1.0.0 via ⬢ v23.11.0 
➜ solana-test-validator -r    
Ledger location: test-ledger
Log: test-ledger/validator.log
⠓ Initializing...                                                                                                Waiting for fees to stabilize 1...
Identity: 5cohQrcQrRNos8XCwyU33rLt24qHZKBkh8sNziBNKdv6
Genesis Hash: 6rL1VKjKTuwRdRcLtZRQvs3m1EnPT8ZthSaxpPGdCfTR
Version: 2.1.21
Shred Version: 61775
Gossip Address: 127.0.0.1:1024
TPU Address: 127.0.0.1:1027
JSON RPC URL: http://127.0.0.1:8899
WebSocket PubSub URL: ws://127.0.0.1:8900
⠤ 00:07:31 | Processed Slot: 913 | Confirmed Slot: 913 | Finalized Slot: 882 | Full Snapshot Slot: 800 | Incrementa

运行脚本获取本地余额

bash 复制代码
solana-sandbox/get_wallet_account on  main [!?] is 📦 1.0.0 via ⬢ v23.11.0 
➜ pnpm start    

> get_wallet_account@1.0.0 start /Users/qiaopengjun/Code/Solana/solana-sandbox/get_wallet_account
> tsx src/index.ts

Balance of 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd: 500000000000000000
Balance: 500000000000000000 lamports.

运行脚本查看Devnet 余额

bash 复制代码
solana-sandbox/get_wallet_account on  main [!?] is 📦 1.0.0 via ⬢ v23.11.0 
➜ pnpm start

> get_wallet_account@1.0.0 start /Users/qiaopengjun/Code/Solana/solana-sandbox/get_wallet_account
> tsx src/index.ts

Balance of 6MZDRo5v8K2NfdohdD76QNpSgk3GH3Aup53BeMaRAEpd: 257060117736
Balance: 257060117736 lamports.

solana-sandbox/get_wallet_account on  main [!?] is 📦 1.0.0 via ⬢ v23.11.0 took 2.4s 
➜ solana balance
257.060117736 SOL

总结

通过本教程,你已成功从零起步,使用 @solana/kit 实现了一个查询 Solana 账户余额的 Web3 项目。@solana/kit 的强大功能让你轻松与 Solana 区块链交互,开启了 Web3 开发的无限可能。接下来,你可以进一步探索 Solana 的代币创建、智能合约开发等高级功能,加速迈向 Web3 世界的核心舞台!快来动手实践,加入 Web3 开发的热潮吧!

参考

相关推荐
小蒜学长2 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
烂蜻蜓2 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
2601_962055979 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
wangruofeng9 小时前
Phosphor Icons 官网源码拆解:URL 即存储、水波动画与 7362 Star 图标库的架构实践
前端·架构·github
wangruofeng10 小时前
AI 画架构图总差点意思,archify 给它加了一条验收流水线
架构·github·aigc
Lost of 程序猿10 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_216962909611 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
林澈在路上12 小时前
AI翻唱软件哪个好 2026国产AI写歌工具对比推荐
大数据·人工智能·深度学习·github·aigc·音视频·音频
郑州光合科技余经理13 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒13 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端