@solana/web3-compat — це міст між довгоживучими застосунками @solana/web3.js
та новішим середовищем виконання Kit. Замініть імпорт, збережіть інтерфейс, який
ваш застосунок вже знає, і поступово впроваджуйте функції Kit без переписування
кожного хелпера чи інструкції одразу.
Встановлення з peer-залежностями Kit
$npm install @solana/web3-compat @solana/kit @solana/client
Рівень сумісності реекспортує класичні типи Web3 (Connection, PublicKey,
Transaction тощо), водночас внутрішньо делегуючи мережеві операції та кодеки
Kit. Зберігайте існуючі RPC-ендпоінти, але отримуйте переваги більш
передбачуваної обробки блокхешів та абстракцій гаманців Kit.
Заміна імпортів (без інших змін коду)
Більшість проєктів можуть мігрувати файл за файлом, змінивши джерело імпорту. Як іменовані, так і namespace-імпорти відображають старий пакет.
import { Connection, PublicKey } from "@solana/web3.js";
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?