@solana/client pitää ajonaikaisympäristön kevyenä. Yksi store, yksi RPC-pino
ja wallet-rekisteri ohjaavat eri apuvälineitä, joten sama instanssi voi tukea
CLI-työkaluja, skriptejä tai täysiä käyttöliittymiä. Actionit, watcherit ja
helperit jakavat välimuistin, tilaukset ja wallet-istunnot tämän yhden clientin
kautta.
Kun rakennat puhtaasti React-pohjaista käyttökokemusta, on yleensä nopeampaa
aloittaa @solana/react-hooks -paketilla.
Hooks-paketti käärii saman client-ajonaikaisympäristön ja tarjoaa valmiit
hookit, joten käytät headless clientia vain silloin, kun tarvitset
lisäkontrollia.
Asennus
$npm install @solana/client
Käytä mitä tahansa paketinhallintaa; client toimii selaimissa, workereissa, Reactissa, Sveltessä tai palvelinpuolen ajonaikaisympäristöissä.
Luo client kerran
Valitse Wallet Standard -liittimet (automaattinen löytäminen on nopein tapa aloittaa), ja luo sitten client. Tämä yksittäinen objekti tarjoaa storen, actionit, watcherit ja helperit.
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 seuraa klusterin konfiguraatiota, tilauksia, odottavia transaktioita ja wallet-istuntoja. Voit tarjota oman Zustand-storen, jos tarvitset pysyvyyttä tai usean välilehden koordinointia.
Wallet-orkestrointi
Liittimet kapseloivat Wallet Standard -metadatan sekä yhdistämis- ja
katkaisulogiikan. Rekisteröi sisäänrakennetut phantom(), solflare(),
backpack() tai autoDiscover() -helperit, tai kääri mukautetut providerit
createWalletStandardConnector -toiminnolla. Kaikki wallet-actionit (yhdistä,
katkaise, allekirjoita, lähetä) kulkevat client-rekisterin kautta, joten
jokainen kuluttaja pysyy synkronoituna.
Actionit, watcherit ja helperit
- Actionit käärivät yleiset RPC-luku- ja kirjoitusoperaatiot samalla
päivittäen storea (esim.
fetchAccount,requestAirdrop,setCluster). - Watcherit multipleksoivat websocket-tilaukset, suoratoistavat päivitykset storeen ja antavat sinulle abort-kahvat siivousta varten.
- Helperit tarjoavat korkeamman tason toimintoja, kuten SOL-siirrot, SPL token -helperit, allekirjoitusten pollauksen ja transaktiopoolit.
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();
Transaktioavustajan malli
Transaktioavustaja hallinnoi blockhash-päivitystä, maksajan määritystä ja allekirjoitusta. Voit valmistella, tarkastaa ja lähettää haluamallasi käyttöliittymällä.
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());
Käytä prepareAndSend valmiiseen prosessiin (simulaatio ja lokitus) tai kutsu
sign / toWire kerätäksesi allekirjoitukset manuaalisesti ennen wire-muodon
välittämistä itse.
Käytätkö headless-tilaa — API-reitissä, workerissa tai skriptissä ilman selainlompakkoa? Allekirjoita taustajärjestelmän avainhallintopalvelulla raakamuotoisen keypair:in sijaan. Katso Keychain ja Allekirjoittaminen tuotannossa.
Yleisiä malleja Solana-kehittäjille
- Headless-tilakone: Aja asiakasta API-reiteissä, skripteissä tai workereissa hyödyntääksesi samaa lompakko- ja RPC-orkestrointilogiikkaa, joka toimii käyttöliittymässäsi.
- Reaaliaikaiset koontinäytöt: Yhdistä tarkkailijat (saldot, tilit, allekirjoitukset) haluamaasi käyttöliittymäkirjastoon; asiakas hallitsee websocket-jakelun ja välimuistin invalidoinnin.
- Mukautetut storeet: Injektoi oma Zustand-storea hydratoidaksesi IndexedDB:stä/localStoragesta, peilataksesi tilaa palvelinistuntoihin tai koordinoidaksesi selainvälilehtien välillä.
- Silta React-hookeihin: Välitä konfiguroitu asiakasinstanssi
@solana/react-hooks:lle, kun haluat ergonomiset hookit saman ajonaikaisen ympäristön päälle. - Testattavuus: Yksittäinen asiakasrajapinta voidaan mockita yksikkötesteissä, mikä helpottaa RPC-vastausten tai lompakkoistuintojen simulointia ilman selaimen lompakkoa.
Is this page helpful?