Grande mise à jour de la version 2.x de Solana Web3.js : séparation des fonctionnalités et amélioration des performances sans dépendances.

Solana Web3.js 2.x version : mise à jour majeure d'une bibliothèque JavaScript riche en fonctionnalités

Solana Web3.js, en tant que bibliothèque JavaScript puissante, a officiellement lancé la version 2.x en novembre. Par rapport à la version 1.x, la nouvelle version apporte de nombreux changements significatifs, cet article présentera un aperçu de ses principales mises à jour.

Bien que la version 2.x vient d'être publiée et que son utilisation soit encore faible, de nombreuses bibliothèques largement utilisées n'ont pas encore été migrées, il est essentiel de comprendre ces changements pour les futurs travaux de migration.

Web3 Nouveaux utilisateurs : Mettez à niveau @solana/web3.js 2.x pour activer la programmation fonctionnelle

Comparaison des versions

Il est indéniable que l'ancienne version est plus simple et directe à utiliser. La version 1.x ne contient qu'un seul package @solana/web3.js, qui intègre toutes les fonctionnalités. Elle est basée sur un design orienté objet, encapsulant de nombreuses 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. De plus, le riche code d'exemple dans le cookbook de Solana offre une grande commodité aux développeurs.

Cependant, ce design pose également quelques problèmes. Bien que les fonctionnalités réellement utilisées par les développeurs ne représentent qu'une petite partie, l'ensemble de la bibliothèque de code doit être téléchargé sur l'appareil de l'utilisateur, ce qui peut entraîner un certain délai de chargement en raison de la taille importante du code de la bibliothèque.

La version 2.x a adopté une approche différente. L'équipe officielle a divisé l'ancienne base de code en plusieurs petits modules, tels que @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers et @solana/transactions. En même temps, la nouvelle version a abandonné l'implémentation basée sur des classes, adoptant davantage une approche basée sur des fonctions individuelles. Ce changement est très bénéfique pour l'optimisation lors de la construction de code JavaScript, car le code non utilisé sera supprimé et ne sera pas téléchargé sur l'appareil de l'utilisateur. Selon les statistiques des documents officiels, les DApps utilisant la nouvelle version peuvent généralement obtenir une optimisation de volume de 30 %, et pour les applications n'utilisant qu'un nombre limité de fonctionnalités, le taux d'optimisation peut même être plus élevé.

Ce changement a également posé des exigences plus élevées en matière de qualité de la documentation pour l'équipe Solana. Comment permettre aux développeurs de trouver rapidement les fonctionnalités nécessaires est devenu une question clé. Il semble actuellement que les nouveaux noms de paquets aient une bonne sémantique, permettant de comprendre leur utilisation à partir de leur nom, ce qui réduit dans une certaine mesure la difficulté de migration pour les développeurs.

Cependant, en raison de la récente publication de la nouvelle version, de nombreux projets n'ont pas encore effectué la migration. Les exemples concernant la version 2.x sur le Solana Cookbook sont également relativement rares. De plus, la nouvelle version a tendance à utiliser des fonctionnalités intégrées au runtime (comme la génération de clés), mais la documentation sur ces parties est insuffisante, ce qui peut laisser les développeurs confus sur certains aspects.

Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Cela peut sembler moins important pour de nombreux utilisateurs, mais compte tenu de l'attaque de la chaîne d'approvisionnement survenue début décembre cette année sur les versions @solana/web3.js 1.95.5 et 1.95.6, réduire les entrées et les dépendances externes peut considérablement diminuer la probabilité d'événements de sécurité. Avec la sortie de la version 2.x, l'équipe de développement de Web3.js a décidé d'utiliser davantage les fonctionnalités natives, abandonnant l'introduction de dépendances externes et de Polyfills. Bien que des changements puissent survenir à l'avenir, la version 2.x a déjà éliminé toutes les dépendances externes.

Changements principaux

méthode de connexion

Dans la version 1.x, la classe Connection offre de nombreuses méthodes. Sa fonction principale est de créer un expéditeur de requêtes en configurant l'adresse de requête RPC, puis d'envoyer diverses requêtes à travers celui-ci.

