@solana/web3-compat — это мост между давно существующими приложениями на
@solana/web3.js и новым рантаймом Kit. Просто замените импорт, сохраните
знакомый вашему приложению интерфейс и постепенно внедряйте возможности Kit без
необходимости переписывать все вспомогательные функции или инструкции сразу.
Установка с зависимостями Kit
$npm install @solana/web3-compat @solana/kit @solana/client
Слой совместимости повторно экспортирует классические типы Web3 (Connection,
PublicKey, Transaction и др.), при этом внутренне используя сетевые
возможности и кодеки Kit. Вы можете оставить свои текущие RPC-эндпоинты, но при
этом воспользоваться более предсказуемой обработкой blockhash и абстракциями
кошелька от 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, получают преимущества нового
рантайма без изменений бизнес-логики.
Используйте bridge-хелперы для работы с типами Kit
Когда вы начнёте использовать Kit напрямую (например, в новых компонентах с
@solana/client или @solana/react-hooks), используйте bridge-хелперы из
compat-пакета для преобразования между двумя экосистемами:
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 обернёт их для старых сценариев, пока весь
проект не перейдёт на новую систему.
Паттерны постепенной миграции
- Пошаговое внедрение: обновляйте по одной папке с функциями за раз. Когда
модулю больше не нужен compat, направьте его напрямую на
@solana/client/@solana/react-hooks, не затрагивая остальное дерево. - Настройка общего RPC: так как compat использует подключения Kit, настройка уровней commitment, приоритетных комиссий или RPC URL осуществляется через единый объект конфигурации.
- SPL и помощники для транзакций: пока сохраняйте устаревшие билдеры
транзакций, но переходите на
client.helpers.transaction.prepare, когда будете готовы. Compat всё ещё может отправлять те же подписанные payload'ы. - Тестирование: переиспользуйте существующие Web3-моки, так как публичный интерфейс остаётся идентичным, но в тестах вы можете подменять Kit client для более гибких симуляций.
Что входит в фазу 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. Оставьте старую зависимость до тех пор, пока вся ваша
поверхность не перейдёт на compat, и следите за будущими релизами для
поддержки подписок и расширения RPC.
Используйте это руководство вместе с @solana/client overview и @solana/react-hooks guide, когда будете готовы начать строить новый UI на том же Kit runtime.
Is this page helpful?