Kit-client

@solana/kit levert createClient, een kleine host die je uitbreidt met plugins. Elke plugin voegt een mogelijkheid toe — een RPC-verbinding, een signer, transactieplanning — en de samengestelde client ondersteunt scripts, serverroutes en UI's gelijkelijk.

Bouw je een React-app? De React-gids omhult deze zelfde client met @solana/react, zodat componenten de walletstatus en RPC-gegevens via hooks uitlezen. Begin daar en keer hier terug wanneer je meer controle nodig hebt.

Installeren

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

Gebruik een willekeurige pakketbeheerder. Kit is v7+ en de @solana/kit-plugin-*-pakketten zijn 0.13+.

Een client aanmaken

Combineer plugins met .use(...). Stel eerst een signer in, daarna de RPC-verbinding. solanaDevnetRpc() voegt client.rpc, abonnementen, de transactie- planner/uitvoerder en de hulpfunctie client.sendTransaction toe — zodat een app die onderdelen zelden zelf hoeft te koppelen.

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

De signer-plugin stelt zowel de betalende partij als de app-identiteit in. Het RPC-pakket vereist dat er eerst een betaler aanwezig is, daarom is de volgorde belangrijk.

Signer-varianten

@solana/kit-plugin-signer biedt drie rollen, zodat je alleen verleent wat een client nodig heeft:

  • signer(x) — stelt zowel client.payer als client.identity in.
  • payer(x) — alleen betalende partij.
  • identity(x) — alleen app-autoriteit.

Elke rol heeft varianten *FromFile(path) (Node), generated*(), generated*WithSol(amount) en airdrop*() voor tests en scripts.

Een transactie versturen

Bouw instructies met een gegenereerde programma-client en geef ze door aan client.sendTransaction. De planner lost de blockhash op, schat het rekengebruik, tekent met de betaler van de client en dient in.

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 geeft een resultaatobject terug; de transactiehandtekening staat bij result.context.signature. Het controleert of het plan in één transactie past en gooit anders een fout — gebruik sendTransactions wanneer een batch meerdere transacties kan omvatten.

Een RPC-pakket kiezen

@solana/kit-plugin-rpc levert cluster-presets:

  • solanaDevnetRpc() — devnet-standaarden, airdrop ingeschakeld (client.airdrop).
  • solanaMainnetRpc() — mainnet; airdrop is een compilatiefout.
  • solanaLocalRpc()http://127.0.0.1:8899 voor een lokale validator.
  • solanaRpc({ rpcUrl }) — elk eindpunt.
import { solanaRpc } from "@solana/kit-plugin-rpc";
const client = createClient()
.use(signer(payer))
.use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));

Granulair samenstellen

De presets bundelen de RPC-verbinding, planner, uitvoerder en verzendhulpfuncties, zodat de meeste apps de afzonderlijke onderdelen nooit nodig hebben. Gebruik de granulaire plugins alleen om één onderdeel aan te passen — bijvoorbeeld een aangepaste planner of een ander abonnementskanaal. Dit pad vereist ook @solana/kit-plugin-instruction-plan, dat de presets anders voor je meenemen:

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

Programma-clients toevoegen

Gegenereerde @solana-program/*-pakketten bieden client-plugins zodat programma-aanroepen aan de client hangen. Installeer het benodigde programma en gebruik .use() met zijn plugin:

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

Ondertekenen zonder een browserportemonnee

Draait u headless in een API-route, worker of script? Onderteken met een backend- sleutelbeheerservice in plaats van een ruw keypair. Zie Keychain en Ondertekenen in productie.

Veelvoorkomende patronen voor Solana-ontwikkelaars

  • Gedeelde setup: Bouw de client eenmalig in een kernmodule en importeer hem in scripts, serverroutes en je UI.
  • Leesacties aan de serverzijde: Een client met alleen signer + solanaRpc (geen wallet- plugin) leest accounts en simuleert transacties vanaf de server.
  • Lokaal testen: Vervang het RPC-pakket door .use(litesvm()) uit @solana/kit-plugin-litesvm om te draaien tegen een in-memory validator (alleen Node).
  • Testbaarheid: De samengestelde client is eenvoudig te mocken — stub RPC-antwoorden of signers zonder een aanwezige browserportemonnee.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.