[Web3] イーサリアム2.0とは?主な変更点とスケーラビリティの詳細(第7回)

Web3
  1. はじめに
  2. イーサリアム2.0の概要
  3. イーサリアム2.0の基礎
      1. Proof of Stake (PoS)とは?
        1. PoSの概念
      2. ビットコインプロトコルの一般化とは?
        1. スマートコントラクトとは?
        2. 分散型アプリケーション(dApps)
        3. 自律的な組織(DAO)
        4. 「The Merge」について
  4. これまでのイーサリアムと変わらない要素
  5. イーサリアム2.0のトランザクションのライフサイクル
      1. イーサリアム2.0のトランザクションのライフサイクルの概要
      2. 1. トランザクションの作成と伝搬
      3. 2. トランザクションの検証
      4. 3. バリデータの選出
      5. 4. ブロックの提案
    1. イーサリアム2.0のブロックのデータ構造について
      1. Consensus Layerのデータ構造
        1. Beacon Block
          1. Beacon Block Header
          2. Beacon Block Body
      2. Execution Layerのデータ構造
        1. Execution Payload
          1. Execution Payload Header
        2. データ構造を実際に確認してみよう
      3. 5. ブロックの接続と伝搬
      4. 6. ブロックの検証
      5. 7. 投票と合意形成
  6. 主要な変更点
  7. エグゼキューションレイヤーとコンセンサスレイヤーの分離
      1. エグゼキューションレイヤーとコンセンサスレイヤーの分離
      2. エグゼキューションレイヤー(Execution Layer)
      3. コンセンサスレイヤー(Consensus Layer)
      4. 分離の利点
      5. 実装の仕組み
        1. 分離の実装
        2. 連携の仕組み
  8. PoWからPoSへの移行
        1. PoSの概念
    1. Proof of Stake (PoS) の仕組み
      1. バリデーターの選出
      2. ブロック生成と報酬
      3. ペナルティ
    2. PoSの利点と欠点
  9. バリデータの導入
    1. バリデータの基本概念
      1. バリデータになるための手順
        1. バリデータサイニングキー(署名鍵)
        2. ウィズドロウキー(引き出し鍵)
      2. バリデータの役割
      3. バリデータの報酬とペナルティ
        1. 報酬
        2. ペナルティ
      4. バリデータのライフサイクル
      5. バリデータの登録プロセス
      6. バリデータの管理とツール
  10. スロットとエポックの概念の導入
      1. Slot(スロット)
      2. Epoch(エポック)
    1. スロットとエポックの流れ
      1. 1. ブロック提案と検証
      2. 2. エポックの終了
      3. 3. チェーンの確定性
    2. バリデータの管理
      1. アクティベーションとエグジット
      2. 報酬とペナルティ
  11. シャーディングの導入
  12. コンセンサスと報酬メカニズム
    1. コンセンサスプロセス
      1. ブロック生成
      2. チェックポイントと投票
      3. ファイナリティの確保
    2. 報酬メカニズム
      1. ブロック報酬
      2. アテステーション報酬
      3. ペナルティとスラッシング
    3. 報酬メカニズムの計算
      1. ベース報酬(Base Reward)
      2. 報酬の種類
    4. Checkpoint、Justified、Finalizedの定義と役割
    5. Gasperプロトコル
      1. PoSベースのコンセンサス
      2. Casper FFG (Friendly Finality Gadget)
      3. LMD GHOST (Latest Message Driven Greedy Heaviest Observed Subtree)
  13. Layer2 について
    1. 主な特徴と利点
      1. スケーラビリティの向上
      2. コスト削減
      3. セキュリティの維持
    2. 代表的なLayer2ソリューション
      1. ロールアップ(Rollups)
        1. オプティミスティックロールアップ(Optimistic Rollups)
        2. ゼロ知識ロールアップ(ZK-Rollups)
      2. サイドチェーン(Sidechains)
      3. ステートチャネル(State Channels)
    3. 実装と将来展望
  14. まとめ

はじめに

今回はイーサリアムから更なる進化を遂げた、次世代のスケーラブルで持続可能なブロックチェーンであるイーサリアム2.0に関する内容を扱います。

イーサリアム2.0の概要

イーサリアム2.0は、イーサリアムのスケーラビリティ(拡張性)を向上させることを目的としたアップデートです。前回のブログ記事ではイーサリアムの基本的な構造とスマートコントラクトについて解説しましたが、今回はその変更点に焦点を当てます。

イーサリアム2.0の基礎

