@solana/client

@solana/client utrzymuje runtime w lekkiej formie. Jeden store, jeden stos RPC i rejestr portfeli zasilają różne helpery, dzięki czemu ta sama instancja może obsługiwać CLI, skrypty lub pełne interfejsy użytkownika. Akcje, watchery i helpery współdzielą cache, subskrypcje i sesje portfela przez tego jednego klienta.

Jeśli budujesz doświadczenie wyłącznie w React, zwykle szybciej jest zacząć od @solana/react-hooks. Pakiet hooks opakowuje ten sam runtime klienta i udostępnia gotowe hooki, więc sięgasz po bezgłowego klienta tylko wtedy, gdy potrzebujesz większej kontroli.

Instalacja

Terminal
$
npm install @solana/client

Użyj dowolnego menedżera pakietów; klient działa w przeglądarkach, workerach, React, Svelte lub środowiskach serwerowych.

Utwórz klienta tylko raz

Wybierz konektory Wallet Standard (auto-detekcja to najszybszy sposób na start), a następnie utwórz klienta. Ten pojedynczy obiekt udostępnia store, akcje, watchery i helpery.

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 klienta śledzi konfigurację klastra, subskrypcje, oczekujące transakcje i sesje portfela. Możesz podać własny store Zustand, jeśli potrzebujesz trwałości lub koordynacji między kartami.

Orkiestracja portfeli

Konektory kapsułkują metadane Wallet Standard oraz logikę połączenia/rozłączenia. Zarejestruj wbudowane phantom(), solflare(), backpack() lub autoDiscover() helpery albo opakuj własnych providerów za pomocą createWalletStandardConnector. Wszystkie akcje portfela (połącz, rozłącz, podpisz, wyślij) przechodzą przez rejestr klienta, dzięki czemu każdy konsument pozostaje zsynchronizowany.

Akcje, watchery i helpery

  • Akcje opakowują typowe odczyty i zapisy RPC, aktualizując przy tym store (np. fetchAccount, requestAirdrop, setCluster).
  • Watchery multipleksują subskrypcje websocket, przesyłają aktualizacje do store i udostępniają uchwyty do anulowania dla czyszczenia.
  • Helpery udostępniają wyższe poziomy przepływów, takie jak transfery SOL, helpery tokenów SPL, polling podpisów i pule transakcji.
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();

Wzorzec pomocnika transakcji

Pomocnik transakcji odpowiada za odświeżanie blockhash, wybór płatnika opłat oraz podpisywanie. Możesz przygotować, sprawdzić i wysłać transakcję w dowolny sposób, który najlepiej pasuje do twojego UX.

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());

Użyj prepareAndSend dla gotowego przepływu (symulacja plus logowanie) lub wywołaj sign / toWire, aby zebrać podpisy ręcznie, zanim samodzielnie przekażesz format wire.

Typowe wzorce dla deweloperów Solana

  • Bezgłowe maszyny stanów: Uruchamiaj klienta wewnątrz tras API, skryptów lub workerów, aby ponownie wykorzystać tę samą logikę orkiestracji portfela + RPC, która zasila twoje UI.
  • Pulpity na żywo: Połącz watchery (salda, konta, podpisy) z wybraną przez siebie biblioteką UI; klient obsługuje rozsyłanie przez websockety i unieważnianie cache.
  • Własne store'y: Wstrzyknij własny store Zustand, aby zasilać dane z IndexedDB/localStorage, synchronizować stan z sesjami serwera lub koordynować między kartami przeglądarki.
  • Most do React hooks: Przekaż skonfigurowaną instancję klienta do @solana/react-hooks, gdy chcesz korzystać z ergonomicznych hooków na tej samej platformie.
  • Testowalność: Jeden interfejs klienta można mockować w testach jednostkowych, co ułatwia symulowanie odpowiedzi RPC lub sesji portfela bez obecności portfela w przeglądarce.

Is this page helpful?

Spis treści

Edytuj stronę

Zarządzane przez

© 2026 Solana Foundation.
Wszelkie prawa zastrzeżone.
Bądź na bieżąco