@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
$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 zowelclient.payeralsclient.identityin.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:8899voor 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-litesvmom 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?