Обновление версии Solana Web3.js 2.x: принятие функционального программирования
Библиотека Solana Web3.js, являющаяся функционально богатой библиотекой JavaScript, выпустила версию 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. Неиспользуемый код будет удален и не будет загружен на устройства пользователей. Согласно официальным данным, приложения, использующие новую версию, обычно могут добиться 30% оптимизации объема, а если используются лишь некоторые функции, процент оптимизации может быть еще выше.
Еще одной важной особенностью версии 2.x является отсутствие зависимостей. Учитывая недавние атаки на цепочку поставок в версиях 1.95.5 и 1.95.6, сокращение внешних зависимостей помогает повысить безопасность. Команда разработчиков решила больше использовать встроенные функции и отказаться от внешних зависимостей и введения Polyfills.
Важные изменения
соединение
Версия 2.x использует более функциональный подход к обработке соединений. Класс Connection больше не используется, вместо этого создается отправитель запросов через настройку адреса RPC. Например, при отправке транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение, подписывая статус транзакции, и возвращается хэш транзакции после ее подтверждения.
ключи
В версии 2.x классы Keypair и PublicKey были заменены рядом функций. Например, теперь используйте await generateKeyPair() для генерации пары ключей, а не Keypair.generate(). Новая реализация использует Web Crypto API JavaScript и нативную реализацию Ed25519, что приводит к тому, что многие методы стали асинхронными.
Отправить транзакцию
В версии 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, что, вероятно, будет способствовать принятию и развитию этой платформы. Несмотря на то, что она все еще находится на ранней стадии, с течением времени ожидается, что больше проектов перейдут на эту новую версию.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Обновление Solana Web3.js 2.x: Модульный дизайн повышает производительность и безопасность
Обновление версии Solana Web3.js 2.x: принятие функционального программирования
Библиотека Solana Web3.js, являющаяся функционально богатой библиотекой JavaScript, выпустила версию 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. Неиспользуемый код будет удален и не будет загружен на устройства пользователей. Согласно официальным данным, приложения, использующие новую версию, обычно могут добиться 30% оптимизации объема, а если используются лишь некоторые функции, процент оптимизации может быть еще выше.
Еще одной важной особенностью версии 2.x является отсутствие зависимостей. Учитывая недавние атаки на цепочку поставок в версиях 1.95.5 и 1.95.6, сокращение внешних зависимостей помогает повысить безопасность. Команда разработчиков решила больше использовать встроенные функции и отказаться от внешних зависимостей и введения Polyfills.
Важные изменения
соединение
Версия 2.x использует более функциональный подход к обработке соединений. Класс Connection больше не используется, вместо этого создается отправитель запросов через настройку адреса RPC. Например, при отправке транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение, подписывая статус транзакции, и возвращается хэш транзакции после ее подтверждения.
ключи
В версии 2.x классы Keypair и PublicKey были заменены рядом функций. Например, теперь используйте await generateKeyPair() для генерации пары ключей, а не Keypair.generate(). Новая реализация использует Web Crypto API JavaScript и нативную реализацию Ed25519, что приводит к тому, что многие методы стали асинхронными.
Отправить транзакцию
В версии 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, что, вероятно, будет способствовать принятию и развитию этой платформы. Несмотря на то, что она все еще находится на ранней стадии, с течением времени ожидается, что больше проектов перейдут на эту новую версию.