@solana/client διατηρεί την επιφάνεια του runtime ελαφριά. Ένα store, ένα RPC
stack και ένα wallet registry τροφοδοτούν τα διάφορα helpers ώστε το ίδιο
instance να μπορεί να υποστηρίζει CLIs, scripts ή πλήρη UIs. Τα actions,
watchers και helpers μοιράζονται cache, subscriptions και wallet sessions μέσω
αυτού του μοναδικού client.
Όταν δημιουργείτε μια καθαρά React εμπειρία, είναι συνήθως πιο γρήγορο να
ξεκινήσετε με το @solana/react-hooks. Το
πακέτο hooks περιτυλίγει το ίδιο client runtime και εκθέτει έτοιμα hooks ώστε
να χρησιμοποιείτε το headless client μόνο όταν χρειάζεστε επιπλέον έλεγχο.
Εγκατάσταση
$npm install @solana/client
Χρησιμοποιήστε οποιονδήποτε package manager· το client εκτελείται σε browsers, workers, React, Svelte ή server-side runtimes.
Δημιουργήστε έναν client μία φορά
Επιλέξτε Wallet Standard connectors (η αυτόματη ανακάλυψη είναι ο πιο γρήγορος τρόπος για να ξεκινήσετε), στη συνέχεια δημιουργήστε τον client. Αυτό το μοναδικό object εκθέτει το store, actions, watchers και helpers.
import { autoDiscover, createClient } from "@solana/client";const client = createClient({endpoint: "https://api.devnet.solana.com",websocketEndpoint: "wss://api.devnet.solana.com",walletConnectors: autoDiscover()});await client.actions.connectWallet("wallet-standard:phantom");const balance = await client.actions.fetchBalance("Fke...address");console.log(balance.lamports?.toString());
Το client store παρακολουθεί τη διαμόρφωση του cluster, subscriptions, εκκρεμείς συναλλαγές και wallet sessions. Μπορείτε να παρέχετε το δικό σας Zustand store αν χρειάζεστε persistence ή συντονισμό πολλαπλών tabs.
Ενορχήστρωση wallet
Τα connectors ενσωματώνουν Wallet Standard metadata συν τη λογική
connect/disconnect. Καταχωρίστε τα ενσωματωμένα phantom(), solflare(),
backpack() ή autoDiscover() helpers, ή περιτυλίξτε custom providers με το
createWalletStandardConnector. Όλα τα wallet actions (connect, disconnect,
sign, send) διέρχονται μέσω του client registry ώστε κάθε consumer να παραμένει
συγχρονισμένος.
Actions, watchers και helpers
- Τα actions περιτυλίγουν κοινές RPC αναγνώσεις και εγγραφές ενώ ενημερώνουν
το store (π.χ.,
fetchAccount,requestAirdrop,setCluster). - Τα watchers πολυπλέκουν websocket subscriptions, μεταδίδουν ενημερώσεις στο store και σας δίνουν abort handles για καθαρισμό.
- Τα helpers εκθέτουν ροές υψηλότερου επιπέδου όπως μεταφορές SOL, SPL token helpers, polling υπογραφών και transaction pools.
const abortWatcher = client.watchers.watchBalance({ address: "Fke...address" },(lamports) => {console.log("live balance", lamports.toString());});// Later when the component unmounts or the flow endsabortWatcher.abort();
Μοτίβο βοηθού συναλλαγών
Ο βοηθός συναλλαγών διαχειρίζεται την ανανέωση του blockhash, την επίλυση του πληρωτή τελών και την υπογραφή. Μπορείτε να προετοιμάσετε, να επιθεωρήσετε και να στείλετε με όποια εμπειρία χρήστη προτιμάτε.
const prepared = await client.helpers.transaction.prepare({authority: client.store.getState().wallet.session!,instructions: [instructionA, instructionB]});await client.helpers.transaction.simulate(prepared, {commitment: "processed"});const signature = await client.helpers.transaction.send(prepared);console.log("submitted", signature.toString());
Χρησιμοποιήστε το prepareAndSend για μια προκατασκευασμένη ροή (προσομοίωση
συν καταγραφή) ή καλέστε τα sign / toWire για να συλλέξετε υπογραφές
χειροκίνητα πριν μεταδώσετε τη μορφή wire μόνοι σας.
Εκτέλεση χωρίς περιβάλλον εργασίας — σε ένα API route, worker ή script χωρίς πορτοφόλι περιηγητή; Υπογράψτε με μια υπηρεσία διαχείρισης κλειδιών backend αντί για ένα ακατέργαστο keypair. Δείτε Keychain και Signing in Production.
Κοινά μοτίβα για προγραμματιστές Solana
- Μηχανές κατάστασης χωρίς περιβάλλον εργασίας: Εκτελέστε τον client εντός API routes, scripts ή workers για να επαναχρησιμοποιήσετε την ίδια λογική ενορχήστρωσης wallet + RPC που τροφοδοτεί το UI σας.
- Dashboards σε πραγματικό χρόνο: Συνδυάστε watchers (υπόλοιπα, λογαριασμοί, υπογραφές) με την προτιμώμενη βιβλιοθήκη UI σας· ο client διαχειρίζεται την κατανομή websocket και την ακύρωση cache.
- Προσαρμοσμένα stores: Εισάγετε το δικό σας Zustand store για ενυδάτωση από IndexedDB/localStorage, αντιγραφή κατάστασης σε server sessions ή συντονισμό μεταξύ καρτελών περιηγητή.
- Σύνδεση με React hooks: Περάστε μια διαμορφωμένη παρουσία client στο
@solana/react-hooksόταν θέλετε εργονομικά hooks πάνω στο ίδιο runtime. - Δυνατότητα δοκιμών: Η ενιαία διεπαφή client μπορεί να προσομοιωθεί σε unit tests, καθιστώντας εύκολη την προσομοίωση αποκρίσεων RPC ή sessions πορτοφολιού χωρίς παρόν πορτοφόλι περιηγητή.
Is this page helpful?