@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 μόνοι σας.
Συνήθη μοτίβα για προγραμματιστές Solana
- Headless state machines: Εκτελέστε τον client μέσα σε API routes, scripts ή workers για να επαναχρησιμοποιήσετε την ίδια λογική ενορχήστρωσης wallet + RPC που τροφοδοτεί το UI σας.
- Realtime dashboards: Συνδυάστε watchers (υπόλοιπα, λογαριασμούς, υπογραφές) με την προτιμώμενη βιβλιοθήκη UI σας· ο client χειρίζεται το websocket fan-out και την ακύρωση cache.
- Custom stores: Εισάγετε το δικό σας Zustand store για να ενυδατώσετε από IndexedDB/localStorage, να αντικατοπτρίσετε την κατάσταση σε server sessions ή να συντονίσετε μεταξύ καρτελών του προγράμματος περιήγησης.
- Bridge to React hooks: Περάστε μια διαμορφωμένη παρουσία client στο
@solana/react-hooksόταν θέλετε εργονομικά hooks πάνω στο ίδιο runtime. - Testability: Η ενιαία διεπαφή client μπορεί να προσομοιωθεί σε unit tests, διευκολύνοντας την προσομοίωση απαντήσεων RPC ή wallet sessions χωρίς την παρουσία wallet προγράμματος περιήγησης.
Is this page helpful?