Существенное обновление версии 2.x Solana Web3.js: модульный дизайн повышает производительность

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

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

Библиотека Solana Web3.js, обладающая богатым функционалом, официально представила версию 2.x в ноябре. Новая версия по сравнению с 1.x претерпела значительные изменения, в этой статье будут обобщены основные обновления.

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

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

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

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

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

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

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

Однако, поскольку он был выпущен недавно, многие проекты еще не завершили миграцию. Примеры версии 2.x на Solana Cookbook также относительно немногочисленны. Кроме того, новая версия склонна использовать встроенные функции времени выполнения (например, генерацию ключевых пар), но описание этих частей в документации недостаточно, что может запутать разработчиков.

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

Важные изменения

подключение

В версии 1.x класс Connection предоставлял множество методов. А в 2.x была использована более функциональная реализация:

При вызове "sendAndConfirmTransaction" для отправки транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение для подписки на статус транзакции, после подтверждения транзакции возвращается хэш транзакции.

пара ключей

Часть, связанная с открытыми и закрытыми ключами, также претерпела большие изменения. Классы Keypair и PublicKey, которые часто использовались в версии 1.x, больше не существуют и были заменены некоторыми функциями.

Например, можно использовать "await generateKeyPair()" для генерации пары ключей, а не предыдущий "Keypair.generate()".

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

Отправить транзакцию

В версии 2.x больше нет классов "Transaction" и "VersionedTransaction".

Методы, связанные с System Program, предоставляемые в предыдущей версии, больше не существуют, и статические методы класса "SystemProgram" необходимо импортировать из других мест.

Например, команда "transfer" требует вызова функции "getTransferSolInstruction" из "@solana-program/system".

Поскольку класс больше не предоставляется, Web3.js предлагает широко используемую в функциональном программировании форму "pipe". С помощью функции pipe можно реализовать функцию перевода, которая была в 1.x.

Можно увидеть, что транзакции больше не инициируются через Connection, а генерируются с помощью определенного RPC Provider, создавая уникальную функцию, которую затем вызывают для инициации транзакции. По сравнению с версией 1.x объем кода увеличился, но настраиваемость стала сильнее.

Торговля инициируется через HTTPS RPC, а затем подтверждается через подписку на WSS RPC для получения результатов сделки. Новый подход сильно зависит от WSS, и я уверен, что в будущем применение WSS станет более широким, что также выдвигает более высокие требования к стабильности услуг поставщиков RPC.

Реакт

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

Резюме

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

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

SOL2.31%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 4
  • Репост
  • Поделиться
комментарий
0/400
OfflineValidatorvip
· 9ч назад
js снова обновился. Кто еще использует 1.x?
Посмотреть ОригиналОтветить0
MoonRocketmanvip
· 9ч назад
Оптимизация орбиты завершена, обновление двигателя успешно, готовимся ко второму запуску На луну.
Посмотреть ОригиналОтветить0
MissedAirdropAgainvip
· 9ч назад
Лезь, спешишь подняться, никакой пользы, сначала разогрей 2.0 Аирдроп
Посмотреть ОригиналОтветить0
WalletDivorcervip
· 9ч назад
Все еще жду объятий 1.x, не хочу менять код.
Посмотреть ОригиналОтветить0
  • Закрепить