Выпуск версии 2.x Solana Web3.js: функциональное программирование переосмысляет опыт разработки

robot
Генерация тезисов в процессе

Solana Web3.js 2.x: Новая эра функционального программирования

В ноябре 2023 года Solana Web3.js выпустил версию 2.x, в которой по сравнению с версией 1.x были внесены значительные изменения. В этой статье будут изложены основные улучшения.

Хотя версия 2.x только что была выпущена и ее использование еще не высоко, многие популярные библиотеки также не были перенесены, понимание этих изменений поможет подготовиться к будущим обновлениям.

Серия для новичков в Web3: обновите @solana/web3.js 2.x для начала функционального программирования

Сравнение версий

Версия 1.x относительно проста в использовании, она включает только пакет @solana/web3.js и оборачивает множество часто используемых операций на основе объектно-ориентированного дизайна. Например, класс Connection предоставляет десятки методов, охватывающих почти все функции, необходимые разработчикам.

Однако такой дизайн также приводит к некоторым проблемам. Несмотря на то, что функционал, который на самом деле используют разработчики, может быть минимальным, весь код будет загружен на устройства пользователей, что приводит к увеличению времени загрузки.

Версия 2.x использует другой подход. Официальная команда разделила существующий кодовый репозиторий на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc и др. В новой версии отказались от реализации на основе классов и больше используют отдельные функции, что способствует оптимизации при сборке кода JavaScript. Неиспользуемый код будет удален и не будет загружаться на устройства пользователей. Согласно официальным данным, использование новой версии DApp обычно позволяет достичь 30%-ной оптимизации размера, а для приложений с меньшим количеством функций этот процент может быть еще выше.

Это изменение предъявляет более высокие требования к качеству документации команды Solana. Как быстро помочь разработчикам найти необходимые функции становится ключевой задачей. В настоящее время семантика имен пакетов довольно хороша, и по их названиям можно примерно понять их предназначение, что в определенной степени снижает сложность миграции для разработчиков.

Однако, поскольку проект был только что запущен, многие проекты еще не перенесены. Некоторые примеры и описания документации также недостаточно полны, что может вызвать некоторые затруднения у разработчиков.

Еще одной важной особенностью версии 2.x является отсутствие зависимостей. Это крайне важно для повышения безопасности, особенно после атаки на цепочку поставок версий @solana/web3.js 1.95.5 и 1.95.6 в начале декабря 2023 года. В новой версии больше используются нативные функции, исключаются внешние зависимости и полифиллы, что снижает риски безопасности.

Основные изменения

Способ подключения

В версии 2.x используется более функциональный подход для обработки соединений. Класс Connection больше не используется, вместо этого запросы создаются путем настройки адреса RPC. Например, при отправке транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение, подписывается статус транзакции, и после подтверждения транзакции возвращается хэш транзакции.

Управление ключевой парой

Операции, связанные с открытыми и закрытыми ключами, также претерпели значительные изменения. Классы Keypair и PublicKey, часто используемые в версии 1.x, больше не существуют, их заменяет ряд функций. Например, теперь используется await generateKeyPair() для генерации пары ключей, вместо прежнего Keypair.generate().

Новое решение использует Web Crypto API JavaScript и нативную реализацию Ed25519. Это привело к тому, что некоторые операции стали асинхронными, но для современных разработчиков JavaScript, знакомых с Promise, это не является большой проблемой.

Обработка транзакций

В версии 2.x больше нет классов Transaction и VersionedTransaction. Методы, связанные с System Program, также нужно импортировать из других мест. Например, для передачи средств теперь необходимо вызывать функцию getTransferSolInstruction из @solana-program/system.

Новая версия предлагает часто используемую в функциональном программировании форму pipe. Транзакции больше не инициируются через Connection, а запускаются с помощью определенных функций, созданных через определенный RPC Provider. Хотя объем кода немного увеличился, это обеспечивает большую степень настраиваемости.

Поддержка React

Стоит отметить, что в проекте @solana/web3.js также содержится библиотека под названием @solana/react, которая предоставляет несколько React Hook и включает такие функции, как signIn.

Заключение

Выпуск версии 2.x @solana/web3.js демонстрирует решимость команды Solana к постоянным улучшениям. Новая версия предоставляет разработчикам эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что, как ожидается, будет способствовать дальнейшему развитию и применению платформы.

Серия для новичков Web3: сейчас обновите @solana/web3.js 2.x для включения функционального программирования

Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Награда
  • 3
  • Поделиться
комментарий
0/400
SoliditySlayervip
· 6ч назад
Сколько TPS это может увеличить?
Посмотреть ОригиналОтветить0
GateUser-aa7df71evip
· 6ч назад
solana эта волна, кажется, на луну.
Посмотреть ОригиналОтветить0
GateUser-e87b21eevip
· 6ч назад
После обновления разработка стала легче!
Посмотреть ОригиналОтветить0
  • Закрепить