@solana/web3-compat

@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

Terminal
$
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.

Before
import { Connection, PublicKey } from "@solana/web3.js";
After
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-hooks tanpa 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.prepare ketika 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

  • Connection dengan getLatestBlockhash, getBalance, getAccountInfo, getProgramAccounts, getSignatureStatuses, sendRawTransaction, confirmTransaction, dan simulateTransaction.
  • Utilitas seperti LAMPORTS_PER_SOL, sendAndConfirmTransaction, dan compileFromCompat.
  • SystemProgram.transfer ditambah 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?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2026 Yayasan Solana.
Semua hak dilindungi.
Terhubung