@solana/web3-compat é a ponte entre aplicações @solana/web3.js de longa
duração e o runtime mais recente do Kit. Troque a importação, mantenha a
interface que a sua aplicação já conhece e adote progressivamente
funcionalidades do Kit sem reescrever cada helper ou instrução de uma só vez.
Instalar com dependências do Kit
$npm install @solana/web3-compat @solana/kit @solana/client
A camada de compatibilidade reexporta tipos clássicos do Web3 (Connection,
PublicKey, Transaction, etc.) enquanto internamente delega para networking e
codecs do Kit. Mantenha os seus endpoints RPC existentes, mas beneficie do
tratamento de blockhash mais previsível do Kit e abstrações de carteira.
Substituir importações (sem outras alterações de código)
A maioria dos projetos pode migrar ficheiro a ficheiro ao trocar a origem da importação. Tanto importações nomeadas como de namespace espelham o pacote antigo.
import { Connection, PublicKey } from "@solana/web3.js";
import { Connection, PublicKey } from "@solana/web3-compat";
CommonJS também funciona:
const solanaWeb3 = require("@solana/web3-compat");const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");
Nos bastidores Connection encaminha leituras e escritas através de
@solana/client, portanto helpers como sendAndConfirmTransaction,
simulateTransaction e getProgramAccounts beneficiam do runtime mais recente
sem tocar na sua lógica de negócio.
Helpers de ponte quando precisar de tipos do Kit
À medida que adota o Kit diretamente (talvez em novos componentes usando
@solana/client ou @solana/react-hooks), use os helpers de ponte incluídos no
pacote compat para converter entre os dois ecossistemas:
import {PublicKey,toAddress,toPublicKey,toWeb3Instruction,toKitSigner} from "@solana/web3-compat";const legacyKey = new PublicKey("11111111111111111111111111111111");const kitAddress = toAddress(legacyKey);const backToWeb3 = toPublicKey(kitAddress);
Misturar runtimes torna-se seguro: hooks mais recentes podem emitir instruções
do Kit, depois toWeb3Instruction irá envolvê-las para fluxos legados até que
todo o projeto migre.
Padrões de migração progressiva
- Implementações incrementais: atualize uma pasta de funcionalidade de cada
vez. Quando um módulo já não precisar de compat, aponte-o diretamente para
@solana/client/@solana/react-hookssem tocar no resto da árvore. - Ajuste de RPC partilhado: como o compat depende de conexões Kit, ajustar níveis de compromisso, taxas de priorização ou URLs de RPC flui através de um único objeto de configuração.
- Auxiliares SPL + transação: mantenha os construtores de transação legados
por agora, mas recorra a
client.helpers.transaction.preparequando estiver pronto. O compat ainda pode submeter os mesmos payloads assinados. - Testes: reutilize os mocks Web3 existentes, uma vez que a superfície pública permanece idêntica, mas em teste pode simular o cliente Kit para simulações mais ricas.
O que é enviado na fase 0
ConnectioncomgetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransaction, esimulateTransaction.- Utilitários como
LAMPORTS_PER_SOL,sendAndConfirmTransaction, ecompileFromCompat. SystemProgram.transfermais todas as primitivas Web3 principais (Keypair,Transaction,VersionedTransaction,TransactionInstruction).
A cobertura ainda está a expandir
Métodos fora da lista acima recorrem ao @solana/web3.js legado hoje.
Mantenha a dependência antiga até que o resto da sua superfície chegue ao
compat, e acompanhe versões futuras para suporte de subscrição e cobertura RPC
mais ampla.
Combine este guia com a visão geral de @solana/client e o guia de @solana/react-hooks quando estiver pronto para começar a construir nova UI em cima do mesmo runtime Kit.
Is this page helpful?