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 は2023年11月に2.xバージョンをリリースしました。1.xバージョンに比べて、新しいバージョンは顕著な変化をもたらしました。この記事ではその主な改善点を概説します。
2.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バージョンのもう一つの重要な特徴はゼロ依存です。これは、特に2023年12月初めに@solana/web3.js 1.95.5および1.95.6バージョンがサプライチェーン攻撃に遭った後、安全性を向上させるために重要です。新しいバージョンは、ネイティブ機能をより多く使用し、外部依存関係やポリフィルの導入を排除することで、安全リスクを低減しています。
主な変更点
###接続
2.xバージョンでは、接続を処理するためにより関数型のアプローチが採用されました。Connectionクラスは使用されず、RPCリクエストアドレスを設定することでリクエスト送信器が作成されます。例えば、取引を送信する際には、HTTPSリクエストが自動的に開始され、WSS接続が確立され、取引状態がサブスクライブされ、取引確認後に取引ハッシュが返されます。
###キーペア管理
公開鍵と秘密鍵に関連する操作にも大きな変化がありました。1.xバージョンで一般的に使用されていたKeypairとPublicKeyクラスはもはや存在せず、一連の関数に置き換えられました。例えば、今ではawait generateKeyPair()を使用して鍵ペアを生成しますが、以前のKeypair.generate()は使用しません。
新しい実装はJavaScriptのWeb Crypto APIを利用し、ネイティブのEd25519実装を使用しています。これにより、一部の操作が非同期になりましたが、Promiseに慣れている現代のJavaScript開発者にとっては大きな問題ではありません。
###トランザクション処理
バージョン 2.x では、Transaction クラスと VersionedTransaction クラスは使用できなくなりました。 また、システムプログラム関連の手法も他から導入する必要があります。 たとえば、転送命令は、@solanaプログラム/システムで getTransferSolInstruction 関数を呼び出す必要があります。
新しいバージョンは、関数型プログラミングで一般的に使用されるpipe形式を提供します。取引はもはやConnectionを通じて開始されず、定義されたRPCプロバイダーを介して特定の関数を生成して取引を開始します。この方法はコード量がわずかに増加しますが、より強力なカスタマイズ性を提供します。
Reactのサポート
注目すべきは、@solana/web3.jsプロジェクトには、signInなどの機能を組み込んだいくつかのReact Hookを提供する@solana/reactというライブラリも含まれていることです。
まとめ
@solana/web3.js 2.xバージョンのリリースは、ソラナチームの継続的な改善の決意を示しています。新しいバージョンは、開発者にとって効率的で柔軟性があり、カスタマイズ可能なソラナネットワークとのインタラクションを提供し、プラットフォームのさらなる発展と応用を促進することが期待されています。
! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする