Solana Web3.js 2.x версия: Значительное обновление многофункциональной библиотеки JavaScript
Библиотека 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 во время сборки, неиспользуемый код будет удален и не будет загружаться на устройства пользователей.
Согласно официальной документации, использование новой версии DApp обычно позволяет достичь 30% оптимизации по размеру. Если используются только небольшое количество функций, коэффициент оптимизации может быть еще выше.
Это изменение создает новые вызовы для команды Solana в написании документации, и вопрос о том, как быстро позволить разработчикам находить необходимые функции, стал ключевым. На данный момент кажется, что имена пакетов обладают хорошей семантикой, и из названий можно в значительной степени понять их назначение, что в определенной степени снижает сложность миграции для разработчиков.
Поскольку новая версия была выпущена совсем недавно, многие проекты еще не мигрировали. В настоящее время примеров версии 2.x относительно немного. Кроме того, из-за того, что новая версия склонна использовать встроенные функции времени выполнения (такие как генерация ключевых пар), в документации отсутствуют соответствующие описания, что может вызвать путаницу у некоторых разработчиков.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Это может быть не так важно для многих пользователей, но учитывая цепочечную атаку, произошедшую в начале декабря этого года на версиях @solana/web3.js 1.95.5 и 1.95.6, снижение внешних зависимостей может значительно снизить вероятность возникновения инцидентов безопасности. С выходом версии 2.x команда разработчиков Web3.js решила больше использовать встроенные функции, отменив ввод внешних зависимостей и Polyfills. Хотя в будущем изменения могут произойти, в настоящее время версия 2.x устранена от всех внешних зависимостей.
Важные изменения
соединение
В версии 1.x класс Connection предоставляет множество методов. А в 2.x используется более функциональный подход для реализации:
JavaScript
import { createSolanaRpcApi } из '@solana/web3.js';
При вызове sendAndConfirmTransaction для отправки транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение для подписки на состояние транзакции, после подтверждения транзакции возвращается хэш транзакции.
ключевая пара
В версии 2.x классы Keypair и PublicKey, которые часто использовались в версии 1.x, больше не существуют и заменены некоторыми функциями. Например, теперь можно использовать await generateKeyPair() для генерации пары ключей, а не предыдущий Keypair.generate().
Новый generateKeyPair возвращает Promise, так как новая реализация в максимальной степени использует Web Crypto API JavaScript и использует нативную реализацию Ed25519. Многие методы Web Crypto API являются асинхронными.
Отправить транзакцию
В версии 2.x больше нет классов Transaction и VersionedTransaction. Методы, связанные с System Program, также больше не существуют и должны быть импортированы из других мест. Например, инструкция transfer требует вызова функции getTransferSolInstruction из @solana-program/system.
Новая версия предлагает форму pipe, часто используемую в функциональном программировании. Ниже приведен пример реализации функции перевода, изначально существовавшей в версии 1.x, с использованием функции pipe:
JavaScript
import { pipe } из '@solana/functional';
import { getTransferSolInstruction } из '@solana/system-program';
импорт {
addSignatureToTransaction,
createTransaction,
sendAndConfirmTransaction,
} из '@solana/web3.js';
По сравнению с версией 1.x, объем кода увеличился, но возможность настройки стала более выраженной. Транзакции инициируются через HTTPS RPC, а затем подтверждаются через подписку на WSS RPC.
React поддержка
В проекте @solana/web3.js также есть библиотека под названием @solana/react, которая предоставляет несколько React Hook и включает в себя такие функции, как signIn.
Резюме
Выпуск версии 2.x @solana/web3.js демонстрирует решимость команды Solana к постоянным улучшениям. Новая версия предоставляет разработчикам эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что должно способствовать принятию и развитию этой платформы.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
6
Поделиться
комментарий
0/400
LiquidityHunter
· 2ч назад
Оптимизация модуля... но узкое место производительности все еще на уровне 85%.
Посмотреть ОригиналОтветить0
OnchainFortuneTeller
· 20ч назад
Смотреть на лицо BTC, это значит быть обманутым.
Посмотреть ОригиналОтветить0
NoodlesOrTokens
· 20ч назад
Наконец обновили, тянули резину.
Посмотреть ОригиналОтветить0
SandwichTrader
· 20ч назад
Зачем так быстро бегать? Архитектура снова в панике?
Выпуск 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 предоставляет десятки методов, которые практически охватывают все функции, необходимые разработчикам.
Однако такой дизайн также создает некоторые проблемы. Несмотря на то, что разработчики обычно используют лишь небольшую часть функционала, вся кодовая база загружается на устройства пользователей, что может привести к увеличению времени загрузки.
Версия 2.x использует другой подход. Официальная команда разделила существующий кодовый репозиторий на несколько небольших модулей, таких как @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions и т.д. В то же время, был отказ от классовой реализации в пользу использования отдельных функций. Это изменение способствует оптимизации кода JavaScript во время сборки, неиспользуемый код будет удален и не будет загружаться на устройства пользователей.
Согласно официальной документации, использование новой версии DApp обычно позволяет достичь 30% оптимизации по размеру. Если используются только небольшое количество функций, коэффициент оптимизации может быть еще выше.
Это изменение создает новые вызовы для команды Solana в написании документации, и вопрос о том, как быстро позволить разработчикам находить необходимые функции, стал ключевым. На данный момент кажется, что имена пакетов обладают хорошей семантикой, и из названий можно в значительной степени понять их назначение, что в определенной степени снижает сложность миграции для разработчиков.
Поскольку новая версия была выпущена совсем недавно, многие проекты еще не мигрировали. В настоящее время примеров версии 2.x относительно немного. Кроме того, из-за того, что новая версия склонна использовать встроенные функции времени выполнения (такие как генерация ключевых пар), в документации отсутствуют соответствующие описания, что может вызвать путаницу у некоторых разработчиков.
Другой важной особенностью версии 2.x является отсутствие зависимостей. Это может быть не так важно для многих пользователей, но учитывая цепочечную атаку, произошедшую в начале декабря этого года на версиях @solana/web3.js 1.95.5 и 1.95.6, снижение внешних зависимостей может значительно снизить вероятность возникновения инцидентов безопасности. С выходом версии 2.x команда разработчиков Web3.js решила больше использовать встроенные функции, отменив ввод внешних зависимостей и Polyfills. Хотя в будущем изменения могут произойти, в настоящее время версия 2.x устранена от всех внешних зависимостей.
Важные изменения
соединение
В версии 1.x класс Connection предоставляет множество методов. А в 2.x используется более функциональный подход для реализации:
JavaScript import { createSolanaRpcApi } из '@solana/web3.js';
const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });
// Используйте rpc для отправки транзакции const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);
При вызове sendAndConfirmTransaction для отправки транзакции автоматически инициируется HTTPS-запрос и устанавливается WSS-соединение для подписки на состояние транзакции, после подтверждения транзакции возвращается хэш транзакции.
ключевая пара
В версии 2.x классы Keypair и PublicKey, которые часто использовались в версии 1.x, больше не существуют и заменены некоторыми функциями. Например, теперь можно использовать await generateKeyPair() для генерации пары ключей, а не предыдущий Keypair.generate().
Новый generateKeyPair возвращает Promise, так как новая реализация в максимальной степени использует Web Crypto API JavaScript и использует нативную реализацию Ed25519. Многие методы Web Crypto API являются асинхронными.
Отправить транзакцию
В версии 2.x больше нет классов Transaction и VersionedTransaction. Методы, связанные с System Program, также больше не существуют и должны быть импортированы из других мест. Например, инструкция transfer требует вызова функции getTransferSolInstruction из @solana-program/system.
Новая версия предлагает форму pipe, часто используемую в функциональном программировании. Ниже приведен пример реализации функции перевода, изначально существовавшей в версии 1.x, с использованием функции pipe:
JavaScript import { pipe } из '@solana/functional'; import { getTransferSolInstruction } из '@solana/system-program'; импорт { addSignatureToTransaction, createTransaction, sendAndConfirmTransaction, } из '@solana/web3.js';
const transferSol = pipe( // Создание транзакции (ix) => createTransaction({ инструкции: [ix] }), // Добавить подпись (tx) = > addSignatureToTransaction(tx, signer), // Отправить и подтвердить транзакцию (signedTx) = > sendAndConfirmTransaction(rpc, signedTx) );
const signature = ожидать transferSol( getTransferSolInstruction({ от: отправитель, к: получатель, сумма, }) );
По сравнению с версией 1.x, объем кода увеличился, но возможность настройки стала более выраженной. Транзакции инициируются через HTTPS RPC, а затем подтверждаются через подписку на WSS RPC.
React поддержка
В проекте @solana/web3.js также есть библиотека под названием @solana/react, которая предоставляет несколько React Hook и включает в себя такие функции, как signIn.
Резюме
Выпуск версии 2.x @solana/web3.js демонстрирует решимость команды Solana к постоянным улучшениям. Новая версия предоставляет разработчикам эффективный, гибкий и настраиваемый способ взаимодействия с сетью Solana, что должно способствовать принятию и развитию этой платформы.