Solana Web3.js версія 2.x: значне оновлення потужної бібліотеки JavaScript
Бібліотека Solana Web3.js, яка є багатофункціональною JavaScript бібліотекою, офіційно випустила версію 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 вирішила більше використовувати функції рідного коду, скасувавши впровадження зовнішніх залежностей та Polyfills.
Важливі зміни
з'єднання
У версії 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:
Варто зазначити, що проект @solana/web3.js також містить бібліотеку під назвою @solana/react, яка надає кілька React Hook і має вбудовані функції, такі як signIn.
Підсумок
Випуск версії 2.x @solana/web3.js демонструє зобов'язання команди Solana до постійного розвитку та вдосконалення. Нова версія надає розробникам більш ефективний, гнучкий та настроювальний спосіб взаємодії з мережею Solana, що сподівається сприяти подальшому прийняттю та розвитку цієї платформи.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Випуск версії 2.x Solana Web3.js, оптимізувавши обсяг коду, знизивши на 30%
Solana Web3.js версія 2.x: значне оновлення потужної бібліотеки JavaScript
Бібліотека Solana Web3.js, яка є багатофункціональною JavaScript бібліотекою, офіційно випустила версію 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 вирішила більше використовувати функції рідного коду, скасувавши впровадження зовнішніх залежностей та Polyfills.
Важливі зміни
з'єднання
У версії 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 } з "@solana/web3.js";
const транзакція = pipe( createTransaction({ версія: 0 }), addInstruction(getTransferSolInstruction({ від: відправник, до: отримувача, сума: переказСума, })), setTransactionFeePayer(sender), );
const signature = чекати sendAndConfirmTransaction(rpc, транзакції, [senderKeypair]);
Підтримка React
Варто зазначити, що проект @solana/web3.js також містить бібліотеку під назвою @solana/react, яка надає кілька React Hook і має вбудовані функції, такі як signIn.
Підсумок
Випуск версії 2.x @solana/web3.js демонструє зобов'язання команди Solana до постійного розвитку та вдосконалення. Нова версія надає розробникам більш ефективний, гнучкий та настроювальний спосіб взаємодії з мережею Solana, що сподівається сприяти подальшому прийняттю та розвитку цієї платформи.