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.
ソラナ Web3.js 2.x 発表:関数型プログラミングのリファクタリングによるパフォーマンス向上
ソラナ Web3.js 2.x:関数型プログラミングの新しい章
ソラナ Web3.js ライブラリは今年11月に正式に2.xバージョンをリリースしました。1.xバージョンと比較して、新バージョンは構造と使用方法において顕著な変化がありました。本記事では、これらの主要な変更点を概説し、開発者が将来の移行に備える手助けをします。
! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする
バージョン比較
1.xバージョンの使用は比較的簡単で、@solana/web3.jsパッケージを1つインストールするだけで全機能をカバーできます。これはクラスベースの設計に基づいており、Connectionクラスのように、開発者が必要とするほぼすべての機能をカバーする数十のメソッドを提供しています。しかし、この設計は、コードベースが大きすぎるといったいくつかの問題を引き起こします。たとえ開発者が少数の機能しか使用しなくても、ライブラリ全体がユーザーのデバイスにダウンロードされることになります。
2.xバージョンは異なるアプローチを採用しています。公式チームはコードベースを複数の小型モジュールに分割しました。例えば、@solana/accounts、@solana/codecs、@solana/rpcなどです。新しいバージョンはクラスベースの実装を放棄し、単一の関数方式に切り替えました。これにより、JavaScriptコードの構築時の最適化が促進されます。未使用のコードは削除され、ユーザーのデバイスにはダウンロードされません。公式の統計によると、新しいバージョンのDAppを使用すると、通常30%のサイズ最適化が得られます。もし少数の機能のみを使用する場合、最適化の割合はさらに高くなる可能性があります。
この変化は、ソラナチームの文書の質に対してより高い要求を突きつけています。開発者が必要な機能を迅速に見つける手助けをすることが重要な問題となっています。現在、各パッケージの命名はかなりの意味を持っており、名前からその用途を大まかに推測できるため、開発者の移行の難易度をある程度軽減しています。
しかし、2.xバージョンが最近リリースされたばかりで、多くのプロジェクトがまだ移行していません。ソラナクックブックにおける2.xバージョンの例も比較的少ないです。新しいバージョンは、ランタイムに組み込まれた機能(例えば、キー ペアの生成)を使用する傾向がありますが、ドキュメントにはそれについての記述が不足しており、一部の開発者を混乱させる可能性があります。
2.xバージョンのもう一つの重要な特徴はゼロ依存です。この点は多くのユーザーにとってそれほど重要ではないかもしれませんが、2023年12月初めに@solana/web3.js 1.95.5と1.95.6バージョンで発生したサプライチェーン攻撃を見ると、外部入力と依存関係が増えることでセキュリティ事件が発生する可能性が大幅に高まることがわかります。2.xバージョンのリリースに伴い、開発チームはネイティブ機能をより多く使用し、外部依存関係とPolyfillsの導入を取りやめることを決定しました。現在、2.xバージョンはすべての外部依存関係を排除しています。
重要な変更点
###接続
2.xバージョンでは、接続の実装がより関数型の方法を採用しています:
JavaScriptの import { createSolanaRpc } from '@solana/web3.js';
const rpc = createSolanaRpc(');
sendAndConfirmTransactionを呼び出して取引を送信すると、自動的にHTTPSリクエストが発生し、WSS接続を確立して取引の状態を監視します。取引が確認されると、取引ハッシュが返されます。
鍵ペア
2.xバージョンでは、従来のKeypairおよびPublicKeyクラスがいくつかの関数に置き換えられました。例えば、現在はawait generateKeyPair()を使用してキー ペアを生成できるようになり、以前のKeypair.generate()は不要です。
新しいgenerateKeyPairはPromiseを返します。これは、新しい実装が可能な限りJavaScriptのWeb Crypto APIを活用し、ネイティブのEd25519実装を使用しているためです。Web Crypto APIの多くのメソッドは非同期です。
トランザクションを送信する
バージョン 2.x では、Transaction クラスと VersionedTransaction クラスは使用されなくなりました。 システムプログラム関連の方法はもはや存在しないため、他の場所から導入する必要があります。 たとえば、transfer ディレクティブは、@solana-program/system の getTransferSolInstruction 関数を呼び出す必要があります。
新しいバージョンでは、関数型プログラミングで一般的に使用されるpipe形式が提供されます。以下はpipe関数を使用して送金機能を実装する例です:
JavaScriptの import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/programs';
const トランザクション = pipe( createTransaction({ バージョン: 0 }), addInstruction(getTransferSolInstruction({ 差出人: senderPublicKey, 宛先: recipientPublicKey, 量:lamports、 })) );
const signature = sendAndConfirmTransaction(rpc、トランザクション、signers)を待機します。
1.xバージョンと比べて、コード量はわずかに増加しましたが、より強力なカスタマイズ性を提供しています。
React のサポート
@solana/web3.jsプロジェクトには、@solana/reactという名前のライブラリも含まれており、一部のReact Hookを提供し、signInなどの機能を内蔵しています。
サマリー
@solana/web3.js 2.xバージョンのリリースは、ソラナチームの持続可能な発展と改善へのコミットメントを示しています。新しいバージョンは、開発者にソラナネットワークと相互作用するための効率的で柔軟かつカスタマイズ可能な方法を提供し、このプラットフォームの採用と発展を促進することが期待されています。
! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする