Version 2.x de Solana Web3.js : une mise à niveau majeure avec une conception modulaire et une programmation fonctionnelle.

robot
Création du résumé en cours

Solana Web3.js 2.x version : une toute nouvelle expérience de programmation fonctionnelle

Solana Web3.js, en tant que bibliothèque JavaScript riche en fonctionnalités, a officiellement publié la version 2.x en novembre de cette année. Par rapport à la version 1.x, la nouvelle version apporte une série de changements majeurs, cet article résumera les principales évolutions.

Bien que la version 2.x vient d'être publiée et que son utilisation n'est pas encore répandue, de nombreuses bibliothèques largement utilisées n'ont pas encore été migrées. Cependant, se familiariser avec ces changements à l'avance sera très bénéfique pour les travaux de migration futurs.

Web3 Nouveau venu : Maintenant, mettez à jour @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, et toutes les fonctionnalités y sont concentrées. 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 requises par les développeurs. De plus, le riche code d'exemple dans le Solana cookbook offre également une grande commodité aux développeurs.

Cependant, ce type de conception entraîne également certains 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 sera téléchargé sur l'appareil de l'utilisateur. Étant donné le volume important de code dans la bibliothèque, cela peut entraîner un certain temps de chargement.

En comparaison, la version 2.x adopte une approche de conception modulaire. 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. Parallèlement, la nouvelle version abandonne l'implémentation basée sur des classes et adopte plutôt une approche basée sur des fonctions uniques, ce qui aide grandement à l'optimisation lors de la construction du code JavaScript. Le code non utilisé sera supprimé et ne sera pas téléchargé sur les appareils des utilisateurs. Selon les statistiques de 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 a également élevé les exigences en matière de qualité de la documentation de l'équipe Solana. Comment permettre aux développeurs de localiser rapidement les fonctionnalités nécessaires est devenu une question clé. À l'heure actuelle, il semble que la nomination des différents packages ait une bonne sémantique, permettant de déduire à peu près leur utilisation rien qu'à 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 terminé leur migration. Les exemples concernant la version 2.x sur le Solana Cookbook sont également relativement limités. 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 n'est pas assez détaillée sur ces parties, ce qui peut laisser les développeurs confus.

Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Cela peut ne pas avoir un grand impact sur les utilisateurs ordinaires, 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, un trop grand nombre d'entrées et de dépendances externes peut augmenter considérablement le risque d'incidents de sécurité. Avec la publication de la version 2.x, l'équipe de développement de Web3.js a décidé de tirer davantage parti des fonctionnalités natives, réduisant 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

connexion

Dans la version 1.x, la classe Connection offre de nombreuses méthodes. Mais sa fonctionnalité principale reste la création d'un émetteur de requêtes en configurant l'adresse RPC, puis en envoyant diverses requêtes à travers celui-ci.

La version 2.x adopte une approche plus fonctionnelle pour réaliser cette fonctionnalité :

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

const rpc = createSolanaRpc("");

Lorsque nous appelons sendAndConfirmTransaction pour envoyer une transaction, cela lance 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 qu'elle est 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, 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().

Il est à noter que le nouveau generateKeyPair retourne une Promise, plutôt que de renvoyer directement la 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 s'appuyant sur l'implémentation native d'Ed25519. De nombreuses méthodes de l'API Web Crypto sont asynchrones. Cependant, pour les développeurs JavaScript familiers avec les Promises, ce changement ne devrait pas être difficile à s'adapter.

envoyer la transaction

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

Les méthodes liées au System Program fournies dans l'ancienne version n'existent plus, et les méthodes statiques de la classe SystemProgram doivent être importées d'ailleurs.

Par exemple, l'instruction transfer nécessite maintenant d'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 mise en œuvre de la fonction de transfert d'origine 1.x à l'aide de 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 sendAndConfirmTransaction(rpc, transaction, [senderKeypair]);

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 augmenté, mais la personnalisation est devenue plus forte.

Les transactions sont initiées via HTTPS RPC, puis confirmées par l'abonnement à WSS RPC. On peut ressentir que cette nouvelle méthode dépend fortement de WSS, et je crois que l'application 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 convient de mentionner que le projet @solana/web3.js comprend également une bibliothèque appelée @solana/react, qui fournit certains hooks React avec des fonctionnalités intégrées telles que signIn.

Résumé

La publication de la version 2.x de @solana/web3.js démontre l'engagement de l'équipe Solana envers le développement et l'amélioration continus. 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 Débutant Série : Mettez à niveau maintenant @solana/web3.js 2.x pour activer la programmation fonctionnelle

Voir l'original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Récompense
  • 5
  • Partager
Commentaire
0/400
RugPullSurvivorvip
· 07-12 23:48
Changer n'est que du vent... autant tout réécrire.
Voir l'originalRépondre0
Degen4Breakfastvip
· 07-12 23:48
Ça a finalement décollé.
Voir l'originalRépondre0
digital_archaeologistvip
· 07-12 23:40
Goutte dépendance bonne évaluation
Voir l'originalRépondre0
AirdropHunterWangvip
· 07-12 23:32
C'est tout ? Les fonctionnalités manquent encore, non ?
Voir l'originalRépondre0
metaverse_hermitvip
· 07-12 23:31
Ah, cette migration est vraiment ennuyeuse.
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)