@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
$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)— menetapkanclient.payerdanclient.identitysekaligus.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:8899untuk 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-litesvmuntuk 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?