@solana/web3-compat

@solana/web3-compat è il ponte tra le app @solana/web3.js di lunga durata e il runtime più recente di Kit. Sostituisci l'import, mantieni la superficie che la tua app conosce già e adotta progressivamente le funzionalità di Kit senza riscrivere ogni helper o istruzione in una volta.

Installa con le dipendenze peer di Kit

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

Il livello di compatibilità ri-esporta i tipi classici di Web3 (Connection, PublicKey, Transaction, ecc.) delegando internamente al networking e ai codec di Kit. Mantieni i tuoi endpoint RPC esistenti, ma beneficia della gestione più prevedibile dei blockhash e delle astrazioni wallet di Kit.

Sostituisci gli import (nessun'altra modifica al codice)

La maggior parte dei progetti può migrare file per file cambiando la sorgente dell'import. Sia gli import nominati che quelli namespace rispecchiano il vecchio package.

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

Funziona anche con CommonJS:

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

Dietro le quinte Connection inoltra letture e scritture attraverso @solana/client, quindi helper come sendAndConfirmTransaction, simulateTransaction e getProgramAccounts beneficiano del runtime più recente senza toccare la tua logica di business.

Helper bridge quando hai bisogno dei tipi Kit

Man mano che adotti Kit direttamente (magari in nuovi componenti usando @solana/client o @solana/react-hooks), usa gli helper bridge forniti nel package compat per convertire tra i due ecosistemi:

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

Mescolare i runtime diventa sicuro: gli hook più recenti possono emettere istruzioni Kit, poi toWeb3Instruction le avvolgerà per i flussi legacy finché l'intero progetto non sarà migrato.

Pattern di migrazione progressiva

  • Rollout incrementali: aggiorna una cartella di funzionalità alla volta. Quando un modulo non necessita più di compat, puntalo direttamente a @solana/client/@solana/react-hooks senza toccare il resto dell'albero.
  • Ottimizzazione RPC condivisa: poiché compat si basa sulle connessioni Kit, l'ottimizzazione dei livelli di commitment, delle commissioni di prioritizzazione o degli URL RPC passa attraverso un singolo oggetto di configurazione.
  • Helper SPL + transazioni: mantieni per ora i builder di transazioni legacy, ma passa a client.helpers.transaction.prepare quando sei pronto. Compat può comunque inviare gli stessi payload firmati.
  • Testing: riutilizza i mock Web3 esistenti poiché la superficie pubblica rimane identica, ma durante i test puoi sostituire il client Kit per simulazioni più ricche.

Cosa viene fornito nella fase 0

  • Connection con getLatestBlockhash, getBalance, getAccountInfo, getProgramAccounts, getSignatureStatuses, sendRawTransaction, confirmTransaction, e simulateTransaction.
  • Utility come LAMPORTS_PER_SOL, sendAndConfirmTransaction, e compileFromCompat.
  • SystemProgram.transfer più tutte le primitive Web3 core (Keypair, Transaction, VersionedTransaction, TransactionInstruction).

La copertura è ancora in espansione

I metodi al di fuori dell'elenco sopra ricadono oggi sul legacy @solana/web3.js. Mantieni la vecchia dipendenza fino a quando il resto della tua superficie non arriva in compat, e monitora le versioni future per il supporto alle sottoscrizioni e una copertura RPC più ampia.

Abbina questa guida alla panoramica di @solana/client e alla guida di @solana/react-hooks quando sei pronto per initare a costruire nuove UI sulla base dello stesso runtime Kit.

Is this page helpful?

Indice

Modifica Pagina

Gestito da

© 2026 Solana Foundation.
Tutti i diritti riservati.
Rimani Connesso