@solana/kit παρέχει το createClient, έναν μικρό κεντρικό κόμβο που επεκτείνετε με plugins. Κάθε
plugin προσθέτει μια δυνατότητα — σύνδεση RPC, ένα signer, σχεδιασμό συναλλαγών —
και ο σύνθετος πελάτης υποστηρίζει scripts, διαδρομές διακομιστή και διεπαφές χρήστη εξίσου.
Δημιουργείτε εφαρμογή React; Ο οδηγός React τυλίγει τον
ίδιο πελάτη με το @solana/react, ώστε τα components να διαβάζουν την κατάσταση πορτοφολιού και δεδομένα RPC
μέσω hooks. Ξεκινήστε από εκεί και επιστρέψτε εδώ όταν χρειαστείτε πιο λεπτομερή έλεγχο.
Εγκατάσταση
$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?