Solana Web3.js 2.x версия: значительное обновление функциональной библиотеки JavaScript
Библиотека Solana Web3.js, как мощная библиотека JavaScript, официально выпустила версию 2.x в ноябре. По сравнению с версией 1.x, новая версия принесла множество значительных изменений, в этой статье будет представлен обзор основных обновлений.
Несмотря на то, что версия 2.x только что была выпущена и в настоящее время используется не так широко, многие популярные библиотеки еще не были перенесены, понимание этих изменений имеет решающее значение для будущей работы по миграции.
Сравнение версий
Несомненно, старая версия была проще и понятнее в использовании. Версия 1.x включает только один пакет @solana/web3.js, который содержит все функции. Она основана на классовом дизайне и инкапсулирует множество распространенных операций. Например, класс Connection предлагает десятки методов, которые практически охватывают все функции, необходимые разработчикам. Кроме того, обширный примерный код в Solana cookbook предоставляет разработчикам огромное удобство.
Однако такой дизайн также вызывает некоторые проблемы. Несмотря на то, что фактически используемые функции разработчиками могут составлять лишь небольшую часть, вся кодовая база будет загружена на устройство пользователя, и из-за большого объема кода библиотеки это может привести к определенной задержке загрузки.
Версия 2.x использует другой подход. Официальная команда разделила существующую кодовую базу на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers и @solana/transactions. В то же время новая версия отказалась от реализации на основе классов и больше использует одиночные функции. Это изменение значительно улучшает оптимизацию кода JavaScript при сборке, неиспользуемый код будет удалён и не будет загружен на устройство пользователя. Согласно статистике официальной документации, использование новой версии DApp в целом может обеспечить оптимизацию объёма на 30%, а для приложений, использующих лишь небольшое количество функций, этот показатель может быть ещё выше.
Это изменение также предъявило более высокие требования к качеству документации команды Solana. Как быстро помочь разработчикам найти необходимые функции стало ключевой проблемой. На данный момент новые имена пакетов имеют хорошую семантику, и по названию можно в значительной степени понять их назначение, что в определенной мере снижает сложность миграции для разработчиков.
Однако, поскольку новая версия только что была выпущена, многие проекты еще не провели миграцию. Примеры версии 2.x на Solana Cookbook также относительно немногочисленны. Кроме того, новая версия склонна использовать встроенные функции времени выполнения (такие как генерация ключевой пары), но документация недостаточно описывает эти части, что может вызвать путаницу у разработчиков в некоторых аспектах.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Для многих пользователей это может быть не столь важно, но учитывая атаки на поставки, произошедшие в начале декабря этого года в версиях @solana/web3.js 1.95.5 и 1.95.6, сокращение внешних входов и зависимостей может значительно снизить вероятность возникновения инцидентов безопасности. С выходом версии 2.x команда разработчиков Web3.js решила в большей степени использовать встроенные функции, отменив внешние зависимости и внедрение Polyfills. Хотя в будущем могут быть изменения, на данный момент версия 2.x уже устранила все внешние зависимости.
Основные изменения
Способ соединения
В версии 1.x класс Connection предоставляет множество методов. Его основная функция заключается в создании отправителя запросов путем настройки адреса RPC, а затем отправке различных запросов через него.
Версия 2.x использует более функциональный подход:
JavaScript
import { createSolanaRpc } из "@solana/web3.js";
const rpc = createSolanaRpc("");
При вызове sendAndConfirmTransaction для отправки транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение для подписки на состояние транзакции, после подтверждения транзакции возвращается хэш транзакции.
обработка ключевой пары
Обработка, связанная с публичными и приватными ключами, также претерпела значительные изменения. Классы Keypair и PublicKey, которые использовались в версии 1.x, больше не существуют и были заменены рядом функций.
Например, теперь можно использовать await generateKeyPair() для генерации ключевой пары, а не ранее использовавшийся Keypair.generate().
Стоит отметить, что новая функция generateKeyPair возвращает Promise, а не напрямую пару ключей. Это связано с тем, что новая реализация максимально использует Web Crypto API JavaScript, применяя родную реализацию Ed25519. Многие методы Web Crypto API являются асинхронными. Однако для современных разработчиков JavaScript, знакомых с Promise, это изменение не будет трудным для восприятия.
Отправка сделки
Классы Transaction и VersionedTransaction, знакомые в версии 1.x, больше не существуют в 2.x.
Методы, связанные с System Program, предоставленные в старой версии, также больше не сохраняются, поэтому статические методы класса SystemProgram необходимо импортировать из других источников.
Например, команда transfer теперь требует вызова функции getTransferSolInstruction из @solana-program/system.
Поскольку классы больше не предоставляются, Web3.js предлагает функциональный стиль программирования с использованием формы pipe. Ниже приведен пример реализации функции перевода, которая изначально была в версии 1.x, с помощью функции pipe:
JavaScript
import { pipe } from "@solana/web3.js";
import { getTransferSolInstruction } из "@solana/system-program";
Можно заметить, что транзакции больше не инициируются через Connection, а создается конкретная функция через определенного нами RPC Provider, и затем эта функция вызывается для инициации транзакции. По сравнению с версией 1.x объем кода немного увеличился, но это обеспечило большую настраиваемость.
Торговля инициируется через HTTPS RPC, а затем подтверждается через подписку на WSS RPC. Можно почувствовать, что новый метод больше зависит от WSS, и я верю, что в будущем применение WSS станет более широким, что также предъявляет более высокие требования к стабильности обслуживания со стороны поставщиков RPC.
React поддержка
Стоит отметить, что проект @solana/web3.js также включает библиотеку под названием @solana/react, которая предоставляет несколько React Hook и включает такие функции, как signIn.
Резюме
Выпуск версии 2.x @solana/web3.js в полной мере демонстрирует решимость команды Solana к постоянному улучшению и развитию. Новая версия предоставляет разработчикам эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что способствует принятию и развитию этой платформы. Хотя в настоящее время она все еще находится на ранней стадии, с миграцией большего количества проектов и адаптацией сообщества, можно ожидать, что версия 2.x сыграет более значительную роль в будущем.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
16 Лайков
Награда
16
5
Репост
Поделиться
комментарий
0/400
GweiWatcher
· 08-09 18:00
Старый, который не обновляется, просто проходит мимо
Посмотреть ОригиналОтветить0
TheShibaWhisperer
· 08-09 18:00
Когда же будет завершено обновление, уже надоело.
Посмотреть ОригиналОтветить0
SchrodingerWallet
· 08-09 17:54
Снова придется мучиться с миграцией, отрыгнул.
Посмотреть ОригиналОтветить0
SorryRugPulled
· 08-09 17:50
Снова обновление и требуется миграция, голова кругом.
Значительное обновление Solana Web3.js версии 2.x: разделение функций и увеличение производительности без зависимостей
Solana Web3.js 2.x версия: значительное обновление функциональной библиотеки JavaScript
Библиотека Solana Web3.js, как мощная библиотека JavaScript, официально выпустила версию 2.x в ноябре. По сравнению с версией 1.x, новая версия принесла множество значительных изменений, в этой статье будет представлен обзор основных обновлений.
Несмотря на то, что версия 2.x только что была выпущена и в настоящее время используется не так широко, многие популярные библиотеки еще не были перенесены, понимание этих изменений имеет решающее значение для будущей работы по миграции.
Сравнение версий
Несомненно, старая версия была проще и понятнее в использовании. Версия 1.x включает только один пакет @solana/web3.js, который содержит все функции. Она основана на классовом дизайне и инкапсулирует множество распространенных операций. Например, класс Connection предлагает десятки методов, которые практически охватывают все функции, необходимые разработчикам. Кроме того, обширный примерный код в Solana cookbook предоставляет разработчикам огромное удобство.
Однако такой дизайн также вызывает некоторые проблемы. Несмотря на то, что фактически используемые функции разработчиками могут составлять лишь небольшую часть, вся кодовая база будет загружена на устройство пользователя, и из-за большого объема кода библиотеки это может привести к определенной задержке загрузки.
Версия 2.x использует другой подход. Официальная команда разделила существующую кодовую базу на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers и @solana/transactions. В то же время новая версия отказалась от реализации на основе классов и больше использует одиночные функции. Это изменение значительно улучшает оптимизацию кода JavaScript при сборке, неиспользуемый код будет удалён и не будет загружен на устройство пользователя. Согласно статистике официальной документации, использование новой версии DApp в целом может обеспечить оптимизацию объёма на 30%, а для приложений, использующих лишь небольшое количество функций, этот показатель может быть ещё выше.
Это изменение также предъявило более высокие требования к качеству документации команды Solana. Как быстро помочь разработчикам найти необходимые функции стало ключевой проблемой. На данный момент новые имена пакетов имеют хорошую семантику, и по названию можно в значительной степени понять их назначение, что в определенной мере снижает сложность миграции для разработчиков.
Однако, поскольку новая версия только что была выпущена, многие проекты еще не провели миграцию. Примеры версии 2.x на Solana Cookbook также относительно немногочисленны. Кроме того, новая версия склонна использовать встроенные функции времени выполнения (такие как генерация ключевой пары), но документация недостаточно описывает эти части, что может вызвать путаницу у разработчиков в некоторых аспектах.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Для многих пользователей это может быть не столь важно, но учитывая атаки на поставки, произошедшие в начале декабря этого года в версиях @solana/web3.js 1.95.5 и 1.95.6, сокращение внешних входов и зависимостей может значительно снизить вероятность возникновения инцидентов безопасности. С выходом версии 2.x команда разработчиков Web3.js решила в большей степени использовать встроенные функции, отменив внешние зависимости и внедрение Polyfills. Хотя в будущем могут быть изменения, на данный момент версия 2.x уже устранила все внешние зависимости.
Основные изменения
Способ соединения
В версии 1.x класс Connection предоставляет множество методов. Его основная функция заключается в создании отправителя запросов путем настройки адреса RPC, а затем отправке различных запросов через него.
Версия 2.x использует более функциональный подход:
JavaScript import { createSolanaRpc } из "@solana/web3.js";
const rpc = createSolanaRpc("");
При вызове sendAndConfirmTransaction для отправки транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение для подписки на состояние транзакции, после подтверждения транзакции возвращается хэш транзакции.
обработка ключевой пары
Обработка, связанная с публичными и приватными ключами, также претерпела значительные изменения. Классы Keypair и PublicKey, которые использовались в версии 1.x, больше не существуют и были заменены рядом функций.
Например, теперь можно использовать await generateKeyPair() для генерации ключевой пары, а не ранее использовавшийся Keypair.generate().
Стоит отметить, что новая функция generateKeyPair возвращает Promise, а не напрямую пару ключей. Это связано с тем, что новая реализация максимально использует Web Crypto API JavaScript, применяя родную реализацию Ed25519. Многие методы Web Crypto API являются асинхронными. Однако для современных разработчиков JavaScript, знакомых с Promise, это изменение не будет трудным для восприятия.
Отправка сделки
Классы Transaction и VersionedTransaction, знакомые в версии 1.x, больше не существуют в 2.x.
Методы, связанные с System Program, предоставленные в старой версии, также больше не сохраняются, поэтому статические методы класса SystemProgram необходимо импортировать из других источников.
Например, команда transfer теперь требует вызова функции getTransferSolInstruction из @solana-program/system.
Поскольку классы больше не предоставляются, Web3.js предлагает функциональный стиль программирования с использованием формы pipe. Ниже приведен пример реализации функции перевода, которая изначально была в версии 1.x, с помощью функции pipe:
JavaScript import { pipe } from "@solana/web3.js"; import { getTransferSolInstruction } из "@solana/system-program";
Константная транзакция = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ fromPubkey: отправитель, toPubkey: получатель, lamports: сумма })) );
const signature = ожидание rpc.sendTransaction(transaction);
Можно заметить, что транзакции больше не инициируются через Connection, а создается конкретная функция через определенного нами RPC Provider, и затем эта функция вызывается для инициации транзакции. По сравнению с версией 1.x объем кода немного увеличился, но это обеспечило большую настраиваемость.
Торговля инициируется через HTTPS RPC, а затем подтверждается через подписку на WSS RPC. Можно почувствовать, что новый метод больше зависит от WSS, и я верю, что в будущем применение WSS станет более широким, что также предъявляет более высокие требования к стабильности обслуживания со стороны поставщиков RPC.
React поддержка
Стоит отметить, что проект @solana/web3.js также включает библиотеку под названием @solana/react, которая предоставляет несколько React Hook и включает такие функции, как signIn.
Резюме
Выпуск версии 2.x @solana/web3.js в полной мере демонстрирует решимость команды Solana к постоянному улучшению и развитию. Новая версия предоставляет разработчикам эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что способствует принятию и развитию этой платформы. Хотя в настоящее время она все еще находится на ранней стадии, с миграцией большего количества проектов и адаптацией сообщества, можно ожидать, что версия 2.x сыграет более значительную роль в будущем.