@solana/web3-compat ist die Brücke zwischen langlebigen @solana/web3.js-Apps
und der neueren Kit-Laufzeitumgebung. Tauschen Sie den Import aus, behalten Sie
die Oberfläche bei, die Ihre App bereits kennt, und übernehmen Sie
Kit-Funktionen schrittweise, ohne jeden Helper oder jede Anweisung auf einmal
neu zu schreiben.
Installation mit Kit-Peers
$npm install @solana/web3-compat @solana/kit @solana/client
Die Kompatibilitätsschicht exportiert klassische Web3-Typen erneut
(Connection, PublicKey, Transaction usw.), während intern an Kit-Netzwerk
und Codecs delegiert wird. Behalten Sie Ihre bestehenden RPC-Endpunkte bei,
profitieren Sie aber von Kits vorhersehbarerer Blockhash-Verarbeitung und
Wallet-Abstraktionen.
Imports ersetzen (keine weiteren Code-Änderungen)
Die meisten Projekte können Datei für Datei migriert werden, indem die Import-Quelle gewechselt wird. Sowohl benannte als auch Namespace-Imports spiegeln das alte Paket wider.
import { Connection, PublicKey } from "@solana/web3.js";
import { Connection, PublicKey } from "@solana/web3-compat";
CommonJS funktioniert ebenfalls:
const solanaWeb3 = require("@solana/web3-compat");const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");
Im Hintergrund leitet Connection Lese- und Schreibvorgänge durch
@solana/client weiter, sodass Helfer wie sendAndConfirmTransaction,
simulateTransaction und getProgramAccounts von der neueren Laufzeitumgebung
profitieren, ohne Ihre Geschäftslogik anzufassen.
Bridge-Helfer, wenn Sie Kit-Typen benötigen
Wenn Sie Kit direkt übernehmen (vielleicht in neuen Komponenten mit
@solana/client oder @solana/react-hooks), verwenden Sie die Bridge-Helfer,
die im Compat-Paket enthalten sind, um zwischen den beiden Ökosystemen zu
konvertieren:
import {PublicKey,toAddress,toPublicKey,toWeb3Instruction,toKitSigner} from "@solana/web3-compat";const legacyKey = new PublicKey("11111111111111111111111111111111");const kitAddress = toAddress(legacyKey);const backToWeb3 = toPublicKey(kitAddress);
Das Mischen von Laufzeitumgebungen wird sicher: Neuere Hooks können
Kit-Anweisungen ausgeben, dann wird toWeb3Instruction sie für Legacy-Flows
umschließen, bis das gesamte Projekt umgestellt ist.
Progressive Migrationsmuster
- Schrittweise Einführung: Aktualisieren Sie jeweils einen Feature-Ordner.
Wenn ein Modul keine Kompatibilität mehr benötigt, verweisen Sie direkt auf
@solana/client/@solana/react-hooks, ohne den Rest des Baums anzufassen. - Gemeinsame RPC-Optimierung: Da die Kompatibilität auf Kit-Verbindungen basiert, fließt die Anpassung von Commitment-Levels, Priorisierungs-Fee oder RPC-URLs durch ein einziges Konfigurationsobjekt.
- SPL + Transaktions-Helfer: Behalten Sie vorerst
Legacy-Transaktions-Builder bei, aber greifen Sie auf
client.helpers.transaction.preparezurück, sobald Sie bereit sind. Die Kompatibilität kann weiterhin dieselben signierten Payloads übermitteln. - Testing: Verwenden Sie vorhandene Web3-Mocks wieder, da die öffentliche Oberfläche identisch bleibt, dennoch können Sie unter Test den Kit-Client für umfangreichere Simulationen stubben.
Was wird in Phase 0 ausgeliefert
ConnectionmitgetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransactionundsimulateTransaction.- Utilities wie
LAMPORTS_PER_SOL,sendAndConfirmTransactionundcompileFromCompat. SystemProgram.transferplus alle zentralen Web3-Primitive (Keypair,Transaction,VersionedTransaction,TransactionInstruction).
Abdeckung wird noch erweitert
Methoden außerhalb der obigen Liste greifen heute auf das
Legacy-@solana/web3.js zurück. Behalten Sie die alte Abhängigkeit bei, bis
der Rest Ihrer Oberfläche in der Kompatibilität landet, und verfolgen Sie
zukünftige Releases für Subscription-Unterstützung und breitere RPC-Abdeckung.
Kombinieren Sie diesen Leitfaden mit der @solana/client-Übersicht und dem @solana/react-hooks-Leitfaden, wenn Sie bereit sind, neu UI auf derselben Kit-Runtime aufzubauen.
Is this page helpful?