Web3.js と Ethers.js : Web3 ライブラリの比較

公開: 2023-05-21

暗号通貨とブロックチェーンの開発者は、多数のプログラム可能なブロックチェーン ネットワークの価値上の利点を活用できる可能性があります。 分散型アプリケーションを開発するためのスマート コントラクト プログラマビリティを可能にするために最も広く使用されているプラ​​ットフォームの 1 つがイーサリアムです。 Web3 開発の需要が高まり続けるにつれて、開発者は web3.js と Ethers.js のような問題について議論することが増えています。 分散型アプリケーションの展開に役立つ JavaScript ライブラリを見つけることが、これまで以上に重要になっています。 Web3 アプリケーションは複数のブロックチェーンにわたってデプロイする必要があるため、最適な JavaScript ライブラリを選択する必要があります。 以下の説明では、「web3.js と ethers.js のどちらが優れているのか?」を判断するのに役立つように、各ライブラリを徹底的にレビューします。

さらに、2 つのライブラリを並べて比較すると、ニーズに最適な決定を下すのに役立ちます。

すべてのプログラム可能なブロックチェーンには、その特定のブロックチェーンへの接続と対話を容易にするライブラリまたは SDK のコレクションがあります。 現在使用されているブロックチェーンの大部分は、イーサリアム ネットワークに依存しているため、EVM と互換性があります。 これは、ETH ライブラリが開発された場合、EVM に準拠するあらゆるブロックチェーンに適用できることを意味します。 ただし、JSON-RPC プロトコルでは通信が可能です。 このエッセイでは、2 つのよく知られた ETH ライブラリを比較します。

Web3.js と Ethers.js の比較を表形式で示します。

パラメーターWeb3.js Ethers.js
デベロッパーイーサリアム財団Ethers.io (サードパーティ組織)
機能包括的なイーサリアムインタラクションイーサリアム 1.0 フォーカス (試験的なイーサリアム 2.0 サポートあり)
プロトコルのサポートイーサリアム 1.0 とイーサリアム 2.0 主にイーサリアム 1.0 (試験的なイーサリアム 2.0 サポートあり)
コミュニティより大きなコミュニティより小さなコミュニティ
ドキュメンテーション広範囲成長する
フロントエンド/バックエンドフロントエンドとバックエンドの両方の開発主にフロントエンド開発に適しています
API 広範で機能が豊富開発者にとって使いやすく直感的
安全標準セキュリティとタイプセーフティを重視

Web3.js では通常、スマート コントラクトと対話するために、コントラクトの ABI (アプリケーション バイナリ インターフェイス) とコントラクト アドレスを使用してコントラクトのインスタンスを作成する必要があります。 次に、作成されたインスタンスを使用してコントラクト メソッドを呼び出すことができます。 以下に例を示します。

 // Web3.js const contractInstance = new web3.eth.Contract(abi, contractAddress); contractInstance.methods.myMethod().call() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

一方、Eth​​ers.js は、より直感的で簡潔な構文を使用することで、コントラクトのやり取りを簡素化します。 インスタンスを作成せずに、コントラクトを直接操作できます。

 // Ethers.js const contract = new ethers.Contract(contractAddress, abi, provider); contract.myMethod() .then(result => { console.log(result); }) .catch(error => { console.error(error); });

Ethers.js は、コントラクト メソッドを直接呼び出すためのより単純な構文を提供することにより、コントラクト インタラクションに対するより合理化された開発者フレンドリーなアプローチを提供します。

Web3.js のすべて

web3.js と ethers.js の違いについて説明する前に、各ライブラリの概要から始めましょう。 オリジナルの web3 フレームワークである Web3.js は、web3.js と ethers.js を比較する際の最初の挑戦者になります。 これは、イーサリアム財団が利用可能にした最初のイーサリアム JavaScript API でした。 現在、Chainsafe はイーサリアム財団に代わって web3.js ライブラリの積極的な開発を担当しています。 2015 年に Web3.js が台頭し、それ以来 Ethereum JavaScript フレームワークとして人気が高まっています。

比較すると、web3.js はさらに多数のプロジェクトやパッケージに統合されています。 一方、Web3.js は、ローカルのブロックチェーン ノードとアプリケーション間の接続を前提としています。 ローカル ノードは、キーの保存、トランザクションの署名、接続されているブロックチェーンの現在の状態の読み取りなど、さまざまな機能をサポートすると考えられています。

Web3.js の利点と欠点

Web3.js は、Web3 開発者向けの初期の JavaScript ライブラリの 1 つです。 web3.js と ethers.js を効果的に比較するには、web3.js の長所と短所の両方を理解する必要があります。 web3 ライブラリを比較すると、web3.js には創設チームとその広範な使用という 2 つの大きな利点があります。 広範な貢献者のネットワークにより設計の有効性を保証する Ethereum Foundation が、Web3.js を作成しました。 ただし、ブロックチェーン アプリケーションを作成するために最も広く使用されている JavaScript ライブラリの 1 つとして浮上しています。 2017 年より前に利用できた唯一の web3 JavaScript ライブラリは web3.js でした。 したがって、初期の Web3 プロジェクトの多くで重要な役割を果たしていることがわかります。

