Випущено версію 2.x Solana Web3.js: функціональне програмування з реконструкцією принесли значну оптимізацію

robot
Генерація анотацій у процесі

Solana Web3.js версія 2.x: новий досвід функціонального програмування

Бібліотека Solana Web3.js, яка є функціонально багатою JavaScript бібліотекою, офіційно випустила версію 2.x у листопаді цього року. У порівнянні з попередньою версією 1.x, нова версія зазнала значних змін. У цій статті будуть підсумовані основні зміни.

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

Серія для новачків Web3: тепер оновіть @solana/web3.js 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 на 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 використовує більш функціональний підхід для реалізації цієї функції. Наприклад, коли викликається sendAndConfirmTransaction для відправки транзакції, автоматично ініціюється HTTPS-запит і встановлюється WSS-з'єднання для підписки на статус транзакції, а після підтвердження транзакції повертається хеш транзакції.

ключова пара

Частина, пов'язана з публічними та приватними ключами, також зазнала значних змін. У версії 1.x більше не існує широко використовуваних класів Keypair та PublicKey, їх замінили деякі функції.

Наприклад, зараз можна використовувати await generateKeyPair() для генерації ключової пари, замість попереднього Keypair.generate(). Варто зазначити, що новий generateKeyPair повертає Promise, оскільки нова реалізація максимально використовує Web Crypto API JavaScript, використовуючи рідну реалізацію Ed25519. Багато методів Web Crypto API є асинхронними. Проте ця зміна не є неприйнятною, адже в 2024 році, коли цей рік добігає кінця, розробники JavaScript вже дуже добре знайомі з Promise.

Надіслати транзакцію

Класи Transaction та VersionedTransaction, знайомі користувачам версії 1.x, більше не існують у версії 2.x.

Методи, пов'язані з 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 для початку функціонального програмування

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 4
  • Поділіться
Прокоментувати
0/400
MemeCoinSavantvip
· 07-15 21:50
згідно з моїми статистичними моделями, цей парадигмальний зсув оснований на ngl
Переглянути оригіналвідповісти на0
MEVHunterZhangvip
· 07-15 21:45
Нарешті дочекалися реконструкції, дуже довго чекали.
Переглянути оригіналвідповісти на0
OnlyOnMainnetvip
· 07-15 21:39
сол Босса діє надто швидко, чи не так?
Переглянути оригіналвідповісти на0
LiquidityNinjavip
· 07-15 21:35
Надійно~ нарешті використовую функціональний!
Переглянути оригіналвідповісти на0
  • Закріпити