Mise à jour de la version 2.x de Solana Web3.js : adopter la programmation fonctionnelle
Solana Web3.js, en tant que bibliothèque JavaScript riche en fonctionnalités, a publié la version 2.x en novembre de cette année. Par rapport à la version 1.x, la nouvelle version apporte des changements significatifs. Bien que l'utilisation de la version 2.x soit actuellement faible et que de nombreuses bibliothèques largement utilisées n'aient pas encore été migrées, comprendre ces changements est essentiel pour le développement futur et le travail de migration.
Comparaison des versions
L'utilisation de la version 1.x est relativement simple, toutes les fonctionnalités étant regroupées dans un seul package @solana/web3.js, qui encapsule de nombreuses opérations courantes dans un design basé sur les classes. 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 pose également quelques problèmes, tels que la taille excessive de la bibliothèque, où l'appareil de l'utilisateur doit télécharger l'ensemble de la bibliothèque, même s'il n'utilise qu'une petite partie des fonctionnalités.
La version 2.x adopte un design modulaire, décomposant la base de 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 pas téléchargé sur les appareils des utilisateurs. Selon les données officielles, les applications 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é.
Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Compte tenu des récentes attaques sur la chaîne d'approvisionnement survenues dans les versions 1.95.5 et 1.95.6, réduire les dépendances externes aide à améliorer la sécurité. L'équipe de développement a décidé d'utiliser davantage les fonctionnalités natives et d'abandonner l'introduction de dépendances externes et de Polyfills.
Points de changement importants
connexion
La version 2.x utilise une approche plus fonctionnelle pour gérer les connexions. La classe Connection n'est plus utilisée, mais un émetteur de requêtes est créé en configurant l'adresse de la requête RPC. Par exemple, lors de l'envoi d'une transaction, une requête HTTPS est automatiquement lancée et une connexion WSS est établie, puis l'état de la transaction est souscrit, et après confirmation de la transaction, le hachage de la transaction est renvoyé.
paire de clés
Dans la version 2.x, les classes Keypair et PublicKey précédentes 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 Keypair.generate(). La nouvelle implémentation utilise l'API Web Crypto de JavaScript, en utilisant une implémentation Ed25519 native, ce qui entraîne la conversion de nombreuses méthodes en méthodes asynchrones.
envoyer la transaction
La version 2.x n'utilise plus les classes Transaction et VersionedTransaction. Les méthodes liées au System Program ont également été supprimées et doivent être importées d'autres paquets. Par exemple, l'instruction de transfert nécessite désormais d'appeler la fonction getTransferSolInstruction dans @solana-program/system.
La nouvelle version offre une forme de pipe couramment utilisée dans la programmation fonctionnelle. Les transactions ne sont plus initiées via Connection, mais plutôt en générant des fonctions spécifiques à partir du RPC Provider défini. Bien que cela augmente légèrement le volume de code, cela offre une plus grande personnalisation.
React prend en charge
Le projet @solana/web3.js comprend également une bibliothèque appelée @solana/react, qui fournit quelques hooks React intégrant des fonctionnalités 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 une manière plus efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui devrait favoriser l'adoption et le développement de cette plateforme. Bien qu'elle soit encore à un stade précoce, avec le temps, il est à espérer que davantage de projets migreront vers cette nouvelle version.
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.
10 J'aime
Récompense
10
5
Partager
Commentaire
0/400
DiamondHands
· 07-27 11:54
la v2 de sol est enfin arrivée
Voir l'originalRépondre0
GasGrillMaster
· 07-26 04:37
Zéro dépendance totale ? Je veux voir ça.
Voir l'originalRépondre0
GweiObserver
· 07-24 21:40
Solana a enfin pris la voie.
Voir l'originalRépondre0
ThreeHornBlasts
· 07-24 21:22
Solana a enfin été performant cette fois-ci.
Voir l'originalRépondre0
PretendingSerious
· 07-24 21:20
Cette mise à jour est enfin arrivée, tu es vraiment compréhensif.
Mise à jour de Solana Web3.js 2.x : la conception modulaire améliore les performances et la sécurité.
Mise à jour de la version 2.x de Solana Web3.js : adopter la programmation fonctionnelle
Solana Web3.js, en tant que bibliothèque JavaScript riche en fonctionnalités, a publié la version 2.x en novembre de cette année. Par rapport à la version 1.x, la nouvelle version apporte des changements significatifs. Bien que l'utilisation de la version 2.x soit actuellement faible et que de nombreuses bibliothèques largement utilisées n'aient pas encore été migrées, comprendre ces changements est essentiel pour le développement futur et le travail de migration.
Comparaison des versions
L'utilisation de la version 1.x est relativement simple, toutes les fonctionnalités étant regroupées dans un seul package @solana/web3.js, qui encapsule de nombreuses opérations courantes dans un design basé sur les classes. 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 pose également quelques problèmes, tels que la taille excessive de la bibliothèque, où l'appareil de l'utilisateur doit télécharger l'ensemble de la bibliothèque, même s'il n'utilise qu'une petite partie des fonctionnalités.
La version 2.x adopte un design modulaire, décomposant la base de 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 pas téléchargé sur les appareils des utilisateurs. Selon les données officielles, les applications 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é.
Une autre caractéristique importante de la version 2.x est l'absence de dépendances. Compte tenu des récentes attaques sur la chaîne d'approvisionnement survenues dans les versions 1.95.5 et 1.95.6, réduire les dépendances externes aide à améliorer la sécurité. L'équipe de développement a décidé d'utiliser davantage les fonctionnalités natives et d'abandonner l'introduction de dépendances externes et de Polyfills.
Points de changement importants
connexion
La version 2.x utilise une approche plus fonctionnelle pour gérer les connexions. La classe Connection n'est plus utilisée, mais un émetteur de requêtes est créé en configurant l'adresse de la requête RPC. Par exemple, lors de l'envoi d'une transaction, une requête HTTPS est automatiquement lancée et une connexion WSS est établie, puis l'état de la transaction est souscrit, et après confirmation de la transaction, le hachage de la transaction est renvoyé.
paire de clés
Dans la version 2.x, les classes Keypair et PublicKey précédentes 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 Keypair.generate(). La nouvelle implémentation utilise l'API Web Crypto de JavaScript, en utilisant une implémentation Ed25519 native, ce qui entraîne la conversion de nombreuses méthodes en méthodes asynchrones.
envoyer la transaction
La version 2.x n'utilise plus les classes Transaction et VersionedTransaction. Les méthodes liées au System Program ont également été supprimées et doivent être importées d'autres paquets. Par exemple, l'instruction de transfert nécessite désormais d'appeler la fonction getTransferSolInstruction dans @solana-program/system.
La nouvelle version offre une forme de pipe couramment utilisée dans la programmation fonctionnelle. Les transactions ne sont plus initiées via Connection, mais plutôt en générant des fonctions spécifiques à partir du RPC Provider défini. Bien que cela augmente légèrement le volume de code, cela offre une plus grande personnalisation.
React prend en charge
Le projet @solana/web3.js comprend également une bibliothèque appelée @solana/react, qui fournit quelques hooks React intégrant des fonctionnalités 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 une manière plus efficace, flexible et personnalisable d'interagir avec le réseau Solana, ce qui devrait favoriser l'adoption et le développement de cette plateforme. Bien qu'elle soit encore à un stade précoce, avec le temps, il est à espérer que davantage de projets migreront vers cette nouvelle version.