web3.js を ethers.js と比較する場合は、web3.js の欠点も考慮する必要があります。 まず、web3.js があまり活用されていない新しいプロジェクトはそれほど多くありません。 また、ライブラリは、変更を公開せずにソース コードを変更することの禁止など、厳しい制限付きのライセンスにも依存しています。 web3.js のサイズは、web3 サイトまたはアプリの速度とパフォーマンスに影響を与える可能性があり、おそらく最も重要な要素です。

Ethers.js のすべて

web3.js と ethers.js を比較する際には、ethers.js の定義、利点、欠点についても議論する必要があります。 ethers.js の作成者は、このライブラリが Typescript および JavaScript のツールと組み合わされて、イーサリアム ウォレットの完全な実装であると主張しています。 「web3.js と ethers.js の違いは何ですか?」という質問に対する回答です。 これは、ethers.js ライブラリが広く使用されていることを示しています。 EVM をサポートするイーサリアムやその他のブロックチェーン ネットワークを処理するためのさまざまな機能が含まれています。 さらに、Ethers.js を使用して、ブロックチェーン ネットワークの状態を読み取り、変更することもできます。

Richard Moore という名前のカナダのソフトウェア エンジニアが 2015 年に Ethers.js を開発しました。ethers.js 開発の背後にある主な目標は、web3.js に代わるコンパクトで高機能な代替手段を提供することでした。 ethers.js はリリース以来、イーサリアムおよび EVM 開発者の間で人気が急速に高まっています。 ethers.js におけるキー管理とブロックチェーン ネットワークとの通信の効率は、web3 と ethers.js の主な違いの 1 つです。 開発者は、キーの管理とブロックチェーンとの対話のために 2 つの異なる組織を利用できます。 ethers.js では、秘密キーを使用してトランザクションに署名するためのウォレットを用意でき、ノード プロバイダーはブロックチェーン ネットワークへの接続を支援できます。 ウォレットとノードプロバイダーの管理は相互に独立している可能性があります。

Ethers.js の利点と落とし穴

2 つのライブラリの違いは、Ethers.js の利点と欠点も浮き彫りにするでしょう。 ethers.js の利点と欠点についてさらに詳しく知ることで、「web3.js と ethers.js のどちらが優れていますか?」という質問に対する答えを調べることができます。 ethers.js の最初の利点は、自由な使用と変更の両方を許可する、より寛容なライセンスが利用できることです。 ただし、ソース コードと行ったすべての調整も利用できるようにする必要があります。 スリム ライブラリ ethers.js は、ENS ドメイン名の使用をサポートしています。 JavaScript ライブラリは広範なテスト ケースのサポートを提供し、約 10,000 のテスト ケースの存在が証明されています。 web3.js の欠点と比較すると、ethers.js には目に見える改善が見られますが、多くの欠点もあります。 たとえば、ethers.js は比較的新しいライブラリですが、開発者はこれをより確立されたビジネスやプロジェクトに使用するのに苦労しています。

Web3.js と Ethers.js を比較する必要があるのはなぜですか?

Web3 アイデアの導入により、従来のアプリケーション作成方法が変わりました。 ほぼすべての web3 Web サイトとアプリは、web3.js や ethers.js などのライブラリを使用します。 使用できる Web3 ライブラリを選択するための重要なステップは、利用可能なライブラリを比較することです。 図書館にはどのような目的があるのでしょうか? 開発者は、JSON-RPC プロトコルを使用して、イーサリアムまたはその他の EVM サポート ブロックチェーンと通信できます。 JavaScript ライブラリは、分散アプリケーションにさまざまなコア機能を導入するのに役立ちます。 例としては、ウォレットの作成、スマート コントラクトの展開、ブロックチェーン情報のリクエスト、トランザクションの署名など​​があります。 開発者は、関連するブロックチェーンに直接 API 呼び出しを行わなくても、これらの操作を実行できます。

すべての Web3 開発者は、web3.js と ethers.js の間の議論に留意する必要があります。

開発者は、Web3 開発プロジェクトを開始する前に、プロジェクトに最適な JavaScript ライブラリを選択することに悩む可能性があります。 各ライブラリは、単一の関数または多数の密接に関連した関数を実行できる、凝縮された再利用可能なコードのコレクションを提供します。 開発者は、新しいコードを最初から作成するのではなく、アプリケーションにライブラリを追加し、それを利用して必要な機能を実現できます。

アプリケーションを設計する方法の例として、家の建設を考えてみましょう。 家を建てた後は、家具でインテリアのデザインを充実させることを検討します。 家具を一から作ってみませんか? 最も現実的な選択は、欲しい家具を店から購入することでしょう。 ライブラリとして機能する家具店から、必要なアプリケーション機能 (自宅) にアクセスできます。 その結果、Web3 フレームワーク間の相違は、最近、特に開発者から大きな関心を集めています。 各ライブラリの機能を理解すると、Web3 アプリケーションに最適なものを選択するのに役立ちます。

