Publication de Solana Web3.js 2.x : conception modulaire optimisant les performances et améliorant la sécurité

robot
Création du résumé en cours

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. Cette nouvelle version présente des changements significatifs par rapport à la version 1.x, cet article fournira un aperçu de ses principales modifications.

Bien que la version 2.x vient tout juste de sortir et que son taux d'utilisation ne soit pas encore généralisé, de nombreuses bibliothèques à forte utilisation n'ont pas encore effectué la transition. Cependant, comprendre ces changements est très utile pour les travaux de migration futurs.

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

Comparaison des versions

La version 1.x est relativement simple à utiliser, il suffit d'importer le package unique @solana/web3.js. Elle est basée sur une conception orientée objet et encapsule une multitude 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, cette conception entraîne également quelques problèmes. Bien que les développeurs n'utilisent généralement qu'une petite partie de ses fonctionnalités, l'ensemble de la base de code est téléchargé sur les appareils des utilisateurs, ce qui peut entraîner des temps de chargement prolongés.

La version 2.x adopte 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, @solana/transactions, etc. En même temps, elle a abandonné l'implémentation basée sur des classes pour adopter une approche basée sur des fonctions individuelles. Ce changement favorise l'optimisation lors de la construction du code JavaScript, 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, l'utilisation de la nouvelle version de DApp permet généralement d'atteindre une optimisation de taille de 30 %. Si seules quelques fonctionnalités sont utilisées, le taux d'optimisation peut être encore plus élevé.

Ces changements posent de nouveaux défis à l'équipe de documentation de Solana, et il est devenu crucial de permettre aux développeurs de trouver rapidement les fonctionnalités dont ils ont besoin. Il semble que les noms des paquets aient une bonne sémantique, ce qui permet de comprendre en gros leur utilisation simplement à partir de leur nom, ce qui réduit dans une certaine mesure la difficulté de migration pour les développeurs.

Étant donné que la nouvelle version vient juste d'être publiée, de nombreux projets n'ont pas encore effectué la migration. Actuellement, les exemples de la version 2.x sont relativement rares. De plus, comme la nouvelle version a tendance à utiliser des fonctionnalités intégrées au runtime (comme la génération de paires de clés), la documentation manque de descriptions pertinentes, ce qui peut laisser certains développeurs perplexes.

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 survenue début décembre cette année sur les versions @solana/web3.js 1.95.5 et 1.95.6, réduire les dépendances externes peut considérablement réduire la probabilité d'incidents de sécurité. Avec la publication de la version 2.x, l'équipe de développement de Web3.js a décidé d'utiliser davantage de fonctionnalités natives, éliminant ainsi 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.

Points de changement importants

se connecter

Dans la version 1.x, la classe Connection offre de nombreuses méthodes. Dans la version 2.x, une approche plus fonctionnelle a été adoptée pour l'implémentation :

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

const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

// Utiliser rpc pour envoyer des transactions const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);

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. Après confirmation de la transaction, le hash de la transaction est retourné.

paire de clés

Dans la version 2.x, 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 utiliser await generateKeyPair() pour générer une paire de clés, au lieu de l'ancienne méthode Keypair.generate().

Le nouveau generateKeyPair retourne une promesse, car la nouvelle implémentation utilise autant que possible l'API Web Crypto de JavaScript, en utilisant l'implémentation Ed25519 native. De nombreuses méthodes de l'API Web Crypto sont asynchrones.

envoyer la transaction

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

La nouvelle version propose une forme pipe couramment utilisée dans la programmation fonctionnelle. Voici comment implémenter la fonctionnalité de transfert de la version 1.x en utilisant la fonction pipe :

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; importer { addSignatureToTransaction, createTransaction, sendAndConfirmTransaction, } de '@solana/web3.js';

const transferSol = pipe( // Créer une transaction (ix) => createTransaction({ instructions: [ix] }), // Ajouter une signature (tx) => addSignatureToTransaction(tx, signer), // Envoyer et confirmer la transaction (signedTx) => sendAndConfirmTransaction(rpc, signedTx) );

const signature = await transferSol( getTransferSolInstruction({ de : expéditeur, à: destinataire, montant, }) );

Par rapport à la version 1.x, le volume de code a augmenté, mais la personnalisation est plus forte. Les transactions sont initiées via HTTPS RPC, puis confirmées par la souscription à WSS RPC.

React prend en charge

Le projet @solana/web3.js comprend également une bibliothèque appelée @solana/react, qui propose 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 la détermination de l'équipe Solana à améliorer continuellement. La nouvelle version offre aux développeurs un moyen efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui devrait favoriser l'adoption et le développement de la plateforme.

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

SOL8.36%
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
OnchainFortuneTellervip
· Il y a 15h
Regarder l'apparence du BTC, c'est un escroc.
Voir l'originalRépondre0
NoodlesOrTokensvip
· Il y a 15h
Enfin mis à jour, ça traîne.
Voir l'originalRépondre0
SandwichTradervip
· Il y a 15h
Pourquoi courir si vite ? L'architecture est-elle déjà en panique ?
Voir l'originalRépondre0
staking_grampsvip
· Il y a 15h
Waouh, j'ai un peu envie d'apprendre.
Voir l'originalRépondre0
AirdropHunter007vip
· Il y a 15h
Encore encore encore en retard ! Demande d'Airdrop...
Voir l'originalRépondre0
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)