Solana Web3.js 2.x версия: значительное обновление функционально богатой библиотеки JavaScript
Библиотека Solana Web3.js, обладающая широкими функциональными возможностями, официально выпустила версию 2.x в ноябре этого года. По сравнению с версией 1.x, новая версия претерпела значительные изменения в структуре и способах использования. В этой статье будет представлен обзор основных изменений, чтобы помочь разработчикам подготовиться к будущей миграции.
Сравнение версий
Библиотека Web3.js версии 1.x довольно проста и прямолинейна в использовании. У нее есть только один основной пакет: @solana/web3.js, все функции сосредоточены в этом пакете. Она использует объектно-ориентированный подход и инкапсулирует множество распространенных операций. Например, класс Connection предоставляет десятки методов, которые охватывают почти все функции, необходимые разработчику.
Однако такой дизайн также приводит к некоторым проблемам. Хотя фактически используемые разработчиками функции могут составлять лишь небольшую часть библиотеки, вся кодовая база будет загружена на устройство пользователя, что может привести к увеличению времени загрузки.
Версия 2.x использует другой подход. Команда разработчиков разделила исходный код на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers и @solana/transactions. В новой версии также отказались от реализации на основе классов, предпочтя использовать больше отдельных функций. Этот подход способствует оптимизации кода JavaScript во время сборки, так как неиспользуемый код может быть удален и не будет загружаться на устройства пользователей.
Согласно статистике, использование новой версии децентрализованных приложений (DApp) обычно позволяет добиться оптимизации объема кода примерно на 30%. Если используется лишь небольшое количество функций, коэффициент оптимизации может быть еще выше.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Эта характеристика может быть незначительной для многих пользователей, но учитывая недавнюю атаку на цепочку поставок в версиях @solana/web3.js 1.95.5 и 1.95.6, снижение внешних зависимостей может значительно снизить риски безопасности. Команда разработчиков Web3.js решила больше использовать нативные функции, отменив внедрение внешних зависимостей и полифиллов.
Важные изменения
соединение
В версии 2.x способ подключения стал более функциональным:
JavaScript
import { createSolanaRpc } из "@solana/web3.js";
const rpc = createSolanaRpc("");
При вызове sendAndConfirmTransaction для отправки транзакции система автоматически инициирует HTTPS-запрос и устанавливает WSS-соединение для подписки на статус транзакции, возвращая хэш транзакции после ее подтверждения.
пара ключей
В версии 2.x классы Keypair и PublicKey были заменены рядом функций. Например, теперь можно использовать await generateKeyPair() для генерации пары ключей, вместо предыдущего Keypair.generate(). Новая реализация использует Web Crypto API JavaScript и прибегает к родной реализации Ed25519.
Отправить транзакцию
Версия 2.x больше не использует классы Transaction и VersionedTransaction. Методы, связанные с System Program, также необходимо импортировать из других мест. Например, инструкция transfer теперь требует вызова функции getTransferSolInstruction из @solana-program/system.
Новая версия предоставляет общепринятую в функциональном программировании форму pipe. Вот пример реализации функции перевода с использованием функции pipe:
JavaScript
import { pipe } from "@solana/web3.js";
Стоит отметить, что проект @solana/web3.js также включает библиотеку под названием @solana/react, которая предоставляет несколько React Hook и включает в себя такие функции, как signIn.
Резюме
Выпуск версии 2.x библиотеки @solana/web3.js продемонстрировал приверженность команды Solana к постоянному развитию и улучшению. Новая версия предоставляет разработчикам более эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что, как ожидается, поможет дальнейшему принятию и развитию этой платформы.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
14 Лайков
Награда
14
5
Поделиться
комментарий
0/400
rekt_but_resilient
· 07-11 16:59
Наконец-то обновление! Разработка была слишком мучительной.
Выпуск версии 2.x Solana Web3.js, оптимизированный код уменьшен на 30%
Solana Web3.js 2.x версия: значительное обновление функционально богатой библиотеки JavaScript
Библиотека Solana Web3.js, обладающая широкими функциональными возможностями, официально выпустила версию 2.x в ноябре этого года. По сравнению с версией 1.x, новая версия претерпела значительные изменения в структуре и способах использования. В этой статье будет представлен обзор основных изменений, чтобы помочь разработчикам подготовиться к будущей миграции.
Сравнение версий
Библиотека Web3.js версии 1.x довольно проста и прямолинейна в использовании. У нее есть только один основной пакет: @solana/web3.js, все функции сосредоточены в этом пакете. Она использует объектно-ориентированный подход и инкапсулирует множество распространенных операций. Например, класс Connection предоставляет десятки методов, которые охватывают почти все функции, необходимые разработчику.
Однако такой дизайн также приводит к некоторым проблемам. Хотя фактически используемые разработчиками функции могут составлять лишь небольшую часть библиотеки, вся кодовая база будет загружена на устройство пользователя, что может привести к увеличению времени загрузки.
Версия 2.x использует другой подход. Команда разработчиков разделила исходный код на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers и @solana/transactions. В новой версии также отказались от реализации на основе классов, предпочтя использовать больше отдельных функций. Этот подход способствует оптимизации кода JavaScript во время сборки, так как неиспользуемый код может быть удален и не будет загружаться на устройства пользователей.
Согласно статистике, использование новой версии децентрализованных приложений (DApp) обычно позволяет добиться оптимизации объема кода примерно на 30%. Если используется лишь небольшое количество функций, коэффициент оптимизации может быть еще выше.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Эта характеристика может быть незначительной для многих пользователей, но учитывая недавнюю атаку на цепочку поставок в версиях @solana/web3.js 1.95.5 и 1.95.6, снижение внешних зависимостей может значительно снизить риски безопасности. Команда разработчиков Web3.js решила больше использовать нативные функции, отменив внедрение внешних зависимостей и полифиллов.
Важные изменения
соединение
В версии 2.x способ подключения стал более функциональным:
JavaScript import { createSolanaRpc } из "@solana/web3.js";
const rpc = createSolanaRpc("");
При вызове sendAndConfirmTransaction для отправки транзакции система автоматически инициирует HTTPS-запрос и устанавливает WSS-соединение для подписки на статус транзакции, возвращая хэш транзакции после ее подтверждения.
пара ключей
В версии 2.x классы Keypair и PublicKey были заменены рядом функций. Например, теперь можно использовать await generateKeyPair() для генерации пары ключей, вместо предыдущего Keypair.generate(). Новая реализация использует Web Crypto API JavaScript и прибегает к родной реализации Ed25519.
Отправить транзакцию
Версия 2.x больше не использует классы Transaction и VersionedTransaction. Методы, связанные с System Program, также необходимо импортировать из других мест. Например, инструкция transfer теперь требует вызова функции getTransferSolInstruction из @solana-program/system.
Новая версия предоставляет общепринятую в функциональном программировании форму pipe. Вот пример реализации функции перевода с использованием функции pipe:
JavaScript import { pipe } from "@solana/web3.js";
Константная транзакция = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ от: отправитель, к: получателю, amount: transferAmount, })), setTransactionFeePayer(sender), );
const signature = ожидать sendAndConfirmTransaction(rpc, транзакции, [senderKeypair]);
Поддержка React
Стоит отметить, что проект @solana/web3.js также включает библиотеку под названием @solana/react, которая предоставляет несколько React Hook и включает в себя такие функции, как signIn.
Резюме
Выпуск версии 2.x библиотеки @solana/web3.js продемонстрировал приверженность команды Solana к постоянному развитию и улучшению. Новая версия предоставляет разработчикам более эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что, как ожидается, поможет дальнейшему принятию и развитию этой платформы.