Ethereumのシステムとしての全体像
August 29, 2026
writing in progress
Ethereumはブロックチェーンとして歴史的な位置付けに基づき説明されることが多いが、ここでは今ある一つのでっかいシステムという観点で、Ethereumの全体像を説明していく。細かい数式やバイト列の説明などはせず、どういう技術を用いてどのように構成されているかを伝えることが目的である。細かい数式やバイト列の説明などはせず、どういう技術を用いてどのように構成されているかを伝えることが目的である。
Ethereumとは
まずEthereumとは、グローバルな状態とそれを変更するチューリング完全な仮想マシン(Ethereum Virtual Machine)で特徴付けられる分散システムである。
さらに、Ethereumは、Proof of Stake(PoS)を基盤とするブロックチェーン型の分散システムであり、任意の行動をしうる参加者によるビザンチン障を想定したコンセンサス機構によって、ネットワーク全体で一貫した状態を維持することができる。
分散システムといえば、Apache Sparkのような分散計算システムや、Google Spannerのような分散データベースなど、さまざまな目的のものが存在する。Ethereumは、現在のグローバルな状態に対して、EVMによってトランザクションやプログラムが実行され、その結果生じた状態遷移が新しいグローバルな状態となる性質を持つ。ただし、このグローバルな状態についてネットワーク全体で合意を形成する必要があるため、Ethereumは計算処理の高速化を目的とした分散計システムや大規模データ管理を目的としたファイルストレージではなく、任意のプログラムを実行可能な中央管理者を必要としない分散コンピュータ、いわば、ワールドコンピュータである。
Ethereumの制御方法
任意のプログラムを実行できる一方で、これには計算資源やネットワークのキャパシティ、または時間が有限であることから、プログラムを無制限に実行することはできない。過剰な計算資源の要求やサービス拒否攻撃(DoS)を防ぐため、Ethereumでは実行される計算量をGasという単位で表し、それに応じた手数料を要求している。また、計算資源には限界があるため、利用希望者が増加した場合には、より高い手数料を提示したプログラム実行要求が優先される。この仕組みにより、Ethereumは中央管理者による制御ではなく、経済的インセンティブによって計算資源の利用を調整している。
Ethereumの形成する自律的な経済
手数料の支払いは誰に対してどんなものでするのだろうか?クラウドコンピューティングなどであれば中央管理者、プロバイダーに対して法定通貨で支払えばいいだろう。だが、Ethereumは中央管理者を持たない分散システムであり、ネットワークを維持する参加者を管理する主体は存在しない。そのため、銀行や企業などの既存の決済システムを利用して、個々の参加者へ報酬を支払う仕組みを構築することは、Ethereumが目指す自律的な分散システムという性質と矛盾してしまう。
そこでEthereumでは、ネットワーク内部に独自の価値単位であるETHを導入し、さらにそれをワールドコンピュータ内の状態として管理することで自己完結をしているのである。
Ethereumはグローバル状態を持つ状態機械であるため、ETHの所有状態もまた、その状態の一部として表現される。つまり、ある主体がETHを保有しているという事実は、外部の金融機関が管理する台帳ではなく、Ethereumネットワーク全体で共有される状態として記録される。
このため、Ethによる送金は、EVMの実行による状態遷移の結果がネットワーク全体で合意されることで起きるのである。
では、Ethereum内部で管理されるETHはどのように供給されるのだろうか。Ethereumではコンセンサス形成(Proof of Stake)に参加するコンピュータ(Validator)に対して、新規発行されたETHが報酬として与えられる。
つまりEthereumにおけるETHの発行は、中央銀行による通貨供給とは異なり、ネットワークの安全性を維持する参加者への報酬としてプロトコルに組み込まれた仕組みとして実行される。
Ethereumを構築する主要な要素
Ethereumはワールドコンピュータであり、内包する独自の通貨を用いた経済メカニズムでネットワークの維持と制御を実現しているということがわかった。この性質から、システムとしての構成は大きく2つの実行レイヤー(Execution Layer)、実行層とコンセンサス層(Consensus Layer)でできている。
Execution Layer
Smart Contract
コンピュータとはプログラムを実行できるものである。Ethereum上でEVMによって実行されるプログラムのことを特にスマートコントラクトと呼ぶ。
Ethereumは分散システムであるため、全てのノードが同じプログラムを実行し、同じ結果に合意する必要がある。スマートコントラクトのコード(EVM向けにコンパイルされたバイトコード)はネットワーク全体で共有され、すべてのノードが同じように実行できる。これは見方を変えれば、参加者全員が従うルールをプログラムとして定義し、それに基づき自動で執行するとも捉えらる。「契約を自動で執行するプログラム」という意味でSmart Contractなのである。
一般的なプログラムは利用者が実行すると処理が開始されて、処理が終わると実行も終了する。処理中にOSなどを介してディスクへの書き込みや、インターネット上での通信を行うことが多い。一方、スマートコントラクトも一度実行されると処理を終えて実行は終了する点では一般的なプログラムと変わらない。しかし、その実行環境はEVMであり、与えられたの入力とEthereum上の状態でプログラムが完結するようになっている。
Ethereum上で動作するプログラムはEVMの指定されたバイトコードも列であるので、それに対応するコンパイラーを持つ言語で書く必要がある。最も普及しているにはSolidityである。
Account / Address
システムにはアカウントというものがつきものである。Ethereumは中央管理者を持たないため、利用者は自身のアカウントを自ら管理する必要がある。この管理を実現するために、Ethereumでは公開鍵暗号方式が採用されている。利用者は秘密鍵を保持することで自身のアカウントを制御し、対応する公開鍵からアカウントを識別するためのアドレスが生成される。これをExternally Owned Account (EOA)という。利用者だけでなくコントラクトもまた、識別できる必要がありこれをContract Account(CA)と呼ぶ。コントラクトはだれもが同様に実行できるものであるため、それを管理する人はいない。なので秘密鍵などはなく、アドレスはコントラクトをデプロイした人の情報から計算される。
Transaction
Ethereumに対して状態の変更を要求するための情報をまとめたものをTransactionと呼ぶ。この名称はデータベースにおけるトランザクションとほぼ同じ意味であり、一連の状態変更はすべて成功するか、失敗した場合は状態変更は巻き戻される。ただし、実行に要したGasは返却されない。
Ethereumの状態を変更する操作はすべてTransactionを通して行われる。Ethereumは「経済システム」と「ワールドコンピュータ」という二つの側面を持つため、大きく二種類に分類できる。内部通貨であるETHの送金と、コントラクトの実行である。なお、新しいスマートコントラクトをデプロイする操作も、コントラクト実行の特殊な形式のトランザクションとして扱われる。
P2P Network
分散システムであるから、一つのノードに送られてきたtransactionはネットワーク全体へと伝搬する必要がある。もし一部のノードにしかtransactionが伝わらなければ、ノード間で見えている状態が食い違ってしまうからである。
Ethereumでは、transactionをgossip algorithmによって各ノードへと伝搬していく。伝搬されてきたtransactionは、すぐさま実行されるわけではなく、一旦プールされる。これをMempoolと呼ぶ。
すぐに実行できない理由は、gossipによる伝搬には時間差があるため、各ノードが受け取るtransactionの順序が完全には一致しないからである。Ethereumは一つのグローバルな状態を持つ以上、ネットワーク全体でどのtransactionをどの順番で実行するかについて合意が必要であり、伝搬という仕組みだけではこの合意を形成することができない。
Block
TransactionがP2P networkを通じて伝搬され、各ノードのMempoolに溜まっているだけでは、Ethereumは次の状態へと遷移することができない。前述の通り、各ノードのMempoolの中身や順序は完全には一致しておらず、このままではどのtransactionを、どの順番で実行するのかについてネットワーク全体で合意することができないからである。したがって、この順番をどのように決定し、どのタイミングで確定させていくかというメカニズムが必要になる。
そこで、Mempoolにある transactionの中から部分集合を選び出し、その実行順序を確定させたものをBlockと呼ぶ。Ethereumのグローバルな状態は、このBlockに含まれるtransactionが順番通りに実行されることによって、次の状態へと遷移していく。
Consensus Layer
これまで出てきた、account, smart contract, transaction, blockはEthereumというワールドコンピュータが状態遷移をするために扱う要素であった。Ethereumは分散システムであり、これらの状態遷移はネットワーク上で合意される必要がある。ここからはそのための要素を説明していく。
Validator
ノード中でも特に、ブロックの作成、検証を行うものをValidatorと呼ぶ。ブロックの作成は