@solana/web3-compat adalah jembatan antara aplikasi @solana/web3.js yang
sudah berjalan lama dan runtime Kit yang lebih baru. Ganti import, pertahankan
surface yang sudah dikenal aplikasi Anda, dan adopsi fitur Kit secara progresif
tanpa menulis ulang setiap helper atau instruksi sekaligus.
Install dengan peer Kit
$npm install @solana/web3-compat @solana/kit @solana/client
Lapisan kompatibilitas mengekspor ulang tipe Web3 klasik (Connection,
PublicKey, Transaction, dll.) sambil secara internal mendelegasikan ke
networking Kit dan codec. Pertahankan endpoint RPC yang ada, tetapi manfaatkan
penanganan blockhash yang lebih prediktif dan abstraksi wallet dari Kit.
Ganti import (tanpa perubahan kode lainnya)
Sebagian besar proyek dapat bermigrasi file-per-file dengan mengganti sumber import. Baik import named maupun namespace mencerminkan package lama.
import { Connection, PublicKey } from "@solana/web3.js";
import { Connection, PublicKey } from "@solana/web3-compat";
CommonJS juga berfungsi:
const solanaWeb3 = require("@solana/web3-compat");const connection = new solanaWeb3.Connection("https://api.devnet.solana.com");
Di balik layar Connection meneruskan pembacaan dan penulisan melalui
@solana/client, sehingga helper seperti sendAndConfirmTransaction,
simulateTransaction, dan getProgramAccounts mendapat manfaat dari runtime
yang lebih baru tanpa menyentuh logika bisnis Anda.
Helper bridge ketika Anda membutuhkan tipe Kit
Saat Anda mengadopsi Kit secara langsung (mungkin di komponen baru menggunakan
@solana/client atau @solana/react-hooks), gunakan helper bridge yang
disertakan dalam package compat untuk mengonversi antara kedua ekosistem:
import {PublicKey,toAddress,toPublicKey,toWeb3Instruction,toKitSigner} from "@solana/web3-compat";const legacyKey = new PublicKey("11111111111111111111111111111111");const kitAddress = toAddress(legacyKey);const backToWeb3 = toPublicKey(kitAddress);
Mencampur runtime menjadi aman: hook yang lebih baru dapat mengeluarkan
instruksi Kit, kemudian toWeb3Instruction akan membungkusnya untuk alur legacy
hingga seluruh proyek beralih sepenuhnya.
Pola migrasi progresif
- Peluncuran bertahap: Perbarui satu folder fitur pada satu waktu. Ketika
sebuah modul tidak lagi memerlukan compat, arahkan langsung ke
@solana/client/@solana/react-hookstanpa menyentuh bagian lain dari struktur. - Penyetelan RPC bersama: Karena compat bergantung pada koneksi Kit, penyetelan tingkat komitmen, biaya prioritas, atau URL RPC mengalir melalui satu objek konfigurasi.
- Helper SPL + transaksi: Pertahankan transaction builder lama untuk saat
ini, tetapi gunakan
client.helpers.transaction.prepareketika Anda siap. Compat masih dapat mengirimkan payload yang telah ditandatangani yang sama. - Testing: Gunakan kembali mock Web3 yang ada karena permukaan publik tetap identik, namun dalam pengujian Anda dapat melakukan stub pada klien Kit untuk simulasi yang lebih kaya.
Apa yang dikirimkan dalam fase 0
ConnectiondengangetLatestBlockhash,getBalance,getAccountInfo,getProgramAccounts,getSignatureStatuses,sendRawTransaction,confirmTransaction, dansimulateTransaction.- Utilitas seperti
LAMPORTS_PER_SOL,sendAndConfirmTransaction, dancompileFromCompat. SystemProgram.transferditambah semua primitif Web3 inti (Keypair,Transaction,VersionedTransaction,TransactionInstruction).
Cakupan masih berkembang
Metode di luar daftar di atas saat ini kembali ke @solana/web3.js lama.
Pertahankan dependensi lama sampai bagian lain dari permukaan Anda tersedia di
compat, dan pantau rilis mendatang untuk dukungan subscription dan cakupan RPC
yang lebih luas.
Padukan panduan ini dengan tinjauan @solana/client dan panduan @solana/react-hooks ketika Anda siap untuk mulai membangun UI baru di atas runtime Kit yang sama.
Is this page helpful?