@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
$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ę.
import { Connection, PublicKey } from "@solana/web3.js";
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
ConnectionzgetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransactionorazsimulateTransaction.- Narzędzia takie jak
LAMPORTS_PER_SOL,sendAndConfirmTransactionorazcompileFromCompat. SystemProgram.transferoraz 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?