ソラナ Web3.js 2.xバージョンが重磅リリース モジュール化設計が大幅に性能を向上させる

ソラナ Web3.js 2.x バージョン:機能豊富な JavaScript ライブラリの重大な更新

ソラナ Web3.js は、機能豊富な JavaScript ライブラリとして、今年 11 月に正式に 2.x バージョンをリリースしました。1.x バージョンと比較して、新しいバージョンは顕著な変化をもたらしました。本稿では、その主な変更点について概略を紹介します。

2.x バージョンはまだリリースされたばかりで、使用量は普及していませんが、多くの広く使用されているライブラリもまだ移行されていません。しかし、これらの変更を事前に理解することは、将来のアップグレード準備に間違いなく役立ちます。

! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする

バージョン比較

否定できないことに、旧バージョンは使用がよりシンプルで直接的でした。1.x バージョンは、@solana/web3.js というパッケージ一つで全ての機能が含まれており、クラスベースの設計で多くの一般的な操作をカプセル化しています。例えば、Connection クラスは数十種類のメソッドを提供しており、開発者が必要とするほぼ全ての機能を網羅しています。

しかし、この設計は幾つかの問題も引き起こします。開発者が実際に使用する機能はその一部に過ぎないかもしれませんが、全体のコードベースがユーザーのデバイスにダウンロードされるため、読み込み時間が延長される可能性があります。

対照的に、2.x バージョンはモジュール化されたデザインアプローチを採用しています。公式チームは、元のコードベースを @solana/accounts、@solana/codecs、@solana/rpc、@solana/signers、@solana/transactions などの複数の小さなモジュールに分割しました。同時に、新しいバージョンはクラスベースの実装を放棄し、単一の関数の方法を採用しています。これは、JavaScript コードの構築時の最適化に役立ちます。未使用のコードは削除され、ユーザーのデバイスにダウンロードされることはありません。

公式文書によると、新しいバージョンのDAppを使用することで、通常約30%のコードサイズの最適化が実現できる。もし少量の機能しか使用しない場合、最適化の割合はさらに高くなる可能性がある。

この変化は、ソラナチームのドキュメントの質に対してより高い要求を課しています。開発者が必要な機能を迅速に特定する手助けをすることが重要な課題となっています。現在のところ、パッケージ名の意味が良好であり、名称からその用途を大まかに理解できるため、開発者の移行の難易度がある程度低下しています。

しかし、新しいバージョンが最近リリースされたばかりで、多くのプロジェクトはまだ移行を行っていません。ソラナ クックブックの2.xバージョンに関する例も比較的少ないです。さらに、新しいバージョンはランタイムに組み込まれた機能(キー ペアの生成など)を使用する傾向がありますが、ドキュメントには関連する説明が欠けており、一部の開発者には混乱を招く可能性があります。

2.x バージョンのもう一つの重要な特徴はゼロ依存です。この点は多くのユーザーにとって重要ではないかもしれませんが、今年 12 月初めに @solana/web3.js 1.95.5 および 1.95.6 バージョンで発生したサプライチェーン攻撃を考えると、外部からの入力や依存関係が増えることはセキュリティ事件が発生する可能性を大幅に高めることになります。2.x バージョンのリリースに伴い、Web3.js の開発チームはネイティブ機能をより多く使用し、外部依存関係やポリフィルの導入を廃止することを決定しました。将来的には変化があるかもしれませんが、現在 2.x バージョンはすべての外部依存関係を排除しています。

重要な変更点

###接続

1.x バージョンでは、Connection は多数のメソッドを提供しています。しかし、そのコア機能は RPC リクエストアドレスを設定してリクエスト送信機を作成し、それを通じてさまざまなリクエストを送信することです。

2.x バージョンは、この機能を実現するために、より関数型のアプローチを採用しました:

JavaScriptの import { createSolanaRpcApi, createSolanaRpcSubscriptionsApi } from '@solana/web3.js';

const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

const { sendAndConfirmTransaction } = rpc;

このコードでは、sendAndConfirmTransactionを呼び出して取引を送信すると、自動的にHTTPSリクエストが発起され、WSS接続が確立され、取引状態が購読されます。取引が確認されると、取引ハッシュが返されます。

キーペア

