@solana/web3-compat est le pont entre les applications @solana/web3.js de
longue durée et le runtime Kit plus récent. Changez l'import, conservez la
surface que votre application connaît déjà, et adoptez progressivement les
fonctionnalités Kit sans réécrire chaque helper ou instruction d'un coup.
Installer avec les dépendances Kit
$npm install @solana/web3-compat @solana/kit @solana/client
La couche de compatibilité ré-exporte les types Web3 classiques (Connection,
PublicKey, Transaction, etc.) tout en déléguant en interne au réseau Kit et
aux codecs. Conservez vos endpoints RPC existants, mais bénéficiez de la gestion
des blockhash plus prévisible de Kit et des abstractions de wallet.
Remplacer les imports (aucun autre changement de code)
La plupart des projets peuvent migrer fichier par fichier en changeant la source d'import. Les imports nommés et namespace reflètent l'ancien package.
import { Connection, PublicKey } from "@solana/web3.js";
import { Connection, PublicKey } from "@solana/web3-compat";
CommonJS fonctionne aussi :
const solanaWeb3 = require("@solana/web3-compat");const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");
En coulisses, Connection transmet les lectures et écritures via
@solana/client, donc les helpers comme sendAndConfirmTransaction,
simulateTransaction, et getProgramAccounts bénéficient du runtime plus
récent sans toucher à votre logique métier.
Helpers de pont quand vous avez besoin des types Kit
Au fur et à mesure que vous adoptez Kit directement (peut-être dans de nouveaux
composants utilisant @solana/client ou @solana/react-hooks), utilisez les
helpers de pont fournis dans le package compat pour convertir entre les deux
écosystèmes :
import {PublicKey,toAddress,toPublicKey,toWeb3Instruction,toKitSigner} from "@solana/web3-compat";const legacyKey = new PublicKey("11111111111111111111111111111111");const kitAddress = toAddress(legacyKey);const backToWeb3 = toPublicKey(kitAddress);
Mélanger les runtimes devient sûr : les hooks plus récents peuvent émettre des
instructions Kit, puis toWeb3Instruction les enveloppera pour les flux legacy
jusqu'à ce que l'ensemble du projet bascule.
Modèles de migration progressive
- Déploiements progressifs : mettez à jour un dossier de fonctionnalité à la
fois. Lorsqu'un module n'a plus besoin de compat, pointez-le directement vers
@solana/client/@solana/react-hookssans toucher au reste de l'arborescence. - Réglage RPC partagé : comme compat s'appuie sur les connexions Kit, le réglage des niveaux d'engagement, des frais de priorisation ou des URL RPC passe par un seul objet de configuration.
- Assistants SPL + transaction : conservez les constructeurs de transactions
legacy pour l'instant, mais utilisez
client.helpers.transaction.prepareune fois que vous êtes prêt. Compat peut toujours soumettre les mêmes charges utiles signées. - Tests : réutilisez les mocks Web3 existants puisque la surface publique reste identique, mais lors des tests vous pouvez simuler le client Kit pour des simulations plus riches.
Ce qui est livré dans la phase 0
ConnectionavecgetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransactionetsimulateTransaction.- Des utilitaires comme
LAMPORTS_PER_SOL,sendAndConfirmTransactionetcompileFromCompat. SystemProgram.transferplus toutes les primitives Web3 de base (Keypair,Transaction,VersionedTransaction,TransactionInstruction).
La couverture continue de s'étendre
Les méthodes en dehors de la liste ci-dessus se rabattent aujourd'hui sur le
@solana/web3.js legacy. Conservez l'ancienne dépendance jusqu'à ce que le
reste de votre surface arrive dans compat, et suivez les versions futures pour
la prise en charge des abonnements et une couverture RPC plus large.
Associez ce guide avec la présentation de @solana/client et le guide @solana/react-hooks lorsque vous êtes prêt à commencer à construire une nouvelle interface utilisateur sur le même runtime Kit.
Is this page helpful?