Mise à niveau majeure de la version 2.x de Solana Web3.js : conception modulaire améliorant la performance et la sécurité

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

La version 2.x de Solana Web3.js, une bibliothèque JavaScript puissante, a été officiellement publiée en novembre de cette année. Cette mise à niveau a apporté des changements significatifs, résumons brièvement les principales mises à jour.

Bien que la version 2.x vient juste d'être lancée et que son taux d'utilisation ne soit pas encore généralisé, de nombreuses bibliothèques largement utilisées n'ont pas encore été migrées. Cependant, se familiariser avec ces changements à l'avance est très bénéfique pour se préparer aux mises à niveau futures.

Web3 Série pour débutants : mettez à jour maintenant @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 paquet @solana/web3.js, toutes les fonctionnalités y sont regroupées. Elle est basée sur un design orienté objet et encapsule 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 livre de recettes Solana fournit également un riche code d'exemple, facilitant la recherche des fonctionnalités requises par les 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 du code source sera téléchargé sur l'appareil de l'utilisateur. En raison de la taille importante du code, cela peut prendre un certain temps.

En comparaison, la version 2.x adopte une approche de conception modulaire. L'équipe officielle a décomposé l'ancienne base de 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 utilise davantage des fonctions individuelles. Cette conception est très utile pour l'optimisation lors de la construction de code JavaScript, les codes non utilisés seront supprimés et ne seront pas téléchargés sur les appareils des utilisateurs. Selon les statistiques du document officiel, 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 pourrait être encore plus élevé.

Ce changement impose également des exigences plus élevées en matière de qualité de la documentation de l'équipe Solana. Comment permettre aux développeurs de trouver rapidement les fonctionnalités nécessaires devient une question importante. À l'heure actuelle, il semble qu'au moins les noms de paquets aient une bonne sémantique, permettant de comprendre en gros leur utilisation rien qu'à partir de leur nom. Cela peut, dans une certaine mesure, réduire la difficulté de migration pour les développeurs.

Bien sûr, étant donné qu'il vient d'être publié, de nombreux projets n'ont pas encore effectué la migration. Les exemples concernant la version 2.x sur Solana Cookbook sont également relativement rares. De plus, comme la nouvelle version a tendance à utiliser des fonctionnalités intégrées dans le runtime (comme la génération de paires de clés), la documentation manque de descriptions sur ces parties, ce qui peut laisser certaines zones déroutantes pour les développeurs.

Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Cela peut ne pas sembler important pour de nombreux utilisateurs, mais d'après l'attaque de la chaîne d'approvisionnement survenue début décembre cette année sur les versions 1.95.5 et 1.95.6 de @solana/web3.js, une plus grande quantité d'entrées et de dépendances externes augmente considérablement 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, en éliminant les dépendances externes et l'introduction de Polyfills. Bien que des changements puissent survenir à l'avenir, la version 2.x a au moins éliminé toutes les dépendances externes.

Points de changement importants

connexion

Comme mentionné précédemment, la version 1.x offre de nombreuses méthodes via Connection. Cependant, sa fonction principale reste de créer un émetteur de requêtes en configurant l'adresse RPC, puis d'envoyer diverses requêtes à travers celui-ci.

Dans la version 2.x, une approche plus fonctionnelle a été adoptée pour la mise en œuvre :

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

const rpc = createSolanaRpc("");

Lorsque nous appelons "sendAndConfirmTransaction" pour envoyer une transaction, une requête HTTPS est automatiquement initiée et une connexion WSS est établie, s'abonnant à l'état de la transaction, et le hash de la transaction est renvoyé une fois la transaction confirmée.

paire de clés

Une grande évolution a également eu lieu dans la partie liée 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 utiliser "await generateKeyPair()" pour générer une paire de clés, alors qu'auparavant, elle était directement générée via "Keypair.generate()".

Vous avez peut-être remarqué que le nouveau generateKeyPair renvoie une Promise, au lieu de renvoyer directement la paire de clés comme auparavant. Cela est dû au fait que la nouvelle implémentation tire parti de l'API Web Crypto de JavaScript autant que possible, utilisant l'implémentation native d'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 Promises.

envoyer la transaction

Les utilisateurs de 1.x devraient être très familiers avec les classes "Transaction" et "VersionedTransaction". Lorsqu'on découvre Solana pour la première fois, la relation entre ces deux classes peut prêter à confusion.

Dans la version 2.x, ces deux classes n'existent également 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, l'instruction "transfer" nécessite d'appeler la fonction "getTransferSolInstruction" dans "@solana-program/system".

Comme la classe n'est plus fournie, Web3.js propose une forme "pipe" couramment utilisée en programmation fonctionnelle. Voici un exemple de la fonction de transfert d'origine 1.x réalisée via la fonction pipe :

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

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ de : senderPublicKey, à : recipientPublicKey, montant : lamports, })), setComputeUnitLimit(200_000), addSignature(senderSignature) );

const signature = await sendAndConfirmTransaction(rpc, transaction);

On peut constater que les transactions ne sont plus initiées via Connection, mais plutôt générées par une fonction unique définie par notre RPC Provider, puis cette fonction est appelée pour initier la transaction. Par rapport à la version 1.x, le volume de code a augmenté, mais l'avantage est 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 fortement de WSS, et je crois que l'application de WSS sera de plus en plus répandue à l'avenir, ce qui exige effectivement une plus grande stabilité des services des fournisseurs RPC.

Réagir

Il est intéressant 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 comme 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 continus. Elle offre aux développeurs un moyen efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui contribue à promouvoir l'adoption et le développement de la plateforme.

Web3 Nouveau : Mettez à niveau @solana/web3.js 2.x pour commencer la programmation fonctionnelle

SOL2.74%
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
  • 6
  • Reposter
  • Partager
Commentaire
0/400
RetiredMinervip
· 08-01 03:21
À un certain âge, on se lance encore dans de nouvelles versions.
Voir l'originalRépondre0
IntrovertMetaversevip
· 07-31 08:40
La mise à niveau est rapide, mais personne ne l'utilise.
Voir l'originalRépondre0
LeverageAddictvip
· 07-29 23:23
Tuez l'ancienne équipe de projet
Voir l'originalRépondre0
OnchainHolmesvip
· 07-29 23:22
Enfin arrivé, je me casse.
Voir l'originalRépondre0
TokenVelocityTraumavip
· 07-29 23:21
Les mises à niveau, c'est vraiment trop fatigant. Je m'en vais.
Voir l'originalRépondre0
ProofOfNothingvip
· 07-29 23:13
Hé hé, vous pouvez essayer après la mise à niveau.
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)