公開鍵と秘密鍵に関連する部分にも重大な変化があります。1.x バージョンで一般的に使用されていた Keypair と PublicKey の二つのクラスは存在しなくなり、いくつかの関数に置き換えられました。

例えば、await generateKeyPair() を使用してキー ペアを生成することができ、以前の Keypair.generate() の代わりになります。

注目すべきは、新しい generateKeyPair が Promise を返すようになったことで、直接キー ペアを返さないことです。これは、新しい実装ができるだけ JavaScript の Web Crypto API を活用し、ネイティブの Ed25519 実装を使用しているためです。Web Crypto API の多くのメソッドは非同期です。しかし、この変更は受け入れやすく、2023年が終わろうとしている今、JavaScript 開発者たちはすでに Promise に非常に慣れています。

トランザクションを送信する

1.x バージョンのユーザーは Transaction と VersionedTransaction の2つのクラスに非常に慣れているはずです。2.x バージョンでは、これらの2つのクラスはもはや存在しません。

旧バージョンで提供されていた System Program に関連するメソッドはもはや存在しないため、SystemProgram クラスの静的メソッドは他の場所からインポートする必要があります。

たとえば、transfer ディレクティブは、@solana-program/system の getTransferSolInstruction 関数を呼び出す必要があります。

クラスが提供されなくなったため、Web3.js は関数型プログラミングで一般的に使用される pipe 形式を提供します。以下は、pipe 関数を使用して元の 1.x バージョンの送金機能を実装する例です:

JavaScriptの import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; インポート{ 取引に署名を追加する、 トランザクションを作成する、 getBase58SignerFromPrivateKey、 getSignatureFromSignedTransaction、 getTransactionMessage、 トランザクションに署名する、 } from '@solana/transactions';

const トランザクション = pipe( createTransaction()、 addSignatureToTransaction(getTransferSolInstruction({})), );

const signedTransaction = signTransaction(transaction, [signer]); const シグネチャ = getSignatureFromSignedTransaction(signedTransaction); const メッセージ = getTransactionMessage(signedTransaction);

const txid = await sendAndConfirmTransaction({ signedTransaction });

取引はもはやConnectionを通じて開始されるのではなく、私たちが定義したRPCプロバイダーを通じて特定の関数を生成し、その関数を呼び出して取引を開始することがわかります。1.xバージョンに比べてコード量は増加しましたが、カスタマイズ性は向上しました。

取引はHTTPS RPCを通じて開始され、その後、WSS RPCを購読することで取引結果を確認します。新しい方法はWSSに非常に依存していると感じられ、将来的にはWSSの適用がますます広がると信じています。これにより、RPCプロバイダーのサービスの安定性に対する要求が高まることも確かです。

リアクト

注目すべきは、@solana/web3.js プロジェクトには @solana/react というライブラリも含まれており、いくつかの React Hook を提供し、signIn などの機能が組み込まれています。

まとめ

@solana/web3.js 2.x バージョンのリリースは、ソラナチームの継続的な発展と改善へのコミットメントを十分に表しています。これは開発者にソラナネットワークと対話するための効率的で柔軟かつカスタマイズ可能な方法を提供し、このプラットフォームの採用と発展を促進するのに役立ちます。

! Web3スターターシリーズ:今すぐ@solana/web3.js 2.xをアップグレードして関数型プログラミングを有効にする

SOL1.38%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 8
  • 共有
コメント
0/400
SchrodingerWalletvip
· 4時間前
等プロたちが先に踏み込んでください
原文表示返信0
AirdropFatiguevip
· 13時間前
ハ 移転するかしないかはあまり影響しない
原文表示返信0
DegenGamblervip
· 08-06 03:11
ついに2.0になった~ただの観劇
原文表示返信0
ser_we_are_ngmivip
· 08-06 01:10
アップグレードする必要があるの?1.xで十分だよ。
原文表示返信0
LayerHoppervip
· 08-06 01:10
早くアップグレードするべきだったね
原文表示返信0
PumpAnalystvip
· 08-06 00:55
技術面から見ると、このバージョンアップデートには奇妙な点があり、初心者には急いでアップグレードしないことをお勧めします。
原文表示返信0
NotAFinancialAdvicevip
· 08-06 00:52
このアップグレードはまったく無駄なことだ。
原文表示返信0
BearMarketBardvip
· 08-06 00:42
どうやら鎌を取りに来たようです
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)