@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.
Chạy headless — trong một API route, worker, hoặc script không có ví trình duyệt? Hãy ký bằng dịch vụ quản lý khóa backend thay vì dùng keypair thô. Xem Keychain và Ký trong Môi Trường Production.
Các mẫu phổ biến cho các nhà phát triển Solana
- 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 ví + RPC vốn đã cung cấp sức mạnh cho giao diện người dùng của bạn.
- Bảng điều khiển 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 giao diện người dùng ưa thích của bạn; client xử lý việc phân phối websocket và làm mới cache.
- Store tùy chỉnh: Inject store Zustand của riêng bạn để hydrate từ IndexedDB/localStorage, đồng bộ trạng thái với các phiên máy chủ, hoặc điều phối giữa các tab trình duyệt.
- Cầu nối tới React hooks: Truyền một client instance đã được cấu hình vào
@solana/react-hookskhi bạn muốn các hook tiện lợi trên cùng một runtime. - Khả năng kiểm thử: Giao diện client đơn nhất có thể được mock trong các unit test, giúp dễ dàng mô phỏng các phản hồi RPC hoặc phiên ví mà không cần ví trình duyệt.
Is this page helpful?