Solana Web3.js 2.x : reconstruction modulaire et amélioration des performances

Solana Web3.js version 2.x : séparation des fonctionnalités et optimisation des performances

La bibliothèque JavaScript riche en fonctionnalités, Solana Web3.js, a officiellement publié la version 2.x en novembre de cette année. Par rapport à la version 1.x, la nouvelle version présente des changements significatifs dans sa structure et sa mise en œuvre. Cet article résumera ces principaux changements pour aider les développeurs à se préparer à la migration future.

Web3 Débutant Série : Mettez à niveau @solana/web3.js 2.x pour activer la programmation fonctionnelle

Comparaison des versions

Les principales caractéristiques de la version 1.x sont sa simplicité et sa facilité d'utilisation. Elle ne contient qu'un seul package @solana/web3.js, basé sur un design orienté objet, encapsulant un grand nombre d'opérations courantes. Par exemple, la classe Connection offre des dizaines de méthodes, couvrant presque toutes les fonctionnalités nécessaires aux développeurs. Cependant, ce design pose également certains problèmes, tels qu'une taille de bibliothèque de code importante, nécessitant que les appareils des utilisateurs téléchargent un grand nombre de codes qui pourraient ne pas être utilisés.

La version 2.x adopte une stratégie différente. L'équipe de développement a divisé le code source en plusieurs petits modules, tels que @solana/accounts, @solana/codecs, @solana/rpc, etc. La nouvelle version abandonne l'implémentation basée sur des classes au profit d'une approche par fonctions uniques, ce qui favorise l'optimisation lors de la construction du code JavaScript. Le code inutilisé sera supprimé et ne sera pas téléchargé sur les appareils des utilisateurs. Selon les statistiques officielles, les DApps utilisant la nouvelle version peuvent généralement bénéficier d'une optimisation de volume de 30 % ; si seules quelques fonctionnalités sont utilisées, le taux d'optimisation pourrait être encore plus élevé.

Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Compte tenu des récentes attaques sur la chaîne d'approvisionnement survenues dans les versions 1.95.5 et 1.95.6, réduire les dépendances externes peut considérablement réduire les risques de sécurité. La nouvelle version utilise davantage de fonctionnalités natives, éliminant ainsi l'introduction de dépendances externes et de Polyfills.

Points de changement importants

connexion

La version 2.x utilise une approche plus fonctionnelle pour gérer les connexions. La classe Connection n'est plus utilisée, mais un émetteur de requêtes est créé en configurant l'adresse de la requête RPC. Par exemple, lors de l'envoi d'une transaction, une requête HTTPS est automatiquement lancée et une connexion WSS est établie pour s'abonner à l'état de la transaction.

paire de clés

Le traitement des clés publiques et privées a également changé. Les classes Keypair et PublicKey, couramment utilisées dans la version 1.x, ont été remplacées par certaines fonctions. Par exemple, vous utilisez désormais await generateKeyPair() pour générer une paire de clés, plutôt que l'ancienne méthode Keypair.generate(). La nouvelle implémentation utilise l'API Web Crypto de JavaScript et s'appuie sur l'implémentation native d'Ed25519, ce qui a rendu certaines méthodes asynchrones.

envoyer la transaction

La version 2.x n'utilise plus les classes Transaction et VersionedTransaction. Les méthodes liées au Program System doivent également être importées d'autres endroits. Par exemple, l'instruction transfer doit maintenant appeler la fonction getTransferSolInstruction dans @solana-program/system.

La nouvelle version propose une forme de pipe couramment utilisée en programmation fonctionnelle. Les développeurs peuvent utiliser la fonction pipe pour réaliser la fonctionnalité de transfert de la version 1.x. Bien que la quantité de code ait augmenté, elle offre une plus grande personnalisation.

React prend en charge

Il convient de noter que le projet @solana/web3.js comprend également une bibliothèque appelée @solana/react, qui fournit des hooks React et intègre des fonctionnalités telles que signIn.

Résumé

La publication de la version 2.x de Solana Web3.js démontre l'engagement de l'équipe de développement envers l'amélioration continue. La nouvelle version offre aux développeurs un moyen plus efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui devrait favoriser le développement et l'application ultérieurs de la plateforme. Bien que de nombreux projets n'aient pas encore migré vers la nouvelle version, comprendre ces changements aidera les développeurs à se préparer pour la transition future.

Série pour débutants en Web3 : mise à jour maintenant @solana/web3.js 2.x pour activer la programmation fonctionnelle

SOL-6.72%
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • 5
  • Partager
Commentaire
0/400
StablecoinArbitrageurvip
· 07-30 14:36
*ajuste ses lunettes* hmm... d'après mon analyse des indicateurs de performance, la division en modules devrait réduire la latence d'environ 47 points de base.
Voir l'originalRépondre0
MissingSatsvip
· 07-30 14:34
Enfin, la mise à jour est arrivée, j'ai attendu une année.
Voir l'originalRépondre0
LucidSleepwalkervip
· 07-30 14:34
La version 2.x est arrivée, je ne peux plus apprendre.
Voir l'originalRépondre0
DuckFluffvip
· 07-30 14:27
Hé, mets-toi à jour, tu utilises encore la version 1.x.
Voir l'originalRépondre0
BrokenYieldvip
· 07-30 14:15
enfin une gestion des risques dans sol... ils ont mis assez de temps, smh
Voir l'originalRépondre0
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)