@solana/web3-compat

@solana/web3-compat — це міст між довгоживучими застосунками @solana/web3.js та новішим середовищем виконання Kit. Замініть імпорт, збережіть інтерфейс, який ваш застосунок вже знає, і поступово впроваджуйте функції Kit без переписування кожного хелпера чи інструкції одразу.

Встановлення з peer-залежностями Kit

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

Рівень сумісності реекспортує класичні типи Web3 (Connection, PublicKey, Transaction тощо), водночас внутрішньо делегуючи мережеві операції та кодеки Kit. Зберігайте існуючі RPC-ендпоінти, але отримуйте переваги більш передбачуваної обробки блокхешів та абстракцій гаманців Kit.

Заміна імпортів (без інших змін коду)

Більшість проєктів можуть мігрувати файл за файлом, змінивши джерело імпорту. Як іменовані, так і namespace-імпорти відображають старий пакет.

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

CommonJS також працює:

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

За лаштунками Connection перенаправляє читання та запис через @solana/client, тому хелпери на кшталт sendAndConfirmTransaction, simulateTransaction та getProgramAccounts отримують переваги новішого середовища виконання без торкання вашої бізнес-логіки.

Міст-хелпери, коли потрібні типи Kit

Коли ви впроваджуєте Kit безпосередньо (можливо, у нових компонентах, використовуючи @solana/client або @solana/react-hooks), використовуйте міст-хелпери, що постачаються в пакеті сумісності, для конвертації між двома екосистемами:

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

Змішування середовищ виконання стає безпечним: новіші хуки можуть генерувати інструкції Kit, а потім toWeb3Instruction обгорне їх для застарілих потоків, поки весь проєкт не перейде повністю.

Патерни поступової міграції

  • Поступове впровадження: оновлюйте по одній папці функцій за раз. Коли модулю більше не потрібна сумісність, направте його безпосередньо на @solana/client/@solana/react-hooks без зміни решти дерева.
  • Спільне налаштування RPC: оскільки сумісність покладається на з'єднання Kit, налаштування рівнів підтвердження, пріоритетних комісій або URL-адрес RPC проходить через єдиний об'єкт конфігурації.
  • Допоміжні засоби SPL + транзакцій: поки що зберігайте застарілі конструктори транзакцій, але використовуйте client.helpers.transaction.prepare, коли будете готові. Сумісність все ще може надсилати ті самі підписані дані.
  • Тестування: повторно використовуйте існуючі моки Web3, оскільки публічна поверхня залишається ідентичною, проте під час тестування ви можете заглушити клієнт Kit для багатших симуляцій.

Що входить до фази 0

  • Connection з getLatestBlockhash, getBalance, getAccountInfo, getProgramAccounts, getSignatureStatuses, sendRawTransaction, confirmTransaction та simulateTransaction.
  • Утиліти, такі як LAMPORTS_PER_SOL, sendAndConfirmTransaction та compileFromCompat.
  • SystemProgram.transfer плюс усі основні примітиви Web3 (Keypair, Transaction, VersionedTransaction, TransactionInstruction).

Покриття все ще розширюється

Методи поза наведеним вище списком сьогодні повертаються до застарілого @solana/web3.js. Зберігайте стару залежність, доки решта вашої поверхні не потрапить до сумісності, і відстежуйте майбутні релізи для підтримки підписок та ширшого покриття RPC.

Поєднайте цей посібник з оглядом @solana/client та посібником @solana/react-hooks, коли будете готові почати створювати новий UI поверх того самого середовища виконання Kit.

Is this page helpful?

Керується

© 2026 Фонд Solana.
Всі права захищені.
Залишайтеся на зв'язку