Kit πελάτη

@solana/kit παρέχει το createClient, έναν μικρό κεντρικό κόμβο που επεκτείνετε με plugins. Κάθε plugin προσθέτει μια δυνατότητα — σύνδεση RPC, ένα signer, σχεδιασμό συναλλαγών — και ο σύνθετος πελάτης υποστηρίζει scripts, διαδρομές διακομιστή και διεπαφές χρήστη εξίσου.

Δημιουργείτε εφαρμογή React; Ο οδηγός React τυλίγει τον ίδιο πελάτη με το @solana/react, ώστε τα components να διαβάζουν την κατάσταση πορτοφολιού και δεδομένα RPC μέσω hooks. Ξεκινήστε από εκεί και επιστρέψτε εδώ όταν χρειαστείτε πιο λεπτομερή έλεγχο.

Εγκατάσταση

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

Χρησιμοποιήστε οποιονδήποτε διαχειριστή πακέτων. Το Kit είναι v7+ και τα πακέτα @solana/kit-plugin-* είναι 0.13+.

Δημιουργία πελάτη

Συνθέστε plugins με .use(...). Ορίστε πρώτα ένα signer, και μετά τη σύνδεση RPC. Το solanaDevnetRpc() προσθέτει το client.rpc, subscriptions, τον σχεδιαστή/εκτελεστή συναλλαγών και τον βοηθό client.sendTransaction — έτσι μια εφαρμογή σπάνια χρειάζεται να συνδέσει αυτά τα κομμάτια μόνη της.

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 ορίζει τόσο τον πληρωτή τελών όσο και την ταυτότητα της εφαρμογής. Το πακέτο RPC απαιτεί να υπάρχει πληρωτής εκ των προτέρων, γι' αυτό η σειρά έχει σημασία.

Παραλλαγές Signer

Το @solana/kit-plugin-signer εκθέτει τρεις ρόλους, ώστε να παραχωρείτε μόνο όσα χρειάζεται ένας πελάτης:

  • signer(x) — ορίζει και το client.payer και το client.identity.
  • payer(x) — μόνο πληρωτής τελών.
  • identity(x) — μόνο αρχή εφαρμογής.

Κάθε ένας διαθέτει παραλλαγές *FromFile(path) (Node), generated*(), generated*WithSol(amount) και airdrop*() για δοκιμές και scripts.

Αποστολή συναλλαγής

Δημιουργήστε οδηγίες με έναν παραγόμενο πελάτη προγράμματος και μετά παραδώστε τις στο client.sendTransaction. Ο σχεδιαστής επιλύει το blockhash, εκτιμά τον υπολογισμό, υπογράφει με τον payer του πελάτη και υποβάλλει.

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 επιστρέφει ένα αντικείμενο αποτελέσματος· η υπογραφή συναλλαγής βρίσκεται στο result.context.signature. Ελέγχει ότι το πλάνο χωράει σε μία μόνο συναλλαγή και εκπέμπει σφάλμα διαφορετικά — χρησιμοποιήστε το sendTransactions όταν μια δέσμη ενδέχεται να καλύπτει πολλαπλές συναλλαγές.

Επιλογή πακέτου RPC

Το @solana/kit-plugin-rpc παρέχει προεπιλογές cluster:

  • solanaDevnetRpc() — προεπιλογές devnet, airdrop ενεργοποιημένο (client.airdrop).
  • solanaMainnetRpc() — mainnet· το airdrop είναι σφάλμα κατά τη μεταγλώττιση.
  • solanaLocalRpc()http://127.0.0.1:8899 για τοπικό validator.
  • solanaRpc({ rpcUrl }) — οποιοδήποτε endpoint.
import { solanaRpc } from "@solana/kit-plugin-rpc";
const client = createClient()
.use(signer(payer))
.use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));

Λεπτομερής σύνθεση

Οι προεπιλογές ομαδοποιούν τη σύνδεση RPC, τον σχεδιαστή, τον εκτελεστή και τους βοηθούς αποστολής, οπότε η πλειονότητα των εφαρμογών δεν χρειάζεται ποτέ τα επιμέρους κομμάτια. Χρησιμοποιήστε τα λεπτομερή plugins μόνο για να προσαρμόσετε ένα από αυτά — για παράδειγμα έναν προσαρμοσμένο σχεδιαστή ή διαφορετικό κανάλι subscription. Αυτή η διαδρομή απαιτεί επίσης το @solana/kit-plugin-instruction-plan, το οποίο οι προεπιλογές συμπεριλαμβάνουν για εσάς:

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

Προσθήκη clients προγράμματος

Τα παραγόμενα πακέτα @solana-program/* εκθέτουν plugins πελάτη ώστε οι κλήσεις προγράμματος να είναι προσβάσιμες μέσω του πελάτη. Εγκαταστήστε το πρόγραμμα που χρειάζεστε και χρησιμοποιήστε το .use() με το plugin του:

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

Υπογραφή χωρίς πορτοφόλι browser

Τρέχετε headless σε μια διαδρομή API, worker ή script; Υπογράψτε με μια υπηρεσία διαχείρισης κλειδιών backend αντί για ένα ακατέργαστο keypair. Δείτε Keychain και Υπογραφή στην Παραγωγή.

Κοινά μοτίβα για προγραμματιστές Solana

  • Κοινή διαμόρφωση: Δημιουργήστε τον πελάτη μία φορά σε ένα βασικό module και εισαγάγετέ τον σε scripts, διαδρομές διακομιστή και το UI σας.
  • Αναγνώσεις από πλευράς διακομιστή: Ένας πελάτης με μόνο signer + solanaRpc (χωρίς plugin πορτοφολιού) διαβάζει λογαριασμούς και προσομοιώνει συναλλαγές από τον διακομιστή.
  • Τοπικές δοκιμές: Αντικαταστήστε το πακέτο RPC με .use(litesvm()) από το @solana/kit-plugin-litesvm για εκτέλεση έναντι ενός in-memory validator (μόνο Node).
  • Δοκιμασιμότητα: Ο σύνθετος πελάτης είναι εύκολα δοκιμάσιμος — αντικαταστήστε τις αποκρίσεις RPC ή τους signers χωρίς πορτοφόλι browser.

Is this page helpful?

© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.