@solana/web3-compat

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

Установка с зависимостями Kit

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

Слой совместимости повторно экспортирует классические типы Web3 (Connection, PublicKey, Transaction и др.), при этом внутренне используя сетевые возможности и кодеки Kit. Вы можете оставить свои текущие RPC-эндпоинты, но при этом воспользоваться более предсказуемой обработкой blockhash и абстракциями кошелька от 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, получают преимущества нового рантайма без изменений бизнес-логики.

Используйте 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?

Управляется

© 2026 Фонд Solana.
Все права защищены.
Подключиться