Solana Web3.js 2.x: Новая эра функционального программирования
В ноябре 2023 года Solana Web3.js выпустил версию 2.x, в которой по сравнению с версией 1.x были внесены значительные изменения. В этой статье будут изложены основные улучшения.
Хотя версия 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, что, как ожидается, будет способствовать дальнейшему развитию и применению платформы.
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.
Выпуск версии 2.x Solana Web3.js: функциональное программирование переосмысляет опыт разработки
Solana Web3.js 2.x: Новая эра функционального программирования
В ноябре 2023 года Solana Web3.js выпустил версию 2.x, в которой по сравнению с версией 1.x были внесены значительные изменения. В этой статье будут изложены основные улучшения.
Хотя версия 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, что, как ожидается, будет способствовать дальнейшему развитию и применению платформы.