イーサリアム2.0のアーキテクチャ
イーサリアム2.0は、いくつかのフェーズを経て開発が進められます。
フェーズを構成するのは、「ビーコンチェーンの稼働」「ステーキングの開始」「チェーンの統合(PoSへの移行)」「シャーディングの実装」です。
これらの要素は、どのような順番で行われるのか決まっているわけではなく、開発状況を随時考慮して何を優先するか決められます。
なお、イーサリアム2.0が完了した場合のアーキテクチャは下図が想定されています。
この図を紐解く形で、イーサリアム2.0の各フェーズについて理解を深めていきましょう。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
ビーコンチェーンを理解しよう
イーサリアム2.0は、2020年12月より最初のフェーズがスタートしました。
このフェーズで行われたのは、「ビーコンチェーンの稼働」と「ステーキングの開始」です。
ビーコンチェーンとは、イーサリアム2.0のメインチェーンとなるブロックチェーンのことで、プルーフオブステーク(PoS)によって動作する新しいイーサリアムブロックチェーンになります。
そのため、ブロックを生成するのにステーキングが必要になることから、「ビーコンチェーンの稼働」と「ステーキングの開始」が同時に行われました。
ビーコンチェーンは、プルーフオブワーク(PoW)で動作する既存のイーサリアムブロックチェーンとは異なり、ETHの送金やスマートコントラクトの処理をすることはできません。
そのため、このフェーズにおいては既存のPoWチェーン(Eth1チェーンという)とPoSチェーン(ビーコンチェーン、Eth2チェーンという)が並存する形となっています。
なお、この状態のことをCasper FFG(Friendly Finality Gadget)と呼ぶこともあります。
従って、このフェーズでは引き続きEth1チェーンでトランザクションが処理され、引き続きマイニングが行われます。
ビーコンチェーンの様子は、「beaconcha.in」や「BeaconScan」といったサービスで確認することが可能です。
これらのサービスでは、ビーコンチェーンにどれだけのバリデータが存在し、どれぐらいのETHが預けられているかなどを確認することができます。
こうしたサービスを使うことでいつでもブロックチェーンの様子が見て取れるところも、ブロックチェーンの特徴の1つだといえるでしょう。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
チェーンの統合を理解しよう
ビーコンチェーンとして動き始めたEth2チェーンは、次のフェーズでEth1チェーンと統合されます。
この統合は「The Merge」と呼ばれています。
2つのチェーンを統合するタイミングでPoWからPoSへの移行が行われ、ここでイーサリアムのマイニングが終わりを迎えます。
コンセンサスアルゴリズムがPoSに切り替わることでマイニングが必要なくなるからです。
チェーンが統合するまでは、Eth1チェーンがメインとなってイーサリアムネットワークを構築するため、それまではEth1チェーンの存在が引き続き重要になります。
なお、チェーンの統合によりEth1チェーンのトランザクションデータが失われることはありません。
また、Eth1チェーンで流通しているイーサ(ETH)も、チェーンの統合によりビーコンチェーンへと移転されます。
チェーン統合のタイミングでETHに起こる特徴的な点としては、「The Cliffening(クリフ二ング)」と呼ばれるETH発行量の急激な減少があげられます。
The Cliffeningは、ビットコインの半減期に由来したものです。
ビットコインの場合は約4年ごとに半減期が訪れ、マイニングによるビットコインの新規発行量が文字通り半減していきます。
イーサリアムの場合は、チェーン統合のタイミングで一気に約90%の発行量を減少させるのです。
こうすることで、イーサの価格をあげることができると期待されています。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.
シャーディングを理解しよう
チェーンの統合によりPoSへの移行が完了した後、更なる処理性能の向上を実現すべくシャーディングを実装します。
そもそもシャーディングとは、データベースを分割することで負荷を分散させる技術のことで、システム開発の世界では一般的な概念です。
イーサリアムにおけるシャーディングの実装では、イーサリアムネットワークをさらに64の新しいチェーンに拡張させます。(将来的には更に多くのチェーンに拡張される予定です)
拡張され新たに追加されたチェーンは「シャードチェーン」と呼ばれ、それぞれがこれまでのイーサリアムブロックチェーンと同じ役割をこなすことが可能です。
ビーコンチェーンは、各シャードチェーンを検証するバリデータをランダムに割り当てる役割を担います。
これは、バリデータが結託してネットワークを乗っ取ろうとすることを防ぐための仕組みです。
その他にも、ビーコンチェーンはシャード同士の通信を行うためのトランザクションデータの橋渡しを行うなど、全てのシャードの元になる働きを担います。
シャーディングが実装されることで、これまで1つのブロックチェーンで処理していたものを複数のシャードで同時処理することになるため、全体のデータの整合性が統一されなくなってしまいます。
ビーコンチェーンがシャード同士の通信を仲介することで、全てのシャードが同じ最新のトランザクションデータを保有することができるのです。
シャーディングが実装されると、バリデータはイーサリアムネットワーク全体を検証する必要がなくなり、割り当てられた各シャードだけを検証すれば良くなります。
そのため、イーサリアムネットワークに参加するためのハードウェアの要件が低くなり、個人のパソコンやスマートフォンでも可能になることが想定されています。
より多くの人がバリデータとして参加しネットワークが分散化されることで、単一障害点を無くすことが可能です。
これはセキュリティの向上にも繋がります。
仮にPoWでシャーディングを実装しようとすると、各シャードに対してマイナーをランダムに割り当てることができないため、容易にシャードを乗っ取ることができてしまいます。
そのため、シャーディングを実装して処理性能を高めるにはPoWではなくPoSであることが前提条件になるのです。
イーサリアムネットワークにバリデータとして参加するには、クライアントを使用します。
イーサリアム2.0におけるクライアントは、主に次のようなものがあげられます。
- Prysm(Go実装)
- Trinity(Python実装)
- Lighthouse(Rust実装)
- Nimbus(Nim実装)
- Cortex(.NET実装)
- Teku(Java実装)
- Lodestar(JavaScript実装)
次のレッスンでは、これらのクライアントを複数使用する「マルチクライアント」について学習します。
1人が複数のクライアントを使用することでネットワークはさらに分散化されるため、マルチクライアントは重要な意味を持つのです。
Check your achievement
Click the “Tick” button
if you understand the lesson so far.