@solana/web3-compat

@solana/web3-compat to most pomiędzy długo działającymi aplikacjami @solana/web3.js a nowym środowiskiem uruchomieniowym Kit. Wystarczy zamienić import, zachowując interfejs, który Twoja aplikacja już zna, i stopniowo wdrażać funkcje Kit bez konieczności przepisywania wszystkich helperów czy instrukcji naraz.

Instalacja z zależnościami Kit

Terminal
$
npm install @solana/web3-compat @solana/kit @solana/client

Warstwa kompatybilności ponownie eksportuje klasyczne typy Web3 (Connection, PublicKey, Transaction itd.), jednocześnie wewnętrznie korzystając z sieci i kodeków Kit. Zachowaj swoje dotychczasowe endpointy RPC, ale korzystaj z bardziej przewidywalnej obsługi blockhashy i abstrakcji portfela oferowanych przez Kit.

Zamień importy (bez innych zmian w kodzie)

Większość projektów może migrować plik po pliku, zmieniając tylko źródło importu. Zarówno importy nazwane, jak i przestrzenne odzwierciedlają starą paczkę.

Before
import { Connection, PublicKey } from "@solana/web3.js";
After
import { Connection, PublicKey } from "@solana/web3-compat";

CommonJS też działa:

const solanaWeb3 = require("@solana/web3-compat");
const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");

Za kulisami Connection przekazuje odczyty i zapisy przez @solana/client, więc helpery takie jak sendAndConfirmTransaction, simulateTransaction i getProgramAccounts korzystają z nowego środowiska uruchomieniowego bez ingerencji w logikę biznesową.

Mostkuj helpery, gdy potrzebujesz typów Kit

Gdy zaczniesz korzystać z Kit bezpośrednio (np. w nowych komponentach używających @solana/client lub @solana/react-hooks), użyj helperów mostkujących dostępnych w paczce compat, aby konwertować między tymi ekosystemami:

import {
PublicKey,
toAddress,
toPublicKey,
toWeb3Instruction,
toKitSigner
} from "@solana/web3-compat";
const legacyKey = new PublicKey("11111111111111111111111111111111");
const kitAddress = toAddress(legacyKey);
const backToWeb3 = toPublicKey(kitAddress);

Mieszanie środowisk staje się bezpieczne: nowsze hooki mogą emitować instrukcje Kit, a następnie toWeb3Instruction opakuje je dla starszych przepływów, dopóki cały projekt nie przejdzie na nowe rozwiązanie.

Wzorce stopniowej migracji

  • Stopniowe wdrażanie: Aktualizuj jedną funkcjonalność (folder) na raz. Gdy moduł nie potrzebuje już warstwy kompatybilności, skieruj go bezpośrednio na @solana/client/@solana/react-hooks, nie zmieniając reszty drzewa.
  • Wspólna konfiguracja RPC: Ponieważ warstwa kompatybilności korzysta z połączeń Kit, dostrajanie poziomów commitment, opłat priorytetowych czy adresów URL RPC odbywa się przez jeden obiekt konfiguracyjny.
  • SPL + pomocniki transakcyjne: Zachowaj dotychczasowe kreatory transakcji, ale sięgnij po client.helpers.transaction.prepare, gdy będziesz gotowy. Warstwa kompatybilności nadal może przesyłać te same podpisane payloady.
  • Testowanie: Wykorzystaj istniejące mocki Web3, ponieważ publiczny interfejs pozostaje identyczny, a w testach możesz podmienić klienta Kit, by uzyskać bogatsze symulacje.

Co zawiera Faza 0

  • Connection z getLatestBlockhash, getBalance, getAccountInfo, getProgramAccounts, getSignatureStatuses, sendRawTransaction, confirmTransaction oraz simulateTransaction.
  • Narzędzia takie jak LAMPORTS_PER_SOL, sendAndConfirmTransaction oraz compileFromCompat.
  • SystemProgram.transfer oraz wszystkie podstawowe prymitywy Web3 (Keypair, Transaction, VersionedTransaction, TransactionInstruction).

Pokrycie funkcjonalności wciąż się rozszerza

Metody spoza powyższej listy obecnie korzystają z dotychczasowej warstwy @solana/web3.js. Zachowaj starą zależność, dopóki reszta Twojego kodu nie przejdzie na warstwę kompatybilności i śledź kolejne wydania pod kątem wsparcia subskrypcji oraz szerszego pokrycia RPC.

Połącz ten przewodnik z @solana/client overview oraz @solana/react-hooks guide, gdy będziesz gotowy, by zacząć budować nowe UI na tym samym runtime Kit.

Is this page helpful?

Spis treści

Edytuj stronę

Zarządzane przez

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