La version 2.x adopte une approche plus fonctionnelle :

javascript import { createSolanaRpc } from "@solana/web3.js";

const rpc = createSolanaRpc("");

Lorsque vous appelez sendAndConfirmTransaction pour envoyer une transaction, une requête HTTPS est automatiquement lancée et une connexion WSS est établie pour s'abonner à l'état de la transaction, le hachage de la transaction est renvoyé après la confirmation de la transaction.

traitement de la clé

Le traitement associé à la clé publique et à la clé privée a également subi des changements majeurs. Les classes Keypair et PublicKey couramment utilisées dans la version 1.x n'existent plus et ont été remplacées par une série de fonctions.

Par exemple, vous pouvez maintenant utiliser await generateKeyPair() pour générer une paire de clés, au lieu de l'ancienne méthode Keypair.generate().

Il est important de noter que le nouveau generateKeyPair renvoie une Promesse, plutôt que de renvoyer directement une paire de clés. Cela est dû au fait que la nouvelle implémentation utilise autant que possible l'API Web Crypto de JavaScript, en utilisant l'implémentation native d'Ed25519. De nombreuses méthodes de l'API Web Crypto sont asynchrones. Cependant, pour les développeurs modernes de JavaScript familiers avec les Promesses, ce changement n'est pas difficile à accepter.

Envoi de la transaction

Les classes Transaction et VersionedTransaction familières de la version 1.x n'existent plus dans la version 2.x.

Les méthodes liées au System Program fournies dans la version précédente ne sont plus disponibles, donc les méthodes statiques de la classe SystemProgram doivent être importées d'ailleurs.

Par exemple, la commande transfer doit maintenant appeler la fonction getTransferSolInstruction dans @solana-program/system.

Puisque les classes ne sont plus fournies, Web3.js propose une forme de pipe couramment utilisée en programmation fonctionnelle. Voici un exemple de réalisation de la fonctionnalité de transfert d'origine 1.x en utilisant la fonction pipe :

javascript import { pipe } from "@solana/web3.js"; import { getTransferSolInstruction } from "@solana/system-program";

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ fromPubkey: sender, toPubkey: recipient, lamports : montant })) );

const signature = await rpc.sendTransaction(transaction);

On peut voir que les transactions ne sont plus initiées via Connection, mais plutôt via un RPC Provider que nous avons défini pour générer une fonction spécifique, puis appeler cette fonction pour initier la transaction. Par rapport à la version 1.x, la quantité de code a légèrement augmenté, mais cela offre une plus grande personnalisation.

Les transactions sont initiées via HTTPS RPC, puis confirmées par l'abonnement à WSS RPC. On peut sentir que cette nouvelle méthode dépend davantage de WSS, et on croit que l'application de WSS sera plus répandue à l'avenir, ce qui impose également des exigences plus élevées en matière de stabilité des services des fournisseurs de RPC.

React prend en charge

Il convient de mentionner que le projet @solana/web3.js inclut é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 pleinement la détermination de l'équipe Solana à s'améliorer et à se développer de manière continue. La nouvelle version offre aux développeurs un moyen efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui contribue à favoriser l'adoption et le développement de cette plateforme. Bien qu'elle soit encore à un stade précoce, avec le transfert de plus de projets et l'adaptation de la communauté, on peut croire que la version 2.x jouera un rôle encore plus important à l'avenir.

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

SOL0.85%
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
  • Reposter
  • Partager
Commentaire
0/400
GweiWatchervip
· 08-09 18:00
L'ancien ne se met pas à jour.
Voir l'originalRépondre0
TheShibaWhisperervip
· 08-09 18:00
Quand est-ce que la mise à niveau sera terminée, c'est énervant.
Voir l'originalRépondre0
SchrodingerWalletvip
· 08-09 17:54
Encore une fois, il faut se débattre avec la migration, c'est écœurant.
Voir l'originalRépondre0
SorryRugPulledvip
· 08-09 17:50
Encore une mise à niveau et une migration, j'en ai mal à la tête.
Voir l'originalRépondre0
DaoTherapyvip
· 08-09 17:42
Attendez la mise à niveau d'abord.
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)