@solana/client menjaga permukaan runtime tetap ramping. Satu store, satu stack
RPC, dan registry wallet menggerakkan berbagai helper sehingga instance yang
sama dapat mendukung CLI, skrip, atau UI lengkap. Action, watcher, dan helper
semuanya berbagi cache, subscription, dan sesi wallet melalui klien tunggal
tersebut.
Ketika Anda membangun pengalaman React murni, biasanya lebih cepat untuk
memulai dengan @solana/react-hooks. Paket
hooks membungkus runtime klien yang sama ini dan menyediakan hooks siap pakai
sehingga Anda hanya turun ke klien headless ketika Anda memerlukan kontrol
ekstra.
Install
$npm install @solana/client
Gunakan package manager apa pun; klien berjalan di browser, worker, React, Svelte, atau runtime sisi server.
Buat klien sekali
Pilih konektor Wallet Standard (auto discovery adalah cara tercepat untuk memulai), kemudian buat klien. Objek tunggal ini menyediakan store, action, watcher, dan helper.
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());
Store klien melacak konfigurasi cluster, subscription, transaksi pending, dan sesi wallet. Anda dapat menyediakan store Zustand Anda sendiri jika Anda memerlukan persistensi atau koordinasi multi-tab.
Orkestrasi wallet
Konektor mengenkapsulasi metadata Wallet Standard ditambah logika
connect/disconnect. Daftarkan helper bawaan phantom(), solflare(),
backpack(), atau autoDiscover(), atau bungkus provider kustom dengan
createWalletStandardConnector. Semua action wallet (connect, disconnect, sign,
send) mengalir melalui registry klien sehingga setiap konsumen tetap sinkron.
Action, watcher, dan helper
- Action membungkus pembacaan dan penulisan RPC umum sambil memperbarui
store (misalnya,
fetchAccount,requestAirdrop,setCluster). - Watcher melakukan multipleks subscription websocket, mengalirkan update ke dalam store, dan memberi Anda handle abort untuk cleanup.
- Helper menyediakan alur tingkat tinggi seperti transfer SOL, helper token SPL, polling signature, dan pool transaksi.
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();
Pola transaction helper
Transaction helper mengelola pembaruan blockhash, resolusi fee payer, dan penandatanganan. Anda dapat mempersiapkan, memeriksa, dan mengirim dengan UX apa pun yang Anda inginkan.
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());
Gunakan prepareAndSend untuk alur yang sudah jadi (simulasi plus logging) atau
panggil sign / toWire untuk mengumpulkan tanda tangan secara manual sebelum
meneruskan format wire sendiri.
Pola umum untuk developer Solana
- Mesin state headless: Jalankan client di dalam route API, skrip, atau worker untuk menggunakan kembali logika orkestrasi wallet + RPC yang sama yang menggerakkan UI Anda.
- Dashboard realtime: Gabungkan watcher (saldo, akun, tanda tangan) dengan library UI pilihan Anda; client menangani fan-out websocket dan invalidasi cache.
- Store kustom: Injeksi store Zustand Anda sendiri untuk hidrasi dari IndexedDB/localStorage, mirror state ke sesi server, atau koordinasi antar tab browser.
- Bridge ke React hooks: Teruskan instance client yang sudah dikonfigurasi
ke
@solana/react-hooksketika Anda menginginkan hooks yang ergonomis di atas runtime yang sama. - Testability: Interface client tunggal dapat di-mock dalam unit test, memudahkan simulasi respons RPC atau sesi wallet tanpa kehadiran wallet browser.
Is this page helpful?