Kit klien

@solana/kit menyertakan createClient, sebuah host kecil yang dapat kamu perluas dengan plugin. Setiap plugin menambahkan kemampuan — koneksi RPC, penanda tangan, perencanaan transaksi — dan klien yang telah disusun mendukung skrip, rute server, maupun UI sekaligus.

Sedang membangun aplikasi React? Panduan React membungkus klien yang sama dengan @solana/react sehingga komponen dapat membaca status wallet dan data RPC melalui hook. Mulailah dari sana dan kembali ke sini saat kamu membutuhkan kontrol yang lebih detail.

Instalasi

Terminal
$
npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer

Gunakan package manager apa pun. Kit versi v7+ dan paket @solana/kit-plugin-* adalah 0.13+.

Membuat klien

Susun plugin dengan .use(...). Atur penanda tangan terlebih dahulu, lalu koneksi RPC. solanaDevnetRpc() menambahkan client.rpc, langganan, perencana/eksekutor transaksi, dan helper client.sendTransaction — sehingga aplikasi jarang perlu mengaitkan bagian-bagian tersebut secara manual.

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 menetapkan baik pembayar biaya maupun identitas aplikasi. Bundel RPC memerlukan pembayar yang sudah ditetapkan terlebih dahulu, itulah mengapa urutan pemasangan penting.

Varian penanda tangan

@solana/kit-plugin-signer menyediakan tiga peran sehingga kamu hanya memberikan izin yang dibutuhkan klien:

  • signer(x) — menetapkan client.payer dan client.identity sekaligus.
  • payer(x) — hanya sebagai pembayar biaya.
  • identity(x) — hanya sebagai otoritas aplikasi.

Masing-masing memiliki varian *FromFile(path) (Node), generated*(), generated*WithSol(amount), dan airdrop*() untuk keperluan pengujian dan skrip.

Mengirim transaksi

Bangun instruksi dengan klien program yang telah digenerate, lalu serahkan ke client.sendTransaction. Perencana akan menyelesaikan blockhash, memperkirakan komputasi, menandatangani dengan pembayar klien, dan mengirimkan transaksi.

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 menghasilkan objek hasil; tanda tangan transaksi ada di result.context.signature. Fungsi ini memastikan rencana sesuai dalam satu transaksi dan melempar error jika tidak — gunakan sendTransactions jika batch dapat mencakup beberapa transaksi.

Pilih bundel RPC

@solana/kit-plugin-rpc menyertakan preset kluster:

  • solanaDevnetRpc() — default devnet, airdrop diaktifkan (client.airdrop).
  • solanaMainnetRpc() — mainnet; airdrop akan menghasilkan error saat kompilasi.
  • solanaLocalRpc()http://127.0.0.1:8899 untuk validator lokal.
  • solanaRpc({ rpcUrl }) — endpoint apa pun.
import { solanaRpc } from "@solana/kit-plugin-rpc";
const client = createClient()
.use(signer(payer))
.use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));

Susun secara granular

Preset membundel koneksi RPC, perencana, eksekutor, dan helper pengiriman, sehingga kebanyakan aplikasi tidak perlu menggunakan setiap bagian secara terpisah. Turun ke plugin granular hanya jika ingin mengkustomisasi satu bagian — misalnya perencana kustom atau saluran langganan yang berbeda. Jalur ini juga memerlukan @solana/kit-plugin-instruction-plan, yang otomatis disertakan oleh preset:

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());

Tambahkan klien program

Paket @solana-program/* yang digenerate mengekspos plugin klien sehingga pemanggilan program terhubung ke klien. Instal program yang kamu butuhkan dan gunakan .use() dengan plugin-nya:

import { tokenProgram } from "@solana-program/token";
const client = createClient()
.use(signer(payer))
.use(solanaDevnetRpc())
.use(tokenProgram()); // adds client.token

Penandatanganan tanpa wallet browser

Menjalankan headless di rute API, worker, atau skrip? Gunakan layanan manajemen kunci backend alih-alih keypair mentah. Lihat Keychain dan Penandatanganan di Produksi.

Pola umum untuk developer Solana

  • Setup bersama: Bangun klien sekali di modul inti dan impor ke skrip, rute server, dan UI kamu.
  • Pembacaan sisi server: Klien hanya dengan signer + solanaRpc (tanpa plugin wallet) membaca akun dan mensimulasikan transaksi dari server.
  • Pengujian lokal: Ganti bundel RPC dengan .use(litesvm()) dari @solana/kit-plugin-litesvm untuk menjalankan terhadap validator dalam memori (hanya Node).
  • Kemudahan pengujian: Klien yang telah disusun mudah di-mock — stub respons RPC atau penanda tangan tanpa perlu wallet browser.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.