@solana/client giữ cho bề mặt runtime gọn nhẹ. Một store, một RPC stack và một
wallet registry cung cấp năng lượng cho các helper khác nhau để cùng một
instance có thể hỗ trợ CLI, script hoặc UI đầy đủ. Action, watcher và helper đều
chia sẻ cache, subscription và wallet session thông qua client duy nhất đó.
Khi bạn đang xây dựng trải nghiệm React thuần túy, thường sẽ nhanh hơn khi bắt
đầu với @solana/react-hooks. Package hook bao
bọc cùng runtime client này và cung cấp các hook sẵn sàng để bạn chỉ cần
chuyển xuống headless client khi cần kiểm soát thêm.
Cài đặt
$npm install @solana/client
Sử dụng bất kỳ package manager nào; client chạy trong browser, worker, React, Svelte hoặc runtime phía server.
Tạo client một lần
Chọn Wallet Standard connector (auto discovery là cách nhanh nhất để bắt đầu), sau đó tạo client. Object duy nhất này cung cấp store, action, watcher và helper.
import { autoDiscover, createClient } from "@solana/client";const client = createClient({endpoint: "https://api.devnet.solana.com",websocketEndpoint: "wss://api.devnet.solana.com",walletConnectors: autoDiscover()});await client.actions.connectWallet("wallet-standard:phantom");const balance = await client.actions.fetchBalance("Fke...address");console.log(balance.lamports?.toString());
Client store theo dõi cấu hình cluster, subscription, giao dịch đang chờ xử lý và wallet session. Bạn có thể cung cấp Zustand store của riêng mình nếu cần persistence hoặc điều phối đa tab.
Điều phối wallet
Connector đóng gói metadata Wallet Standard cùng với logic connect/disconnect.
Đăng ký phantom(), solflare(), backpack() hoặc autoDiscover() helper
tích hợp sẵn, hoặc bao bọc custom provider với createWalletStandardConnector.
Tất cả wallet action (connect, disconnect, sign, send) đều chạy qua client
registry để mọi consumer luôn đồng bộ.
Action, watcher và helper
- Action bao bọc các thao tác đọc và ghi RPC phổ biến trong khi cập nhật
store (ví dụ:
fetchAccount,requestAirdrop,setCluster). - Watcher ghép kênh websocket subscription, truyền update vào store và cung cấp abort handle để dọn dẹp.
- Helper cung cấp các luồng cấp cao hơn như chuyển SOL, SPL token helper, signature polling và transaction pool.
const abortWatcher = client.watchers.watchBalance({ address: "Fke...address" },(lamports) => {console.log("live balance", lamports.toString());});// Later when the component unmounts or the flow endsabortWatcher.abort();
Mẫu transaction helper
Transaction helper quản lý việc làm mới blockhash, xác định fee payer và ký giao dịch. Bạn có thể chuẩn bị, kiểm tra và gửi với bất kỳ trải nghiệm người dùng nào bạn muốn.
const prepared = await client.helpers.transaction.prepare({authority: client.store.getState().wallet.session!,instructions: [instructionA, instructionB]});await client.helpers.transaction.simulate(prepared, {commitment: "processed"});const signature = await client.helpers.transaction.send(prepared);console.log("submitted", signature.toString());
Sử dụng prepareAndSend cho luồng xử lý có sẵn (mô phỏng cộng với ghi log) hoặc
gọi sign / toWire để thu thập chữ ký thủ công trước khi tự chuyển tiếp định
dạng wire.
Các mẫu phổ biến cho Solana developer
- Máy trạng thái headless: Chạy client bên trong các API route, script hoặc worker để tái sử dụng cùng logic điều phối wallet + RPC hỗ trợ giao diện người dùng của bạn.
- Dashboard thời gian thực: Kết hợp các watcher (số dư, tài khoản, chữ ký) với thư viện UI ưa thích của bạn; client xử lý việc phân phối websocket và vô hiệu hóa cache.
- Store tùy chỉnh: Inject Zustand store của riêng bạn để hydrate từ IndexedDB/localStorage, phản chiếu trạng thái đến phiên server hoặc điều phối giữa các tab trình duyệt.
- Cầu nối đến React hooks: Truyền instance client đã cấu hình cho
@solana/react-hookskhi bạn muốn các hook tiện dụng trên cùng runtime. - Khả năng kiểm thử: Interface client duy nhất có thể được mock trong unit test, giúp dễ dàng mô phỏng phản hồi RPC hoặc phiên wallet mà không cần có wallet trình duyệt.
Is this page helpful?