@solana/kit cung cấp createClient, một host nhỏ mà bạn mở rộng bằng các plugin. Mỗi
plugin bổ sung một khả năng — kết nối RPC, signer, lập kế hoạch giao dịch —
và client được tổng hợp hỗ trợ các script, route phía server và UI như nhau.
Đang xây dựng ứng dụng React? Hướng dẫn React bọc chính
client này với @solana/react để các component đọc trạng thái ví và dữ liệu RPC
thông qua hooks. Hãy bắt đầu từ đó và quay lại đây khi bạn cần kiểm soát chi tiết hơn.
Cài đặt
$npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer
Sử dụng bất kỳ trình quản lý gói nào. Kit là v7+ và các gói @solana/kit-plugin-* là
0.13+.
Tạo một client
Kết hợp các plugin với .use(...). Thiết lập signer trước, sau đó đến kết nối RPC.
solanaDevnetRpc() thêm client.rpc, các subscription, trình
lập kế hoạch/thực thi giao dịch, và helper client.sendTransaction — vì vậy một ứng dụng hiếm khi
cần tự kết nối các thành phần đó.
import { createClient, generateKeyPairSigner } from "@solana/kit";import { solanaDevnetRpc } from "@solana/kit-plugin-rpc";import { signer } from "@solana/kit-plugin-signer";const payer = await generateKeyPairSigner();const client = createClient().use(signer(payer)).use(solanaDevnetRpc());const slot = await client.rpc.getSlot().send();console.log("current slot", slot);
Plugin signer thiết lập cả người trả phí lẫn danh tính ứng dụng. Gói RPC
yêu cầu một người trả phí phải được thiết lập trước, đó là lý do thứ tự quan trọng.
Các biến thể Signer
@solana/kit-plugin-signer cung cấp ba vai trò để bạn chỉ cấp quyền những gì client
cần:
signer(x)— thiết lập cảclient.payerlẫnclient.identity.payer(x)— chỉ là người trả phí.identity(x)— chỉ là quyền hạn ứng dụng.
Mỗi cái có các biến thể *FromFile(path) (Node), generated*(), generated*WithSol(amount),
và airdrop*() dùng cho kiểm thử và script.
Gửi một giao dịch
Xây dựng các instruction bằng client chương trình được tạo sẵn, sau đó chuyển chúng cho
client.sendTransaction. Trình lập kế hoạch giải quyết blockhash, ước tính compute,
ký bằng payer của client và gửi đi.
import { getTransferSolInstruction } from "@solana-program/system";import { address, lamports } from "@solana/kit";const transfer = getTransferSolInstruction({source: client.payer,destination: address("Fke...address"),amount: lamports(10_000_000n) // 0.01 SOL});const { context } = await client.sendTransaction([transfer]);console.log("submitted", context.signature);
sendTransaction trả về một đối tượng kết quả; chữ ký giao dịch nằm ở
result.context.signature. Nó xác nhận kế hoạch phù hợp với một giao dịch duy nhất và
ném lỗi nếu không — hãy dùng sendTransactions khi một batch có thể trải dài trên nhiều
giao dịch.
Chọn gói RPC
@solana/kit-plugin-rpc cung cấp các preset theo cluster:
solanaDevnetRpc()— mặc định devnet, airdrop được bật (client.airdrop).solanaMainnetRpc()— mainnet; airdrop là lỗi tại thời điểm biên dịch.solanaLocalRpc()—http://127.0.0.1:8899cho một validator cục bộ.solanaRpc({ rpcUrl })— bất kỳ endpoint nào.
import { solanaRpc } from "@solana/kit-plugin-rpc";const client = createClient().use(signer(payer)).use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));
Tổng hợp chi tiết
Các preset đóng gói kết nối RPC, trình lập kế hoạch, trình thực thi và các helper gửi, vì vậy
hầu hết các ứng dụng không bao giờ cần các thành phần riêng lẻ. Chỉ chuyển sang các plugin chi tiết
khi cần tùy chỉnh một cái — ví dụ trình lập kế hoạch tùy chỉnh hoặc kênh subscription khác. Hướng này cũng cần @solana/kit-plugin-instruction-plan, mà các
preset thường đã bao gồm sẵn cho bạn:
import {solanaRpcConnection,rpcAirdrop,rpcTransactionPlanner,rpcTransactionPlanExecutor} from "@solana/kit-plugin-rpc";import { planAndSendTransactions } from "@solana/kit-plugin-instruction-plan";const client = createClient().use(signer(payer)).use(solanaRpcConnection({ rpcUrl: "https://api.devnet.solana.com" })).use(rpcAirdrop()).use(rpcTransactionPlanner()).use(rpcTransactionPlanExecutor()).use(planAndSendTransactions());
Thêm các program client
Các gói @solana-program/* được tạo sẵn cung cấp các plugin client để các lệnh gọi chương trình
gắn kết với client. Cài đặt chương trình bạn cần và dùng .use() với plugin của nó:
import { tokenProgram } from "@solana-program/token";const client = createClient().use(signer(payer)).use(solanaDevnetRpc()).use(tokenProgram()); // adds client.token
Ký mà không cần ví trình duyệt
Đang chạy headless trong một API route, worker hay script? Hãy ký bằng dịch vụ quản lý khóa phía backend thay vì một keypair thô. Xem Keychain và Ký trong Môi trường Production.
Các mẫu phổ biến dành cho Solana dev
- Thiết lập dùng chung: Xây dựng client một lần trong một module lõi và import vào các script, route phía server và UI của bạn.
- Đọc dữ liệu phía server: Một client chỉ với
signer+solanaRpc(không có plugin ví) đọc các account và mô phỏng giao dịch từ server. - Kiểm thử cục bộ: Hoán đổi gói RPC bằng
.use(litesvm())từ@solana/kit-plugin-litesvmđể chạy với một validator trong bộ nhớ (chỉ Node). - Khả năng kiểm thử: Client được tổng hợp dễ dàng mock — stub các phản hồi RPC hoặc signer mà không cần ví trình duyệt.
Is this page helpful?