Kit client

@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

Terminal
$
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.payer lẫn client.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:8899 cho 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 KeychainKý 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?

Mục lục

Chỉnh sửa trang