イーサリアム2.0の主な目的は、ビットコインプロトコルを一般化し、よりスケーラブルなワールドコンピューターを実現することです。しかし、スケーラビリティの問題が存在し、これを解決するためにプロトコルが大幅に変更されました。この変更は「The Merge」と呼ばれ、Proof of Work (PoW)からProof of Stake (PoS)への移行が含まれます。

Proof of Stake (PoS)とは?

Proof of Stake (PoS) は、ブロックチェーンのコンセンサスアルゴリズムの一種で、ネットワークのセキュリティと整合性を確保するために使用されます。PoSは、従来のProof of Work (PoW) の代替として開発され、エネルギー消費を大幅に削減し、スケーラビリティを向上させることを目的としています。

PoSの概念

PoSでは、ブロックの生成(提案)および検証の権利は、ネットワークの参加者(バリデータ)が所有する暗号通貨の量に基づいて割り当てられます。つまり、より多くの通貨を保有している参加者ほど、ブロックを生成する権利を得る確率が高くなります。

ビットコインプロトコルの一般化とは?

ビットコインプロトコルを一般化することで、イーサリアムは単なるデジタル通貨の送受信を超え、スマートコントラクトdAppsDAOなど、多様で複雑な機能を提供するプラットフォームとなります。これにより、幅広い分野での革新的な利用が可能となります。

スマートコントラクトとは?

下記の資料を参考にしてみてください。

分散型アプリケーション(dApps)

イーサリアムの分散型アプリケーション(dApps)は中央管理者を必要としないアプリケーションの開発と運用が可能となります。

自律的な組織(DAO)

DAOは、スマートコントラクトを活用することで、中央管理者なしで運営される組織を実現します。具体的な例としては、資金調達と投資のガバナンスを自動化したThe DAO、分散型金融の仕組みを提供するMakerDAO、DAOの設立を支援するAragon、シンプルで自由な運営を行うMolochDAO、オープンソースプロジェクトを支援するGitcoinDAOなどがあります。これらのDAOは、それぞれ異なる目的や運営方式を持ちながら、スマートコントラクトを利用することで透明性と効率性を実現しています。

「The Merge」について

下記の資料を参考にしてみてください。

これまでのイーサリアムと変わらない要素

イーサリアム2.0のトランザクションのライフサイクル

イーサリアム2.0のトランザクションのライフサイクルの概要

イーサリアム2.0の主な変更点についての詳細を説明する前にまずは、イーサリアム2.0のトランザクションのライフサイクルの全容について説明しておこうと思います。従来のイーサリアムのライフサイクルとの違いを確認することで変更点を確認することができます。

従来のイーサリアムのトランザクションのライフサイクル

イーサリアム2.0のトランザクションのライフサイクルは、以下のステップで構成されます。各ステップにおいて、トランザクションの処理、ブロックの提案と検証、そして最終的なチェーンへの追加までが行われます。変更点としてはバリデータというブロックの提案や検証を通して提案者投票者という新たな概念が導入されています。

1. トランザクションの作成と伝搬

  • EOA(Externally Owned Account)がトランザクション(Message CallまたはContract Creation)を作成し、署名します。
  • 署名されたトランザクションは、ネットワーク内の各ノードに伝搬されます。

2. トランザクションの検証

  • 各ノードは受け取ったトランザクションを独立に検証します。
  • 問題が無いトランザクションのみをメモリプールに溜め、さらに他のノードに伝搬します。

3. バリデータの選出

  • バリデータたちは確率的にブロックの提案者投票者に選ばれます。

4. ブロックの提案

  • 提案者に選ばれたバリデータは、メモリプールから任意のトランザクションを選び、新しいブロックを作成します。
  • 提案者はブロック内のトランザクションを実行し、集約した投票者の宣言もブロックに格納します。

イーサリアム2.0のブロックのデータ構造について

5.ブロックの接続と伝搬に進む前にイーサリアム2.0のブロックデータ構造についての詳細を説明します。ここは飛ばしてもらっても構いませんが、後で理解を深めるために戻ってきて読んでもらえればと思います。

5.ブロックの接続と伝搬:https://shion.blog/ethereum2-0_1/#toc27

イーサリアム2.0のブロックデータ構造は、セキュリティとスケーラビリティを向上させるために設計されています。Beacon Blockはネットワーク全体の管理とセキュリティを提供し、Execution Payloadは実際のトランザクション処理を担当します。これにより、効率的で安全な分散型ネットワークが実現されます。

ブロックのデータ構造図−1
ブロックのデータ構造図−2

