# ソラナ Web3.js 2.x:革新と挑戦が共存するソラナ Web3.js 2.x バージョンは今年 11 月に正式にリリースされ、1.x バージョンと比較して新しいバージョンには顕著な変化があります。現在、2.x バージョンの使用率はまだ高くありませんが、多くの広く使用されているライブラリはまだ移行されていませんが、これらの変化を理解することは今後の開発作業にとって非常に重要です。## バージョン比較1.x バージョンはそのシンプルさで知られており、単一のパッケージ @solana/web3.js をインポートするだけで済みます。これはクラスベースの設計に基づいており、Connection クラスのように多くの一般的な操作をカプセル化しており、開発者に包括的な機能を提供します。しかし、この設計は問題も引き起こしました。開発者が少数の機能しか使用しない場合でも、巨大なコードベース全体がユーザーのデバイスにダウンロードされてしまいます。対照的に、2.x バージョンはモジュール化アプローチを採用し、コードベースを @solana/accounts、@solana/codecs などの複数の小型モジュールに分割しました。新しいバージョンはクラスベースの実装を放棄し、単一の関数方式を採用しています。これにより、JavaScript コードのビルド時の最適化が助けられます。使用されていないコードは削除され、ユーザーのデバイスにダウンロードされることはありません。公式統計によると、新しいバージョンを使用する分散型アプリケーション(DApp)は、通常約 30% のコードサイズの最適化を実現でき、機能が少ないアプリの場合、最適化率はさらに高くなる可能性があります。この変更は、ソラナチームのドキュメント品質に対する要求を高めました。開発者が必要な機能を迅速に特定する方法が重要な問題となっています。現在、新しいバージョンのパッケージ名は良好な意味を持っており、ある程度、開発者の移行の難易度を低減しています。しかし、2.xバージョンが最近リリースされたため、多くのプロジェクトはまだ移行していません。関連するドキュメントやサンプルも比較的限られており、特にランタイムに組み込まれた機能の使用説明に関しては不十分な点があり、これが開発者にいくつかの困惑をもたらす可能性があります。2.x バージョンのもう一つの重要な特徴はゼロ依存です。この特性は安全性の向上に重要な意味を持ちます。特に、今年の12月初めに @solana/web3.js 1.95.5 および 1.95.6 バージョンで発生したサプライチェーン攻撃を考慮するとそうです。開発チームは、ネイティブ機能をより多く活用し、外部依存とポリフィルの使用を減らすことで、安全リスクを低減することを決定しました。! [Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする](https://img-cdn.gateio.im/social/moments-0fa0888db1937c21f03f2851ec3bd095)## 重要な変更点###接続2.x バージョンは、接続を処理するためにより関数型のアプローチを採用しました。新しいバージョンはもはや Connection クラスに依存せず、関数型の方法で RPC リクエストアドレスを設定し、リクエスト送信者を作成します。### 鍵ペア処理キー ペア管理に関して、2.x バージョンでも重要な変更が行われました。従来の Keypair および PublicKey クラスは、一連の関数に置き換えられました。たとえば、今では await generateKeyPair() を使用してキー ペアを生成しますが、以前は Keypair.generate() を使用していました。新しい実装は、JavaScript の Web Crypto API をより多く利用し、ネイティブの Ed25519 実装を採用しているため、一部のメソッドが非同期操作になっています。###トランザクション送信バージョン 2.x では、Transaction クラスと VersionedTransaction クラス、およびシステム プログラム関連のメソッドが非推奨になりました。 開発者は、@solana-program/system の getTransferSolInstruction 関数を使用して転送命令を実装するなど、これらの機能を他の場所から導入する必要があります。新しいバージョンでは、関数型プログラミングで一般的に使用される pipe 形式が提供されており、取引の構築と送信がより柔軟でカスタマイズ可能になりました。取引はもはや Connection を通じて開始されるのではなく、カスタム RPC Provider を介して特定の関数を生成して完了します。この方法はコード量が増えるものの、カスタマイズ性が向上します。### React のサポート注目すべきは、@solana/web3.js プロジェクトには @solana/react というライブラリも含まれており、いくつかの React Hook を提供し、signIn などの機能が組み込まれていて、React 開発者に便利さを提供しています。## まとめソラナ Web3.js 2.x バージョンのリリースは、開発チームの継続的な改善へのコミットメントを示しています。新しいバージョンは、開発者にとってより効率的で柔軟かつカスタマイズ可能なソラナネットワークとのインタラクション手段を提供し、このプラットフォームのさらなる発展と応用を推進することが期待されています。現在いくつかの課題に直面していますが、エコシステムが徐々に適応するにつれて、2.x バージョンはソラナ開発の新しい標準となることが期待されています。! [Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする](https://img-cdn.gateio.im/social/moments-d3e17fab6bb8c485a8bdac5b1e385273)
ソラナ Web3.js 2.x:モジュール化設計がもたらす性能向上と開発の課題
ソラナ Web3.js 2.x:革新と挑戦が共存する
ソラナ Web3.js 2.x バージョンは今年 11 月に正式にリリースされ、1.x バージョンと比較して新しいバージョンには顕著な変化があります。現在、2.x バージョンの使用率はまだ高くありませんが、多くの広く使用されているライブラリはまだ移行されていませんが、これらの変化を理解することは今後の開発作業にとって非常に重要です。
バージョン比較
1.x バージョンはそのシンプルさで知られており、単一のパッケージ @solana/web3.js をインポートするだけで済みます。これはクラスベースの設計に基づいており、Connection クラスのように多くの一般的な操作をカプセル化しており、開発者に包括的な機能を提供します。しかし、この設計は問題も引き起こしました。開発者が少数の機能しか使用しない場合でも、巨大なコードベース全体がユーザーのデバイスにダウンロードされてしまいます。
対照的に、2.x バージョンはモジュール化アプローチを採用し、コードベースを @solana/accounts、@solana/codecs などの複数の小型モジュールに分割しました。新しいバージョンはクラスベースの実装を放棄し、単一の関数方式を採用しています。これにより、JavaScript コードのビルド時の最適化が助けられます。使用されていないコードは削除され、ユーザーのデバイスにダウンロードされることはありません。公式統計によると、新しいバージョンを使用する分散型アプリケーション(DApp)は、通常約 30% のコードサイズの最適化を実現でき、機能が少ないアプリの場合、最適化率はさらに高くなる可能性があります。
この変更は、ソラナチームのドキュメント品質に対する要求を高めました。開発者が必要な機能を迅速に特定する方法が重要な問題となっています。現在、新しいバージョンのパッケージ名は良好な意味を持っており、ある程度、開発者の移行の難易度を低減しています。
しかし、2.xバージョンが最近リリースされたため、多くのプロジェクトはまだ移行していません。関連するドキュメントやサンプルも比較的限られており、特にランタイムに組み込まれた機能の使用説明に関しては不十分な点があり、これが開発者にいくつかの困惑をもたらす可能性があります。
2.x バージョンのもう一つの重要な特徴はゼロ依存です。この特性は安全性の向上に重要な意味を持ちます。特に、今年の12月初めに @solana/web3.js 1.95.5 および 1.95.6 バージョンで発生したサプライチェーン攻撃を考慮するとそうです。開発チームは、ネイティブ機能をより多く活用し、外部依存とポリフィルの使用を減らすことで、安全リスクを低減することを決定しました。
! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする
重要な変更点
###接続
2.x バージョンは、接続を処理するためにより関数型のアプローチを採用しました。新しいバージョンはもはや Connection クラスに依存せず、関数型の方法で RPC リクエストアドレスを設定し、リクエスト送信者を作成します。
鍵ペア処理
キー ペア管理に関して、2.x バージョンでも重要な変更が行われました。従来の Keypair および PublicKey クラスは、一連の関数に置き換えられました。たとえば、今では await generateKeyPair() を使用してキー ペアを生成しますが、以前は Keypair.generate() を使用していました。新しい実装は、JavaScript の Web Crypto API をより多く利用し、ネイティブの Ed25519 実装を採用しているため、一部のメソッドが非同期操作になっています。
###トランザクション送信
バージョン 2.x では、Transaction クラスと VersionedTransaction クラス、およびシステム プログラム関連のメソッドが非推奨になりました。 開発者は、@solana-program/system の getTransferSolInstruction 関数を使用して転送命令を実装するなど、これらの機能を他の場所から導入する必要があります。
新しいバージョンでは、関数型プログラミングで一般的に使用される pipe 形式が提供されており、取引の構築と送信がより柔軟でカスタマイズ可能になりました。取引はもはや Connection を通じて開始されるのではなく、カスタム RPC Provider を介して特定の関数を生成して完了します。この方法はコード量が増えるものの、カスタマイズ性が向上します。
React のサポート
注目すべきは、@solana/web3.js プロジェクトには @solana/react というライブラリも含まれており、いくつかの React Hook を提供し、signIn などの機能が組み込まれていて、React 開発者に便利さを提供しています。
まとめ
ソラナ Web3.js 2.x バージョンのリリースは、開発チームの継続的な改善へのコミットメントを示しています。新しいバージョンは、開発者にとってより効率的で柔軟かつカスタマイズ可能なソラナネットワークとのインタラクション手段を提供し、このプラットフォームのさらなる発展と応用を推進することが期待されています。現在いくつかの課題に直面していますが、エコシステムが徐々に適応するにつれて、2.x バージョンはソラナ開発の新しい標準となることが期待されています。
! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする