Publication de Solana Web3.js 2.x : une mise à niveau majeure en programmation fonctionnelle et optimisation des performances

Solana Web3.js version 2.x : un nouveau chapitre de la programmation fonctionnelle

La bibliothèque JavaScript riche en fonctionnalités, Solana Web3.js, a officiellement lancé sa version 2.x en novembre de cette année. Par rapport à la version 1.x, la nouvelle version apporte des 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 ne soit pas encore élevée, de nombreuses bibliothèques largement utilisées n'ont pas encore été migrées, comprendre ces changements sera très bénéfique pour les futures mises à niveau de projets.

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

Comparaison des versions

L'utilisation de la version 1.x est relativement simple. Elle ne contient qu'un seul package principal : @solana/web3.js, qui intègre toutes les fonctionnalités. Cette version est basée sur un design orienté objet et encapsule une grande variété 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 présente également certains problèmes. Bien que les fonctionnalités réellement utilisées par les développeurs ne soient qu'une petite partie, tout le code de la bibliothèque sera téléchargé sur l'appareil de l'utilisateur, ce qui peut entraîner un temps de chargement prolongé.

La version 2.x adopte une approche différente. L'équipe officielle a divisé l'ancien code en plusieurs petits modules, tels que @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, 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 en réalité pas téléchargé sur les appareils des utilisateurs. Selon la documentation officielle, les DApps utilisant la nouvelle version peuvent généralement bénéficier d'une optimisation de volume de 30 %, et si seules quelques fonctionnalités sont utilisées, le taux d'optimisation peut être encore plus élevé.

Ce changement impose des exigences plus élevées en matière de qualité de la documentation pour l'équipe de Solana. Comment permettre aux développeurs de trouver rapidement les fonctionnalités nécessaires est devenu un problème clé. À l'heure actuelle, la sémantique des noms de packages semble plutôt bonne, permettant de comprendre leur utilité d'un simple coup d'œil, ce qui réduit dans une certaine mesure la difficulté de migration pour les développeurs.

Étant donné qu'il a été récemment lancé, de nombreux projets n'ont pas encore migré. Il y a également peu d'exemples concernant la version 2.x sur Solana Cookbook. De plus, la nouvelle version a tendance à utiliser des fonctionnalités intégrées au runtime (comme la génération de paires de clés), mais la documentation est insuffisante sur ces parties, ce qui peut laisser certains développeurs confus.

Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Cela peut ne pas sembler très important pour de nombreux utilisateurs, mais compte tenu de l'attaque de la chaîne d'approvisionnement sur les versions 1.95.5 et 1.95.6 de @solana/web3.js début décembre de cette année, 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 de fonctionnalités natives, en éliminant les dépendances externes et l'introduction de Polyfills. Bien que des changements futurs soient possibles, la version 2.x a actuellement éliminé toutes les dépendances externes.

Points de changement importants

connexion

Dans la version 1.x, la classe Connection offre de nombreuses méthodes. Mais sa fonctionnalité principale est de créer un expéditeur de requêtes en configurant l'adresse de demande RPC, puis d'utiliser cet expéditeur pour envoyer diverses requêtes.

La version 2.x adopte une approche plus fonctionnelle :

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

const rpc = createSolanaRpc(');

// Utiliser rpc pour envoyer des transactions const signature = await rpc.sendAndConfirmTransaction(transaction);

Dans cette nouvelle version, lorsque nous appelons sendAndConfirmTransaction pour envoyer une transaction, il initie automatiquement une requête HTTPS et établit une connexion WSS pour s'abonner à l'état de la transaction, retournant le hash de la transaction une fois celle-ci confirmée.

paire de clés

Il y a également des changements majeurs concernant les parties liées aux clés publiques et privées. Les classes Keypair et PublicKey, couramment utilisées dans la version 1.x, n'existent plus et ont été remplacées par certaines fonctions.

Par exemple, vous pouvez maintenant utiliser await generateKeyPair() pour générer une paire de clés, au lieu de l'ancienne 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 tire parti de l'API Web Crypto de JavaScript, en utilisant l'implémentation native Ed25519. De nombreuses méthodes de l'API Web Crypto sont asynchrones. Cependant, ce changement n'est pas inacceptable, car à la fin de l'année 2024, les développeurs JavaScript sont déjà très familiers avec les Promesses.

envoyer la transaction

Les utilisateurs de la version 1.x devraient être très familiers avec les classes Transaction et VersionedTransaction, dont la relation a souvent laissé perplexes de nombreux développeurs.

Dans la version 2.x, ces deux classes n'existent plus.

Les méthodes liées au System Program fournies dans l'ancienne version n'existent plus, donc toutes 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.

Étant donné que la classe n'est plus fournie, Web3.js propose une forme de pipe couramment utilisée en programmation fonctionnelle. Voici un exemple de l'utilisation de la fonction pipe pour implémenter la fonctionnalité de transfert de la version 1.x.

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

const rpc = createSolanaRpc(');

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ de : senderPublicKey, à : recipientPublicKey, montant : transferAmount, })) );

const signature = await rpc.sendAndConfirmTransaction(transaction);

On peut voir que les transactions ne sont plus initiées via Connection, mais plutôt en générant une fonction spécifique à travers notre RPC Provider défini, puis en appelant cette fonction pour initier la transaction. Par rapport à la version 1.x, la quantité de code a légèrement augmenté, mais l'avantage est une personnalisation plus forte.

Les transactions sont initiées via HTTPS RPC, puis confirmées via l'abonnement WSS RPC. On peut ressentir que la nouvelle méthode dépend fortement de WSS, et je crois que l'utilisation de WSS sera de plus en plus répandue à l'avenir, ce qui impose des exigences plus élevées en matière de stabilité des services des fournisseurs de RPC.

React prend en charge

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

Résumé

La publication de la version 2.x de @solana/web3.js illustre pleinement l'engagement de l'équipe Solana envers le développement et l'amélioration continue. Elle offre aux développeurs un moyen efficace, flexible et personnalisable d'interagir avec le réseau Solana, contribuant ainsi à l'adoption et au développement de la plateforme.

Web3 Nouveaux utilisateurs série : Mettez à jour maintenant @solana/web3.js 2.x pour activer la programmation fonctionnelle

SOL13.08%
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
  • 8
  • Reposter
  • Partager
Commentaire
0/400
CommunityJanitorvip
· 08-10 07:13
Pourquoi cela itère-t-il si lentement ?
Voir l'originalRépondre0
ProposalManiacvip
· 08-09 22:16
Il y a des progrès, mais ce n'est pas encore assez radical.
Voir l'originalRépondre0
GhostChainLoyalistvip
· 08-09 07:05
2.0 est toujours lent. Quand apprendrez-vous à surveiller les mises à jour de version toute la journée ?
Voir l'originalRépondre0
PanicSeller69vip
· 08-07 19:20
À quoi sert la mise à niveau ? Il faut encore changer de bibliothèque.
Voir l'originalRépondre0
MemeCoinSavantvip
· 08-07 07:47
basé af, solana prouvant la signification statistique dans l'évolution de web3 tbh
Voir l'originalRépondre0
FarmHoppervip
· 08-07 07:46
On utilise encore du 1.x, tss tss.
Voir l'originalRépondre0
ThreeHornBlastsvip
· 08-07 07:45
Développer le parti, pourquoi attendre encore ?
Voir l'originalRépondre0
ZkProofPuddingvip
· 08-07 07:43
C'est vraiment bon ~ ça a pris six mois pour être mis à jour.
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)