Consensus Layerのデータ構造

コンセンサスレイヤーは、ブロックの生成と合意形成を担当します。イーサリアム2.0では、Proof of Stake(PoS)コンセンサスメカニズムが採用され、バリデータがブロックの提案と検証を行います。

詳細:https://shion.blog/ethereum2-0_1/#toc30

Beacon Block

イーサリアム2.0では、Beacon Chainという新しいチェーンが導入され、その中のブロックをBeacon Blockと呼びます。Beacon Blockはネットワークの基盤を構成し、全体のセキュリティやコンセンサスを維持します。

Beacon Block Header

Beacon Block Headerは、ブロックのメタデータを含む部分で、以下の情報が含まれます。

親ブロックへのリファレンス前のブロックのハッシュを指し、ブロックチェーンをつなげる。
状態ルートブロックチェーンの現在の状態を示す。
ランダムネス次のブロックの提案者を選ぶためのランダムな値。
その他のメタデータブロック生成の時間やバージョン情報など。

上図のブロックのデータ構造図−2に該当するBeacon Block Headerの項目と役割の表

項目役割備考
slotブロックに対応するslot
proposer_index提案者のvalidator signing keyの公開鍵
body_rootBeaconBlockBody部分のマークルハッシュツリーのroot
parent_root親ブロックのブロックヘッダーのハッシュ
state_rootConsensus Layerの状態(state)ツリーのrootConsensus Layerにおける状態(state)データの詳細は後述
ブロックのデータ構造図−2のBeacon Block Header参照
Beacon Block Body

Beacon Block Bodyには、ブロックの実際のデータが含まれます。具体的には以下の内容が含まれます。

提案者の署名ブロックを提案したバリデーターの署名。
アグリゲート署名複数のバリデーターの署名をまとめたもの。
ランダムネス将来のブロックのバリデーターを選ぶためのランダムな数値。
その他のトランザクションやデータ

上図のブロックのデータ構造図−2に該当するBeacon Block Bodyの項目と役割の表

項目役割備考
randao_reveal次のepochのRANDAOを作るためのパーツ
eth1_data約1週間前のexecution layerの情報投票を通じてepoch毎に更新
graffiti任意のデータを入れることが出来る領域
proposer_slashingsブロック提案者の不正の証拠を入れることが出来る領域最大16個まで(後述)
attester_slashingsブロック投票者の不正の証拠を入れることが出来る領域最大2個まで(後述)
attestations集約された投票最大128個まで(max_committees_per_slotは64だった)
deposits新規バリデータの情報最大16個までのメッセージ
voluntary_exits退脱バリデータの情報最大16個までのメッセージ
sync_aggregate集約された投票(ライトクライアント用)今回の画像では説明が省略
bits_to_execution_changeswithdrawal_credentialsを0x01に変更最大16個までのメッセージ
ブロックのデータ構造図−2のBeacon Block Body参照

Execution Layerのデータ構造

エグゼキューションレイヤーは、トランザクションの実行やスマートコントラクトの処理を担当します。これにより、従来のイーサリアム1.0のように、トランザクションの送信、スマートコントラクトの実行、ステートの変更などの操作が行われます。

詳細:https://shion.blog/ethereum2-0_1/#toc29

Execution Payload

Execution Payloadは、イーサリアム1.0の機能を引き継ぐ部分で、実際のトランザクション処理を行います。これはBeacon Chainと並行して動作し、スマートコントラクトの実行やトランザクションの処理を担当します。

イーサリアム1.0の機能:https://shion.blog/ethereum_2/#toc31

Execution Payload Header

Execution Payload Headerは、Execution Payloadのメタデータを含む部分で、以下の情報が含まれます。

トランザクションルートブロック内のトランザクションのハッシュを示す。
状態ルートトランザクション実行後の状態を示す。
レシートルートトランザクションの結果のハッシュを示す。

上図のブロックのデータ構造図−2に該当するBeacon Block Bodyの項目と役割の表

項目役割備考
fee_recipientGas feeを受け取るEOAのアドレスブロック提案バリデータが指定。withdrawal_credentials(合意形成の結果得られる報酬の受取り情報)と取りえ変更可能。
prev_randao前のepochのRANDAODifficultyの領域と入れ替わりで導入。このブロックのバリデータ選出に使われた値。
withdrawals_rootwithdrawalsのルート
withdrawals引き出し情報のリスト16個の引き出し情報がマークル木ハッシュアリツリー状になっている(2023年4月以降に実装)。
ブロックのデータ構造図−2のExecution Payload Header参照
データ構造を実際に確認してみよう

attestationやブロックの構造・タイミングは、beaconcha.inなどのエクスプローラーサイトを通じて直接確認することができます。

https://beaconcha.in

5. ブロックの接続と伝搬

  • 提案者は、新しいブロックを既存のチェーンの先端に接続します。
  • 完成したブロックをネットワーク内の各ノードに伝搬します。

6. ブロックの検証

  • 各ノードは受け取ったブロックに問題が無いか独立に検証します。
  • 問題が無いブロックのみを自身のチェーンに反映します。

7. 投票と合意形成

  • 投票者に選ばれたバリデータは、正統と考えるチェーンの先端にあるブロックを宣言します。
  • バリデータたちは、最も重いチェーン(最も多くの投票を受けたチェーン)を「正しい」状態遷移の記録とします。

主要な変更点

イーサリアム2.0では、以下の3つの大きな変更点があります。

  • エグゼキューションレイヤーとコンセンサスレイヤーの分離
  • PoWからPoSへの移行
  • バリデータの導入
  • スロットとエポックの概念の導入
  • シャーディングの導入

これらの要点について一つずつ解説してみようと思います。

エグゼキューションレイヤーとコンセンサスレイヤーの分離

エグゼキューションレイヤーとコンセンサスレイヤーの分離

エグゼキューションレイヤーとコンセンサスレイヤーの分離は、イーサリアム2.0の重要な特徴の一つです。これにより、トランザクション処理とブロック生成が効率化され、ネットワークのスケーラビリティ、セキュリティ、モジュール性が向上します。

エグゼキューションレイヤーはトランザクションとスマートコントラクトの実行を担当し、コンセンサスレイヤーはブロック生成と合意形成を担当することで、それぞれのレイヤーが特定の役割に集中できるようになります。

エグゼキューションレイヤー(Execution Layer)

役割

エグゼキューションレイヤーは、トランザクションの実行やスマートコントラクトの処理を担当します。これにより、従来のイーサリアム1.0のように、トランザクションの送信、スマートコントラクトの実行、ステートの変更などの操作が行われます。

機能

トランザクションの処理トランザクションを検証し、ネットワーク上での実行を行います。
スマートコントラクトの実行スマートコントラクトコードを実行し、その結果に基づいてステートを更新します。
EVM(Ethereum Virtual Machine)スマートコントラクトを実行するための仮想マシンが含まれています。

コンセンサスレイヤー(Consensus Layer)

役割

コンセンサスレイヤーは、ブロックの生成と合意形成を担当します。イーサリアム2.0では、Proof of Stake(PoS)コンセンサスメカニズムが採用され、バリデータがブロックの提案と検証を行います。

機能

ブロックの提案と検証バリデータがブロックを提案し、他のバリデータがそのブロックを検証します。
ステーク管理バリデータが32ETHをステークすることでネットワークのセキュリティを確保します。
コンセンサスプロトコルバリデータ間で合意形成を行い、チェーンの正当性を維持します。

分離の利点

スケーラビリティエグゼキューションレイヤーとコンセンサスレイヤーを分離することで、各レイヤーが特定の機能に集中でき、全体のスケーラビリティが向上します。これにより、トランザクションの処理能力が増加し、ネットワーク全体のパフォーマンスが向上します。
モジュール性レイヤーを分離することで、各レイヤーが独立してアップグレードや最適化を行うことが可能になります。これにより、新しい技術や改良が迅速に導入できるようになります。
セキュリティコンセンサスレイヤーが専用のバリデータによって管理されるため、ネットワークのセキュリティが向上します。バリデータはステークを行い、悪意のある行動に対してペナルティが課される仕組みが整っています。

実装の仕組み

分離の実装

イーサリアム2.0では、エグゼキューションレイヤーコンセンサスレイヤーがそれぞれ異なるノードソフトウェアによって管理されます。これにより、両方のレイヤーが独立して機能し、相互に情報をやり取りする仕組みが確立されています。

連携の仕組み

エグゼキューションレイヤーでトランザクションが処理されると、その結果がコンセンサスレイヤーに渡され、バリデータがその結果を検証し、新しいブロックとしてチェーンに追加します。この連携により、ネットワーク全体の整合性が保たれます。

PoWからPoSへの移行

Proof of Stake (PoS) は、ブロックチェーンのコンセンサスアルゴリズムの一種で、ネットワークのセキュリティと整合性を確保するために使用されます。PoSは、従来のProof of Work (PoW) の代替として開発され、エネルギー消費を大幅に削減し、スケーラビリティを向上させることを目的としています。

PoSの概念

PoSでは、ブロックの生成(提案)および検証の権利は、ネットワークの参加者(バリデータ)が所有する暗号通貨の量に基づいて割り当てられます。つまり、より多くの通貨を保有している参加者ほど、ブロックを生成する権利を得る確率が高くなります。

PoW(Proof of Work)とPoS(Proof of Stake)の主な違いをまとめました。

項目PoW (Proof of Work)PoS (Proof of Stake)
コンセプト計算能力を使ってブロックを追加保有するコインの量に基づいてブロックを追加
エネルギー消費高い低い
セキュリティ高い(計算資源の集中が必要)高い(資産の集中が必要)
スケーラビリティ低い(ブロック追加の時間がかかる)高い(ブロック追加の速度が速い)
インセンティブ構造マイナーは報酬を得るために競争ステーキングによって報酬を得る
51%攻撃への耐性攻撃に成功するためにはネットワーク全体の51%以上の計算能力が必要攻撃に成功するためにはネットワーク全体の51%以上のコインを保有する必要
導入例ビットコイン、ライトコインイーサリアム、カルダノ

Proof of Stake (PoS) の仕組み

バリデーターの選出

  • バリデーターは、自分の持つ暗号通貨をネットワークにステークすることで、ブロックの生成および検証に参加します。
  • ステークされた暗号通貨の量が多いほど、次のブロックの生成者に選ばれる確率が高くなります。

ブロック生成と報酬

  • バリデーターがブロックを生成し、そのブロックがネットワークによって承認されると、バリデーターは報酬を得ることができます。この報酬は、新たに発行された暗号通貨やトランザクション手数料から成ります。

ペナルティ

  • 不正行為やネットワークの規約に違反した場合、バリデーターのステークが一部または全て没収されることがあります。これにより、不正行為のリスクを抑制します。

PoSの利点と欠点

以下にPoSの利点と欠点のみを表にまとめました。

利点欠点
PoWと比べてエネルギー効率が高く、計算リソースが不要なため電力消費が大幅に削減される。ステーク量が多いほど次のブロック生成者に選ばれる確率が高くなり、既に多くの暗号通貨を持つ人がさらに多くの報酬を得ることになり、富の集中が進む可能性がある。
ネットワークの過半数のステークをコントロールすることが必要になるため、攻撃者にとって非常にコストがかかる。新しいネットワークでは、初期にバリデーターを分散させることが難しく、初期の参加者が大きな影響力を持つことになり、ネットワークの分散性が損なわれるリスクがある。
ブロック生成がステーク量に基づいて行われるため、ブロック生成の予測がしやすく、ネットワークの安定性が向上する。

PoSに関しては以上です。

バリデータの導入

バリデータは、ブロックの提案や検証を担当する新しい概念です。バリデータになるためには、32ETHデポジットコントラクトに預ける必要があります。これにより、Proof of Stakeによるコンセンサスが実現されます。

バリデータは、イーサリアム2.0のネットワークにおける重要な役割を担い、PoSコンセンサスメカニズムを通じてブロックの提案、検証、投票を行います。バリデータになるためには、32 ETHのステークと新しい鍵ペアの生成が必要であり、登録プロセスを経てコンセンサスレイヤーに登録されます。報酬とペナルティのメカニズムにより、バリデータは正当な行動を奨励され、ネットワークのセキュリティが維持されます。

バリデータの基本概念

バリデータは、ネットワークのセキュリティとコンセンサスを維持するために、一定量のETH(32 ETH)をステーク(預け入れ)するノード(参加者)です。バリデータはブロックを提案・検証し、ネットワークの整合性を確保します。ステークしたETHは、不正行為に対するペナルティ(スラッシング)を防ぐための担保として機能します。

バリデータになるための手順

132 ETHのステークバリデータになるには、まず32 ETHをデポジットコントラクトに預け入れます。このデポジットにより、バリデータとしての資格を得ます。
2バリデータ
キーの生成
バリデータは2つの鍵ペアを生成します。一つはバリデータサイニングキー(署名鍵)、もう一つはウィズドロウキー(引き出し鍵)です。
バリデータサイニングキー(署名鍵)

ブロック提案や検証の際に使用する鍵。

ウィズドロウキー(引き出し鍵)

ステークしたETHを引き出すための鍵。

バリデータの役割

1ブロックの提案バリデータはランダムに選ばれ、新しいブロックを提案します。この提案には、取引データやスマートコントラクトの実行結果が含まれます。
2ブロックの検証他のバリデータが提案したブロックを検証し、その正当性を確認します。これには、取引の有効性やデータの整合性のチェックが含まれます。
3投票検証が完了したブロックに対して投票を行い、多数のバリデータが承認したブロックがチェーンに追加されます。

バリデータの報酬とペナルティ

報酬

バリデータは正当なブロックを提案・検証することで報酬を得ます。この報酬は、新しく発行されるETHやトランザクション手数料から支払われます。

ペナルティ

バリデータが不正行為を行った場合、例えば無効なブロックを提案したり、検証を怠ったりすると、ステークしたETHの一部または全部が没収されます。これをスラッシングと呼びます。スラッシングはネットワークのセキュリティを維持し、不正行為を抑制するための重要なメカニズムです。

バリデータのライフサイクル

バリデータは、登録を経て、一定の条件を満たすことで退出や引き出しが可能です。これには、ペンディングやアクティベート、エグジットなどのステータスが関与し、段階的に行われます。

1登録32 ETHをデポジットしてバリデータとして登録します。
2ペンディング登録後、バリデータはペンディング状態になり、一定期間待機します。
3アクティベートペンディング期間が終了すると、バリデータとしてアクティブになります。ここからブロックの提案・検証活動を開始します。
4エグジットバリデータは任意のタイミングでエグジット(退出)を申請できます。エグジット後、一定期間の待機を経てステークしたETHを引き出せるようになります。
5スラッシング不正行為を行った場合、ペナルティとしてステークしたETHが没収されます。

バリデータの登録プロセス

No.登録プロセス内容
1デポジットデータの送信バリデータになるための候補者は、32 ETHデポジットコントラクトに送信し、デポジットデータを提供します。このデータには、署名キー、引き出しキーのハッシュ、署名などが含まれます。
2デポジットイベントの生成デポジットコントラクトは、デポジットデータを受け取り、検証します。検証が成功すると、デポジットイベントが生成され、ログに記録されます。
3デポジットツリーの更新デポジットコントラクトは、受け取ったデポジットデータマークルツリーに追加します。これにより、デポジットデータの整合性が保証されます。
4コンセンサスレイヤーへの伝達デポジットイベントは、エグゼキューションレイヤーからコンセンサスレイヤーに伝達されます。コンセンサスレイヤーは、このデポジットイベントを検証し、新しいバリデータを登録します。

バリデータの管理とツール

バリデータは通常、専用のソフトウェアを使用して管理されます。これには、バリデータノードを運営するためのクライアントソフトウェアや、ステーキングサービスを提供するプラットフォームが含まれます。代表的なクライアントには、PrysmLighthouseTekuNimbusなどがあります。

スロットとエポックの概念の導入

Slot(スロット)Epoch(エポック)は、イーサリアム2.0のPoS(Proof of Stake)コンセンサスメカニズムにおける重要な時間単位です。スロットとエポックはネットワークの効率とセキュリティを高めるための基本的な構成要素となっています。

Slot(スロット)

スロットは12秒の短い時間単位で、各スロットごとにブロック提案と検証が行われます。

定義スロットは、イーサリアム2.0における時間の最小単位であり、各スロットでバリデータがブロックを提案するチャンスがあります。
時間長: 1スロットは12秒です。
役割ブロック提案: 各スロットごとにランダムに選ばれたバリデータが新しいブロックを提案します。
検証: 他のバリデータが提案されたブロックを検証し、投票を行います。

Epoch(エポック)

エポックは32スロットの集合で、ネットワークの状態が確定されるタイミングです

定義エポックは、一定数のスロットの集合です。エポックは、ネットワークの状態を確定するためのチェックポイントとして機能します。
スロット数: 1エポックは32スロットで構成されます。
役割チェーンの確定: 各エポックの終わりに、ネットワークの状態が確定され、最終的なブロックが決定されます。
バリデータの管理: エポックごとにバリデータのアクティベーションやエグジットが処理されます。

スロットとエポックの流れ

1. ブロック提案と検証

  • 各スロットで1人のバリデータが新しいブロックを提案します。
  • 他のバリデータがそのブロックを検証し、正当性を確認します。

2. エポックの終了

  • 32スロットが経過すると1つのエポックが終了します。
  • エポックの終了時に、ネットワークの状態が確定されます。
  • バリデータはエポックの終了ごとに報酬を受け取ったり、ペナルティを課されたりします。

3. チェーンの確定性

  • 各エポックの終了時に、最も多くのバリデータによって確認されたブロックが最終的なブロックとして確定されます。
  • これにより、ネットワークの状態が安定し、セキュリティが強化されます。

バリデータの管理

アクティベーションとエグジット

バリデータが新たに登録されたり、退出したりするのはエポック単位で行われます。これにより、バリデータのステータスが適切に管理されます。

報酬とペナルティ

バリデータは、エポックごとに報酬を受け取ります。不正行為があった場合、ペナルティが課されます。

シャーディングの導入

イーサリアム2.0では、ネットワークのスケーラビリティを大幅に向上させるためにシャーディングが導入されます。シャーディングとは、ネットワークを複数の小さなチェーン(シャード)に分割し、それぞれが独立してトランザクションを処理する仕組みです。これにより、ネットワーク全体の処理能力が大幅に向上します。

コンセンサスと報酬メカニズム

コンセンサスプロセス

ブロック生成

バリデータはランダムに選ばれ、新しいブロックを提案します。ブロックは他のバリデータによって検証され、その正当性が確認されます。

チェックポイントと投票

ブロックは一連のチェックポイントに分かれます。各チェックポイントは一定間隔で設定され、バリデータはこれらのチェックポイントに対して投票を行います。投票により、一定数のチェックポイントが合意に達すると、それらのチェックポイントが最終化されます(ファイナリティ)。

ファイナリティの確保

Casper FFGを利用して、チェーンのチェックポイントが最終化されます。最終化されたチェックポイントは不変となり、チェーンの一部として確定されます。

報酬メカニズム

ブロック報酬

バリデータは、新しいブロックを提案し、それがチェーンに追加されると報酬を受け取ります。この報酬は、新たに発行されたETHやトランザクション手数料から成ります。

アテステーション報酬

他のバリデータによって提案されたブロックを正しく検証(アテステーション)したバリデータも報酬を受け取ります。

ペナルティとスラッシング

バリデータが不正行為を行った場合、ステークされたETHが没収される(スラッシング)ペナルティが科されます。オフラインや非アクティブなバリデータも報酬が減少するペナルティが課されます。

報酬メカニズムの計算

イーサリアム2.0の報酬メカニズムは、バリデータ(Validator)に対してインセンティブを提供するために設計されています。具体的には、以下のようなメカニズムで報酬が計算されます。

ベース報酬(Base Reward)

ベース報酬は、ネットワーク全体のバリデータ数に基づいて計算されます。具体的には、以下の計算式が用いられます。

Base Reward = (Effective Balance) * sqrt(Total Active Balance) / Base Factor
項目定義
Effective Balance各バリデータの有効残高(最大32 ETH)
Total Active Balanceネットワーク全体のアクティブなバリデータの合計残高
Base Factor固定値(約64)

報酬の種類

報酬の種類定義
アテステーション報酬(Attestation Rewards)バリデータがブロックを正しくアテストした場合に得られる報酬
同期委員会報酬(Sync Committee Rewards)同期委員会に参加し、ブロックの同期に貢献したバリデータに対する報酬
ブロック提案報酬(Block Proposal Rewards)バリデータがブロックを提案し、そのブロックが承認された場合に得られる報酬

Checkpoint、Justified、Finalizedの定義と役割

イーサリアム2.0におけるCheckpoint、Justified、Finalizedの概念は、ブロックチェーンの進行と安定性を確保するために重要です。これらのステータスはバリデータの投票によって決定され、特定のブロックがどの程度信頼できるかを示します。最終化されたブロックは不可逆的であり、ネットワークの安全性を高めるための基盤となります。

以下の表に、Checkpoint、Justified、Finalizedの定義と役割をまとめました。

項目定義役割
Checkpointイーサリアム2.0のブロックチェーンにおいて一定の間隔で設定される特定のブロックのことを指します。バリデータはこのCheckpointに対して投票を行い、その結果を基にブロックチェーンの進行が管理されます。チェックポイントはブロックチェーンのセクションを区切るための目印として機能します。
Justifiedバリデータの過半数の賛成票を得て、次の段階へ進むための信頼できるブロックとして認められたCheckpointの状態を指します。あるCheckpointがJustifiedになると、そのCheckpointに至るまでのチェーンが正当であると認識されます。この状態は次のFinalizedステータスへの移行の前段階です。
FinalizedJustifiedなCheckpointがさらに多数のバリデータによる賛成票を得て、不可逆的に確定された状態を指します。一度FinalizedされたCheckpointは、ネットワークのどのバリデータによっても変更できなくなり、チェーンの一部として永久に保持されます。これにより、過去のブロックが変更されるリスクがなくなり、ネットワークのセキュリティと一貫性が確保されます。

Gasperプロトコル

Gasperプロトコルは、イーサリアム2.0におけるPoSベースのコンセンサスとファイナリティ(最終化)を実現するためのプロトコルで、Casper FFGLMD GHOSTという二つの主要なコンポーネントから成り立っています。これにより、ネットワークのセキュリティと効率性を向上させ、バリデータに適切な報酬とペナルティを提供することで、全体の健全性を保っています。

PoSベースのコンセンサス

Gasperは、Proof of Stake (PoS)を基盤としたコンセンサスメカニズムです。バリデータはETHをステークし、ネットワークのセキュリティを担保しながらブロック生成と検証を行います。

Casper FFG (Friendly Finality Gadget)

Gasperは、Casper FFGというファイナリティプロトコルを含んでいます。これにより、ある程度のブロックが生成された後、そのブロックが確定される(ファイナリティ)仕組みを提供します。具体的には、チェックポイントを設け、そのCheckpointがバリデータの投票によって最終化されます。


https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md

LMD GHOST (Latest Message Driven Greedy Heaviest Observed Subtree)

Gasperはまた、LMD GHOSTというフォーク選択ルールを使用しています。これは、バリデータが最新のメッセージ(投票)に基づいて最も重いサブツリーを選択するアルゴリズムです。このルールにより、ネットワークの分岐が効果的に管理され、正しいチェーンが選ばれます。


https://arxiv.org/pdf/2003.03052

Layer2 について

イーサリアム2.0におけるLayer2ソリューションは、イーサリアムのスケーラビリティとトランザクション処理能力を向上させるために設計されています。Layer2は、メインのイーサリアムブロックチェーン(Layer1)とは別に動作し、トランザクションをオフチェーンで処理することで、ネットワーク全体の負荷を軽減します。以下にLayer2の主要な特徴と仕組みを説明します。

主な特徴と利点

スケーラビリティの向上

  • Layer2ソリューションは、トランザクションをオフチェーンで処理することで、イーサリアムのスループットを大幅に向上させます。
  • Layer1のブロックチェーンに記録されるデータ量が減少し、これによりネットワークの混雑が緩和されます。

コスト削減

  • オフチェーンでトランザクションを処理するため、ガス料金(トランザクション手数料)が大幅に削減されます。
  • ユーザーにとって、より低コストで迅速な取引が可能になります。

セキュリティの維持

  • Layer2ソリューションは、Layer1のセキュリティを維持しつつ、効率的なトランザクション処理を提供します。
  • オフチェーンで処理されたトランザクションの結果は、定期的にLayer1に戻され、そこで最終的な合意が得られます。

代表的なLayer2ソリューション

ロールアップ(Rollups)

オプティミスティックロールアップ(Optimistic Rollups)

トランザクションをバッチ処理し、まとめてLayer1に送信します。処理の正確性に対する異議がない限り、トランザクションは承認されます。

ゼロ知識ロールアップ(ZK-Rollups)

トランザクションの有効性を証明するために、ゼロ知識証明を使用します。トランザクションデータをまとめてLayer1に送信し、すぐに検証されます。

サイドチェーン(Sidechains)

  • メインチェーンとは別に動作する独立したブロックチェーンです。独自のコンセンサスアルゴリズムを使用し、定期的にLayer1とやり取りします。
  • 高いスループットと低いトランザクションコストを提供しますが、セキュリティはサイドチェーン自体のものに依存します。

ステートチャネル(State Channels)

  • オフチェーンのトランザクションチャネルを作成し、そのチャネル内で複数のトランザクションを迅速かつ低コストで行うことができます。
  • 最終的な結果のみをLayer1に投稿することで、ガス料金を大幅に削減します。

実装と将来展望

イーサリアム2.0の進化に伴い、Layer2ソリューションの実装が進んでいます。これにより、以下のようなメリットが期待されています。

  • ネットワークの混雑が緩和され、トランザクション速度が向上します。
  • 開発者は、より効率的でスケーラブルなDAppsを構築できるようになります。
  • ユーザーにとって、より低コストで迅速な取引が可能になります。

まとめ

イーサリアム2.0は、スケーラビリティの向上を目指して多くの変更が加えられました。エグゼキューションレイヤーコンセンサスレイヤーの分離バリデータの導入スロットとエポックの概念など、これまでのイーサリアムとは異なる新しい構造が導入されています。

コメント

タイトルとURLをコピーしました