主な違い: Web3.js と Ethers.js

ethers.js と web3.js の基礎を徹底的に説明することで、両方が開発者にどのようなメリットをもたらすかがよくわかります。 web3.js と ethers.js の質問に答えるには、さまざまな基準に基づいて並べて比較することが重要です。 ここでは、web3.js と ethers.js を効果的に比較するのに役立つさまざまな指標のリストを示します。

開発者

プロジェクトや技術的ソリューションを実装する前に、最初に注目を集めるのは創設者のアイデンティティです。 ライブラリの信頼性は、開発者の経歴から推測できる場合があります。 イーサリアム財団は、他の web3 フレームワークよりも優れた web3.js を設立しました。 開発者は、包括的な組織やエコシステムがライブラリをサポートしているという確信を持って、さまざまな機能を探索できます。 対照的に、Richard Moore は web3.js の代替として ethers.js を開発しました。

パフォーマンス

「web3 JS と ethers JS のどちらが優れているか?」を決定する際に、次に重要な考慮事項となるのはパフォーマンスです。 web3.js と比較して、Ethers は大幅に軽量なライブラリであり、より優れたパフォーマンスを保証します。 Ethers.js の圧縮バージョンはわずか 77 kb ですが、非圧縮バージョンは 284 kb です。 web3.js ライブラリは、同時に何ギガバイトものスペースを占有する可能性があります。 ただし、小規模な dApp の場合、サイズ要因がパフォーマンスに影響します。 さらに、同じアプリに対する十分な速度テスト データが不足しているため、web3.js よりも ethers.js を使用するパフォーマンスの利点には疑問があります。

メンテナンス

2 つのライブラリ間の比較のもう 1 つのポイントは、web3.js と ethers.js のメンテナンスの違いを評価することです。 Ethereum Foundation は Web3.js を明示的にサポートしており、Chainsafe にはアクティブなメンテナンス スケジュールがあります。 Web3.js には、約 304 人の Github 貢献者と 4 人の NPM 協力者がおり、web3.js に大きな利点があります。 一方、Eth​​ers.js はフリーランスのソフトウェア エンジニアによって保守されています。 現時点では、NPM の協力者は 1 人だけで、Github の貢献者は約 15 人です。 ただし、web3.js と ethers.js の対照では、メンテナンスの有効性を判断するためにレビューと開発者のコ​​メントが考慮されます。 web3.js および ethers.js ライブラリは定期的に更新され、バグが修正され、新しい機能が追加されます。

ドキュメンテーション

web3.js と ethers.js を比較する場合、ドキュメントの入手可能性は、ライブラリの使用を開始するのがいかに簡単かを決定するもう 1 つの重要な要素です。 各 Web3 JavaScript パッケージが提供する詳細なドキュメントを活用して、Web3 開発の冒険を始めることができます。 一方、ethers.js は、「入門」ガイドや「プレイグラウンド」などの追加リソースを提供します。

使いやすさ

2 つのライブラリを対比するもう 1 つの重要な側面は、使いやすさです。 これは、ethers.js と web3.js の両方に当てはまります。 ウォレットとノードプロバイダーは、Web3.js によって単一のオブジェクトに結合されて機能します。 一方、Eth​​ers.js には、ウォレット プロバイダーとノード プロバイダー用の 2 つの別個のエンティティがあります。 その結果、ethers.js は、秘密鍵の署名と維持を、ブロックチェーンの状態の読み取りと変更から分離するために必要な柔軟性を提供できます。 プロバイダーとウォレットが分離されているため、ethers.js では開発者エクスペリエンスが向上します。 Web3.js は、チュートリアル、サポート資料、Web3 プロジェクトを通じて柔軟に学習できるため、初心者にとっては優れた選択肢です。

結論

本質的に、Web3.js は開発者が Ethereum ネットワークに接続できるようにするライブラリであり、Ethers.js は分散アプリケーションの作成を支援するライブラリです。 どちらのライブラリもイーサリアムの開発にとって重要であり、それぞれに長所と短所があります。 web3.js ライブラリと ethers.js ライブラリの違いを要約すると、両方の重要性が同等であることがわかります。

興味深いのは、「web3 JS と ethers JS のどちらが優れていますか?」という質問に対する答えはニーズに応じて変わるということです。 変えられる。 たとえば、初心者は web3 JavaScript ライブラリの利用の基本を理解するために web3.js を使用できます。 ただし、ethers.js では、ライブラリをすぐに使用するための実践的な手順が提供されています。 web3.js がメガバイト単位のサイズであるために複雑であるのと同様に、ethers.js はサイズが小さくなっているため、より優れたパフォーマンスを保証します。 ニーズに応じて、web3 プロジェクトに web3.js と ethers.js のどちらかを選択できます。