イーサリアムスタック
最終更新: 2025年10月21日
他のソフトウェアスタックと同様に、完全な「イーサリアムスタック」は、目的に応じてプロジェクトごとに異なります。
しかし、イーサリアムのコアコンポーネントを理解すれば、ソフトウェアアプリケーションとイーサリアムブロックチェーンとのやり取りの仕組みのモデルをイメージできます。 イーサリアムスタックのレイヤーについて理解することで、イーサリアムを他のソフトウェアに統合するさまざまな方法を理解することができます。
レベル1: イーサリアム仮想マシン
イーサリアム仮想マシン(EVM)は、イーサリアム上のスマートコントラクトのランタイム環境です。 イーサリアムブロックチェーン上のすべてのスマートコントラクトと状態変更は、トランザクションによって実行されます。 全てのイーサリアムネットワーク上のトランザクションはEVMによって処理されます。
他の仮想マシンと同様に、EVMは実行コードと実行マシン (イーサリアムノード) との間に抽象レベルを作成します。 現在、EVMは世界中に分散された数千のノードで動作しています。
内部では、EVMは一連のオペコードを使用して特定のタスクを実行します。 これら(140個のユニークな)オペコードにより、EVMはチューリング完全 (opens in a new tab)になることができます。つまり、EVMは十分なリソースがあれば、ほぼ何でも計算できるということです。
dappデベロッパーは、EVMについて詳しく知る必要はありません。イーサリアム上のすべてのアプリケーションをダウンタイムなしで確実に動作させている存在であることを理解していれば十分です。
レベル2: スマートコントラクト
スマートコントラクトは、イーサリアムブロックチェーン上で実行されるプログラムです。
スマートコントラクトは、EVMバイトコード(オペコードと呼ばれる低レベルのマシン命令)にコンパイルされる、特定のプログラミング言語を使用して記述されます。
スマートコントラクトは、オープンソースライブラリとして機能するだけではありません。本質的には、ダウンタイムなしで常時稼動しているオープンAPIサービスです。 スマートコントラクトは、ユーザーやアプリケーション(dapps)が許可を必要とせずにやりとりできるパブリック関数を提供します。 どのようなアプリケーションでも、デプロイ済みのスマートコントラクトと統合して、データフィードの追加やトークンスワップのサポートなどの機能を構成できます。 誰でも新しいスマートコントラクトをイーサリアムにデプロイして、アプリケーションのニーズを満たす独自の機能を追加できます。
Dappデベロッパーは、イーサリアムブロックチェーンに独自の機能を追加したい場合にのみ、スマートコントラクトを記述する必要があります。 実際には、既存のスマートコントラクトとの統合でプロジェクトのほとんどのニーズを達成することができます。 たとえば、ステーブルコインで支払いをサポートしたい場合や、トークンの分散型取引を可能にしたい場合などです。
レベル3: イーサリアムノード
アプリケーションがイーサリアムブロックチェーンとやり取りするためには、イーサリアムノードに接続する必要があります。 ノードに接続すると、ブロックチェーンデータの読み取りやネットワークへのトランザクションの送信が可能になります。
イーサリアムノードは、ソフトウェアを実行しているコンピュータ、すなわちイーサリアムクライアントです。 クライアントはイーサリアムの実装であり、各ブロック内のすべてのトランザクションを検証し、ネットワークの安全性とデータの正確性を維持します。 イーサリアムノードはイーサリアムブロックチェーンそのものです。 イーサリアムブロックチェーンの状態をまとめて保存し、ブロックチェーンの状態を変更するためのトランザクションについてコンセンサスを得ます。
アプリケーションを(JSON-RPC APIを介して)イーサリアムノードに接続することで、アプリケーションはブロックチェーンからデータ(ユーザーアカウントの残高など)を読み取ったり、新しいトランザクションをネットワークにブロードキャストしたり(ユーザーアカウント間でのETHの送金やスマートコントラクトの機能実行など)できます。
レベル4: イーサリアムクライアントAPI
多くの便利なライブラリ (イーサリアムのオープンソースコミュニティによって構築および維持されている) を活用すると、アプリケーションがイーサリアムブロックチェーンに接続して通信できるようになります。
ユーザー向けのアプリケーションがWebアプリの場合、フロントエンドに直接JavaScript APIをnpm installできます。 あるいは、PythonやJavaのAPIを使用して、この機能をサーバーサイドで実装することもできます。
これらのAPIは、イーサリアムスタックにとって必須ではありませんが、イーサリアムノードと直接やり取りする際の複雑さの多くを抽象化してくれます。 また、こうしたAPIでは、ユーティリティ関数 (ETHをGweiに変換する関数など) も提供されています。そのため、デベロッパーは複雑なイーサリアムクライアントの作業に費やす時間を削減でき、自身のアプリケーションの独自機能の開発作業に専念できます。
レベル5: エンドユーザーアプリケーション
スタックの最上位レベルには、ユーザー側のアプリケーションがあります。 これらは日常的に使用されている標準的なアプリケーションであり、主にウェブアプリとモバイルアプリです。
こうしたアプリケーションのユーザーインターフェースの開発方法も、本質的には変わりません。 多くの場合、ユーザーは使用しているアプリケーションがブロックチェーンを使用して構築されているかどうかを知る必要はありません。
スタックを選ぶ準備ができたら
イーサリアムアプリケーションのためのローカル開発環境をセットアップするガイドをご覧ください。
参考リンク
- Web 3.0アプリケーションのアーキテクチャ (opens in a new tab) - Preethi Kasireddy
役に立つコミュニティリソースを知っていますか? Edit this page and add it!