@solana/client

@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

Terminal
$
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 ends
abortWatcher.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.

Menjalankan headless — di rute API, worker, atau skrip tanpa wallet browser? Tandatangani dengan layanan manajemen kunci backend alih-alih keypair mentah. Lihat Keychain dan Penandatanganan dalam Produksi.

Pola umum untuk pengembang Solana

  • State machine headless: Jalankan klien di dalam rute API, skrip, atau worker untuk menggunakan kembali logika orkestrasi wallet + RPC yang sama yang menggerakkan UI Anda.
  • Dasbor realtime: Gabungkan watcher (saldo, akun, tanda tangan) dengan pustaka UI pilihan Anda; klien menangani fan-out websocket dan invalidasi cache.
  • Store kustom: Injeksikan store Zustand Anda sendiri untuk menghidrasi dari IndexedDB/localStorage, mencerminkan state ke sesi server, atau berkoordinasi antar tab browser.
  • Jembatan ke React hooks: Teruskan instance klien yang telah dikonfigurasi ke @solana/react-hooks saat Anda menginginkan hooks yang ergonomis di atas runtime yang sama.
  • Kemampuan pengujian: Antarmuka klien tunggal dapat di-mock dalam pengujian unit, sehingga mudah untuk mensimulasikan respons RPC atau sesi wallet tanpa wallet browser.

Is this page helpful?

Daftar Isi

Edit Halaman