摘要:用 @solana/web3.js Connection + clusterApiUrl 连测试网,只读 getSlot/getBalance/getAccountInfo;对照 RPC 文档与 Solscan Devnet。无私钥无主网交易。

站内已有 Solana Anchor 入门:项目结构与 IDL、Anchor 部署到 Devnet、租金豁免 与 PoH / 账户模型。本篇专讲 JS 侧只读第一步:用 @solana/web3.js 的 Connection + clusterApiUrl('devnet') 连测试网,再 getSlot / getBalance / getAccountInfo。不写 deploy、不发交易、不用真私钥。

一、官方:clusterApiUrl 选哪条集群

clusterApiUrl(cluster?, tls?) 会返回指定集群的 RPC URL。文档写明可选 'devnet' | 'testnet' | 'mainnet-beta'。本篇默认教 devnet:日常脚手架、水龙头、浏览器对照都更常用。装包时本场用的是仍广泛流行的 v1.x(npm i @solana/web3.js@1);官方 TypeDoc 站点也会同时展示 v3 分支,API 名以你安装的版本为准。

@solana/web3.js:连 Devnet 与读余额-程序旅途
图1:solana-foundation.github.io/solana-web3.js:Function clusterApiUrl;cluster 可选 devnet/testnet/mainnet-beta;界面英文,2026-10-20 实拍

二、官方:Connection 与 getBalance / getSlot

Connection 描述为「连到全节点 JSON-RPC 端点」。类方法索引里能直接看到本场用到的 getBalance、getSlot、getAccountInfo 等。典型写法:

const { Connection, clusterApiUrl, PublicKey, LAMPORTS_PER_SOL } = require('@solana/web3.js');
const conn = new Connection(clusterApiUrl('devnet'), 'confirmed');
const slot = await conn.getSlot();
const lamports = await conn.getBalance(new PublicKey('11111111111111111111111111111111'));
@solana/web3.js:连 Devnet 与读余额-程序旅途
图2:solana-foundation.github.io/solana-web3.js:Class Connection;Methods 含 getBalance / getSlot / getAccountInfo;界面英文,2026-10-20 实拍

三、对照 RPC:getBalance 在 Devnet 上长什么样

Solana 官方 RPC 文档的 getBalance 页写明:按账户地址返回 lamports。右侧示例 curl 直接打向 https://api.devnet.solana.com,响应里是 context.slot + value(u64)。web3.js 的 conn.getBalance 本质上就是包一层这个 JSON-RPC。

@solana/web3.js:连 Devnet 与读余额-程序旅途
图3:solana.com/docs/rpc/http/getbalance:参数 Pubkey、result value(lamports);示例指向 api.devnet.solana.com;界面英文,2026-10-20 实拍

四、本机实跑:Connection + getSlot / getBalance

工作目录 demo/:npm i @solana/web3.js@1(本场解析为 1.99.0)。脚本先打印 clusterApiUrl('devnet'),再尝试官方 Devnet;若本环境 TLS/超时不可达,则同一套 API回退到 clusterApiUrl('testnet')(仍是测试集群,无私钥、无主网资金)。2026-10-20 17:02 Asia/Shanghai 快照:

  • clusterApiUrl('devnet') → https://api.devnet.solana.com(本场探测超时)
  • 回退 testnet:getSlot() → 454652301
  • getBalance(System Program 1111…1111) → 1 lamport(≈1e-9 SOL)
  • getAccountInfo:executable=true,owner=NativeLoader…,lamports=1
  • getVersion() → solana-core ≈ 4.4.0-beta.1(会变)

你本机网络正常时应优先固定 clusterApiUrl('devnet'),不必跟本场回退。

@solana/web3.js:连 Devnet 与读余额-程序旅途
图4:本机 @solana/web3.js 1.99.0:clusterApiUrl、Devnet 探测失败说明、testnet getSlot/getBalance/getAccountInfo 真实输出;只读;2026-10-20

五、浏览器:Solscan Devnet 对照 System Program

官方 explorer.solana.com 本场遇 429,改用 Solscan 并切换右上角 DEVNET。打开公开地址 11111111111111111111111111111111(System Program):能看到 Devnet 标签、Owner=Native Loader、余额量级极小(页面显示 0.0₈1 一类科学计数)。这与终端 getBalance=1 lamport 同向——浏览器适合「认账户在不在、是什么」,精确数字仍以 RPC 为准。slot / 交易列表会变。

@solana/web3.js:连 Devnet 与读余额-程序旅途
图5:solscan.io/account/1111…1111?cluster=devnet:DEVNET、Native Loader、余额字段;公开只读;2026-10-20 实拍

六、和站内相关文怎么分工

场景 更合适的文 本篇补充
Anchor 目录 / IDL Anchor 入门·IDL 本篇是 JS Connection 只读
Devnet 部署与签名 Anchor 部署 Devnet 本篇不 deploy
租金豁免门槛 租金豁免 本篇只 getBalance 样例
EVM 侧 PublicClient viem PublicClient 链与 SDK 不同
先连对 cluster
clusterApiUrl('devnet') 再 new Connection;别把主网 URL 抄进测试脚本。
lamports ≠ SOL 显示
1 SOL = 1e9 lamports;浏览器科学计数与 RPC 整数要对一下。
只读就够了
本场无私钥、无空投、无转账。钱包演练可试用欧易 Web3(创建可填 CHENGXULVTU)。
  1. npm i @solana/web3.js@1,对照 clusterApiUrl / Connection 文档。
  2. 写 new Connection(clusterApiUrl('devnet'), 'confirmed'),先 getSlot() 确认连通。
  3. 对公开地址(如 System Program)跑 getBalance / getAccountInfo。
  4. 在 Solscan 切 DEVNET 打开同一地址,认 Owner / 余额量级。
  5. 买少量 SOL 作日后 Gas(与本文测试网无关)可在 币安 或 欧易——本场不需要。

相关阅读

说明:配图为 2026-10-20 @solana/web3.js TypeDoc(clusterApiUrl / Connection)、Solana RPC getBalance、本机真实终端输出,以及 Solscan Devnet System Program 只读页。本场官方 Devnet RPC 超时故用 testnet 演示同一 API;slot、版本、余额会变。本文不构成投资建议。