Web3の最大の利点は検証可能性です-ユーザーはシステムが実際にどのように動作するかを検証できます。この機能により、多くの人々が暗号通貨業界内外でweb3をより透明で検証可能なインターネットへの一歩として説明しています。
FacebookやInstagramのようなWeb2プラットフォームでは、アルゴリズムやルールが文書化されていても不透明なままであるのに対し、暗号プロトコルは完全に監査可能に設計されています。それらが共有されていたとしても、プラットフォームが指定されたとおりに動作しているかどうかを検証することができません。これは、暗号とは正反対であり、すべてのプロトコルができるだけ監査可能に設計されているか、少なくともそのように期待されていることを意味しています。
今日は、最近公開されたヴィタリックのセクション「The Verge」を探求しますイーサリアムの将来に関する6部作シリーズ, Ethereumが将来的に検証可能性、持続可能性、およびスケーラビリティを実現するために取る手順を分析すること。 「The Verge」の見出しの下で、ブロックチェーンアーキテクチャをより検証可能にする方法、これらの変更がプロトコルレベルでもたらす革新、およびユーザーにより安全なエコシステムを提供する方法について議論します。さあ始めましょう!
Web2アプリケーションは「ブラックボックス」として機能し、ユーザーは入力とその結果のみを見ることができ、アプリケーションの実際の動作には透明性がありません。一方、暗号通貨プロトコルは通常、ソースコードを公開しているか、少なくとも公開する予定があります。この透明性には2つの目的があります。ユーザーが選択すれば、プロトコルのコードと直接やり取りすることができ、また、システムがどのように動作し、どのようなルールが適用されるかを正確に理解するのに役立ちます。
「できるだけ分散化し、残りを検証します。」
検証可能性は、システムが説明責任を果たし、多くの場合、プロトコルが意図したとおりに機能することを保証します。この原則は、中央集権化を最小限に抑えることの重要性を強調し、しばしば不透明で説明責任のない構造につながり、ユーザーが操作を検証できない場合があることを示しています。代わりに、可能な限り非中央集権化を目指し、非中央集権化が不可能な場合は、残りの要素を検証可能で説明責任を果たすよう努めるべきです。
イーサリアムコミュニティは、この見解に賛同するようです、ロードマップイーサリアムをより検証可能にするためのマイルストーン(「The Verge」と呼ばれる)が含まれています。ただし、「The Verge」に入る前に、ブロックチェーンのどの側面が検証されるべきか、ユーザーの観点から見てどの部分が重要かを理解する必要があります。
ブロックチェーンは実質的にグローバルなクロックとして機能します。約10,000台のコンピュータから成る分散ネットワークでは、トランザクションが起点ノードから他の全ノードに伝播するのにかなりの時間がかかる場合があります。そのため、ネットワーク全体のノードは、各ノードが独自の主観的な視点しか持っていないため、トランザクションの正確な順序を決定することはできません。つまり、トランザクションが他のトランザクションの前に到着したのか、それとも後に到着したのかを判別することはできません。
取引の順序が重要なため、ブロックチェーンネットワークは「スペシャライズドな方法」と呼ばれる専門の方法を使用しています。コンセンサスアルゴリズムノードが同期し、トランザクションの順序を同じに処理するためには、ネットワーク全体で取引の順序を決定することはできませんが、合意メカニズムによりすべてのノードが同じ順序で合意することができます。これにより、ネットワークは一つの統合されたコンピュータとして機能します。
コンセンサス層を超えて、すべてのブロックチェーンに存在する実行層もあります。実行層は、ユーザーが実行したいトランザクションによって形作られています。
トランザクションがコンセンサスによって正常に順序付けられた後、各トランザクションは実行レイヤーの現在の状態に適用される必要があります。もし「状態とは何か?」と疑問に思っているならば、おそらくブロックチェーンがデータベースと比較されることを見たことがあるかもしれません。具体的には、銀行のデータベースに似ていることで、ブロックチェーンは銀行と同様に、全員の残高の記録を維持しています。
もし、「S」と呼ばれる状態に$100を持っていて、他の誰かに$10を送りたい場合、次の状態「S+1」での残高は$90になります。1つの状態から別の状態に移動するための取引を適用するプロセスを、私たちはSTF(State Transition Function)と呼んでいます。
ビットコインでは、STFは主にバランスの変更に限定されているため、比較的簡単です。ただし、ビットコインとは異なり、イーサリアムはコードを実行できる実行レイヤーを備えた完全にプログラム可能なブロックチェーンであるため、イーサリアムのSTFははるかに複雑です。
ブロックチェーンには、検証する必要があるか、または検証できる3つの基本的なコンポーネントがあります:
これがわかりにくいまたは不明確に見える場合は心配しないでください。これらの側面をそれぞれ詳しく説明します。まずはブロックチェーンの状態を検証する方法から始めましょう!
イーサリアムの“状態”とは、ブロックチェーンにおけるあらゆる時点でのデータセットを指します。これには、口座の残高(コントラクト口座と外部所有口座、またはEOA)、スマートコントラクトコード、コントラクトのストレージなどが含まれます。イーサリアムは状態ベースのマシンであり、イーサリアム仮想マシン(EVM)で処理されるトランザクションが以前の状態を変更し、新しい状態を生み出します。
各Ethereumブロックには、そのブロックの後のネットワークの現在の状態を要約する値であるstateRootが含まれています。この値は、64文字のハッシュで構成されるEthereumの全体的な状態の簡潔な表現です。
新しいトランザクションが状態を変更するたびに、次のブロックに記録されるstateRootがそれに応じて更新されます。この値を計算するために、イーサリアムのバリデータはKeccakハッシュ関数と呼ばれるデータ構造の組み合わせを使用します。マークルツリー状態の異なる部分を整理してまとめるために。
ハッシュ関数は、入力を固定長の出力に変換する一方向関数です。Ethereumでは、ハッシュ関数が使用されます。ケチャックデータの要約を生成するために使用され、入力の種類の指紋のような役割を果たします。ハッシュ関数には4つの基本的な特性があります。
これらの特性のおかげで、Ethereumのバリデータは、各ブロックのSTF(ステートトランジション関数)を実行し、ブロック内のすべてのトランザクションを実行して状態に適用し、その後STF後の状態とブロックに示されている状態が一致するかどうかを検証することができます。このプロセスにより、ブロックの提案者が正直に行動したことが保証され、これはバリデータの主要な責任の一つです。
しかし、イーサリアムのバリデーターは、状態全体を直接ハッシュ化してその概要を見つけることはありません。ハッシュ関数の一方向の性質により、ハッシュを再現する唯一の方法は状態全体を所有することであるため、状態を直接ハッシュすると検証可能性がなくなります。
イーサリアムの状態はテラバイトのサイズであるため、電話やパーソナルコンピュータなどの日常的なデバイスに完全な状態を保存することは現実的ではありません。そのため、イーサリアムはMerkleツリー構造を使用してstateRootを計算し、状態の検証可能性をできるだけ保持しています。
A マークルツリー暗号化されたデータ構造で、データの整合性と正確性を安全かつ効率的に検証するために使用されます。Merkleツリーはハッシュ関数に基づいて構築され、データセットのハッシュを階層的に整理し、このデータの整合性と正確性を検証することを可能にします。このツリー構造には、3種類のノードが含まれています。
そのような木を構築する方法が気になる場合は、たった2つの簡単な手順が関与しています。
木の頂上で得られた最終ハッシュはMerkleルートと呼ばれます。Merkleルートは全体の木の暗号的要約を表し、データの整合性を安全に検証することができます。
マークル証明は、特定のデータを効率的に検証するために、ブロックヘッダーに格納されているマークルルートへのパスを作成するハッシュ値のシリーズを提供することによって、検証者がデータの正当性を確認するための中間ハッシュ値の連鎖を提供します(葉ノード)。この中間ハッシュ値の連鎖により、検証者は全体の状態をハッシュ化する必要なく、データの真正性を確認できます。
特定のデータポイントから始めて、検証者はそれをマークルプルーフで提供された各“兄弟”ハッシュと組み合わせ、木の上に段階的にハッシュを行います。このプロセスは単一のハッシュが生成されるまで続きます。この計算されたハッシュが格納されているマークルルートと一致する場合、データは有効と見なされます。そうでない場合、検証者はデータが主張されている状態に対応していないと判断できます。
RPCからデータ#4を受け取り、メルクルプルーフを使用してその正当性を検証したいとしましょう。これを行うには、RPCはメルクルルートに到達するために必要なパスに沿ってハッシュ値のセットを提供します。データ4の場合、これらの兄弟ハッシュにはハッシュ#3、ハッシュ#12、およびハッシュ#5678が含まれます。
計算されたMerkle Rootがブロック内の状態ルートと一致する場合、データ#4がこの状態内で確かに有効であることを確認します。一致しない場合、データが主張された状態に属していないことを示し、潜在的な改ざんを示します。見ての通り、すべてのデータのハッシュを提供することなく、またはVerifierに完全なMerkle Treeを再構築することを要求することなく、Proverはデータ#4が状態に存在し、その旅の間に変更されていないことを証明することができます-たった3つのハッシュを使用して。これがMerkle Proofが効率的とされる主な理由です。
メルクルツリーは、イーサリアムのような大規模なブロックチェーンシステムにおいて、確実で効率的なデータ検証を提供することは間違いありませんが、それでも十分に効率的でしょうか? これに答えるためには、メルクルツリーのパフォーマンスとサイズがプロバーバーの関係にどのような影響を与えるかを分析する必要があります。
その影響をよりよく理解するために、例を使って説明しましょう。枝分かれ係数は、木の各ノードから出てくる枝の数を決定します。
イーサリアムブロックチェーンが成長するにつれて、新しいトランザクションや契約、ユーザーのやり取りがデータセットに追加されるたびに、Merkle Treeも拡大する必要があります。この成長は、木のサイズだけでなく、証明のサイズや検証時間にも影響を与えます。
要約すると、マークルツリーは効率性を提供しますが、イーサリアムのデータセットの持続的な成長に対する最適な解決策には及びません。この理由から、The Vergeフェーズ中に、イーサリアムはより効率的な構造である「ゲート」でマークルツリーを置き換えることを目指しています。Verkle Trees. Verkle Treesは、証明のサイズを小さくする可能性がありますが、同じレベルのセキュリティを維持しながら、検証プロセスをProverとVerifierの両方にとって持続可能でスケーラブルにすることができます。
Vergeは、検証性を向上させ、ブロックチェーンの分散構造を強化し、ネットワークのセキュリティを高めることを目的としたEthereumのロードマップのマイルストーンとして開発されました。 Ethereumネットワークの主要な目標の1つは、誰でも簡単にバリデータを実行してチェーンを検証できるようにすることで、参加が中心化せずに誰でも開かれた構造を作成することです。この検証プロセスのアクセシビリティは、ブロックチェーンを中央集権的なシステムと区別する主要な特徴の1つです。中央集権的なシステムでは検証機能を提供しないため、ブロックチェーンの正確性は完全にユーザーの手に委ねられます。しかし、この保証を維持するには、バリデータを誰でもアクセスできるようにする必要があります。現在のシステムでは、ストレージと計算要件の制限により、この課題に対処することができません。
The Mergeを使用したProof-of-Stakeのコンセンサスモデルに移行して以来、イーサリアムのバリデータは2つの主な責任を持っています:
第2の責任を果たすために、バリデータはブロックの前の状態にアクセスする必要があります。これにより、彼らはブロックのトランザクションを実行し、その後の状態を導くことができます。ただし、この要件はバリデータに重い負担を課しており、彼らは大量のストレージ要件を扱う必要があります。イーサリアムは実現可能であり、ストレージコストも世界的に低下してきていますが、問題はコストではなく、バリデータ向けの特殊なハードウェアへの依存性にあります。Vergeは、モバイル電話やブラウザウォレット、さらにはスマートウォッチなどのストレージが制限されたデバイスでも完全な検証が行えるインフラストラクチャを作成することで、この課題を克服することを目指しています。これにより、バリデータはこれらのデバイス上で実行することができます。
このプロセスの重要な部分は、Verkle Treesへの移行です。最初に、VergeはEthereumのMerkle Tree構造をVerkle Treesで置き換えることに重点を置いていました。Verkle Treesを採用する主な理由は、Merkle TreesがEthereumの検証性に重大な障害を引き起こすためです。Merkle Treesとその証明は通常のシナリオでは効率的に機能することができますが、最悪のシナリオでは性能が劇的に低下します。
Vitalikによる計算によると、平均的な証明サイズは約4 KBで、管理可能な範囲内に収まっていると思われます。しかし、最悪の場合、証明サイズは330 MBに膨らむことがあります。はい、あなたが正しく読んだ通り-330 MBです。
最悪の場合におけるEthereumのMerkle Treesの極端な非効率性は、2つの主な理由によるものです:
証明書のサイズは、分岐係数に比例します。分岐係数を減らすと、証明書のサイズが小さくなります。これらの問題に対処し、最悪のシナリオを改善するために、イーサリアムはヘキサリーツリーからバイナリーマークルツリーに切り替え、コントラクトコードをマークル化することができます。イーサリアムの分岐係数が16から2に減少し、コントラクトコードもマークル化された場合、最大証明書サイズは10 MBに縮小できます。これは重要な改善ですが、このコストは1つのデータを検証するために適用されることに注意することが重要です。単純なトランザクションで複数のデータにアクセスする場合、より大きな証明書が必要になります。ブロックあたりのトランザクション数とイーサリアムの継続的な成長状況を考慮すると、この解決策は改善されましたが、まだ完全に実現可能ではありません。
これらの理由から、Ethereumコミュニティは問題に対処するために2つの異なる解決策を提案しています:
Verkle Treesとは、その名前が示すように、Merkle Treesに似た木構造です。ただし、最も重要な違いは、検証プロセス中に提供する効率にあります。Merkle Treesでは、1つの枝に16個のデータが含まれていて、そのうちの1つだけを検証したい場合、他の15個をカバーするハッシュチェーンも提供する必要があります。これは検証の計算負荷を大幅に増加させ、大きな証明サイズをもたらします。
これに対し、Verkle Treesは、「楕円曲線ベースのベクトルコミットメント」として知られる専門の構造を利用しています。より具体的には、内積引数(IPA)ベースのベクトルコミットメントです。ベクトルとは、基本的に特定の順序で整理されたデータ要素のリストです。 Ethereumの状態は、ベクトルと考えることができます。つまり、多数のデータ要素が特定の順序で格納されており、各要素が重要である構造です。この状態には、アドレス、契約コード、およびストレージ情報など、さまざまなデータコンポーネントが含まれており、これらの要素の順序がアクセスと検証に重要な役割を果たしています。
ベクトルコミットメントは、データセット内のデータ要素を証明および検証するために使用される暗号化手法です。これらの手法により、データセット内の各要素の存在および順序の両方を同時に検証することが可能です。例えば、Merkle Treesで使用されるMerkle Proofsもベクトルコミットメントの形態と考えることができます。Merkle Treesは要素を検証するためにすべての関連するハッシュチェーンを必要としますが、その構造自体がベクトルのすべての要素が特定の順序で接続されていることを証明します。
マークルツリーとは異なり、Verkleツリーは楕円曲線ベースのベクトルコミットメントを使用し、2つの主要な利点を提供します:
楕円曲線ベースのベクトルコミットメントのこれらの特徴は、検証に必要なデータ量を著しく削減し、Verkle Treesが最悪の場合でも小さな一定サイズの証明を生成できるようにします。これにより、データオーバーヘッドと検証時間が最小限に抑えられ、Ethereumのような大規模ネットワークの効率が向上します。その結果、Verkle Treesでの楕円曲線ベースのベクトルコミットメントの使用により、Ethereumの拡大する状態をより管理しやすく効率的に処理できるようになります。
すべてのイノベーション同様、Verkle Treesには制限があります。その主な欠点の1つは、楕円曲線暗号に依存していることで、これは量子コンピュータに脆弱です。量子コンピュータは古典的な方法よりもはるかに大きな計算能力を持っており、楕円曲線に基づく暗号プロトコルには重大な脅威をもたらします。量子アルゴリズムは、これらの暗号システムを潰したり弱めたりする可能性があり、Verkle Treesの長期的なセキュリティについて懸念が高まっています。
このため、Verkle Treesは無状態への有望な解決策を提供していますが、それが究極の修正ではないことに注意が必要です。ただし、Dankrad Feistなどの人物は、量子耐性暗号をEthereumに統合する際には注意深い検討が必要であると強調していますが、Ethereumのブロブに使用されているKZGコミットメントも量子耐性ではないことに留意する価值があります。したがって、Verkle Treesは暫定的な解決策として機能し、ネットワークにより堅牢な代替手段を開発するための追加時間を提供できます。
Verkle Treesは、Merkle Treesと比較して証明サイズが小さく、効率的な検証プロセスを提供し、Ethereumの急速に成長する状態を管理しやすくしています。楕円曲線ベースのベクトルコミットメントにより、大規模な証明をかなり少ないデータで生成できます。ただし、印象的な利点にもかかわらず、Verkle Treesは量子コンピューターの脆弱性を抱えており、一時的な解決策に過ぎません。EthereumコミュニティはVerkle Treesを時間を稼ぐための短期的なツールと見なしていますが、長期的な焦点は量子耐性ソリューションへの移行にあります。これが、STARK ProofsとBinary Merkle Treesが将来のより堅牢な検証インフラを構築するための強力な代替手段となります。
イーサリアムの状態検証プロセスでは、バイナリMerkleツリーを使用することでMerkleツリーの枝分かれ係数を(16から2に)削減できます。この変更は証明サイズを削減し、検証プロセスをより効率的にするための重要なステップです。ただし、最悪の場合でも、証明サイズは依然として10 MBに達する可能性があり、これはかなりの量です。ここでSTARKプルーフが登場し、これらの大きなバイナリMerkleプルーフを100-300 kBにまで圧縮します。
この最適化は、特に軽量クライアントまたはハードウェアが限られているデバイスでバリデータを運用する制約を考慮する場合に特に重要です、特に平均的なグローバルモバイルのダウンロードおよびアップロード速度がそれぞれ約7.625 MB/sおよび1.5 MB/sであると考えると。ユーザーは、完全な状態にアクセスする必要なしに、小さな携帯用の証拠でトランザクションを検証でき、バリデータは完全な状態を保存せずにブロック検証タスクを実行できます。
この二重の利益アプローチにより、検証者の帯域幅とストレージ要件が低減され、検証が高速化されます。これらは直接、スケーラビリティに向けたEthereumのビジョンを支援する3つの重要な改善点です。
STARKプルーフは大規模なデータセットを扱うのに優れていますが、小規模なデータを証明する際には効率が低く、特定のシナリオでの適用が妨げられる可能性があります。ステップ数やデータセットが小さいプログラムを扱う場合、STARKの比較的大きな証明サイズのため、それらは実用的でコスト効果が低い場合があります。
ブロックのMerkle Proofには約330,000のハッシュが含まれる可能性があり、最悪の場合、この数は660,000に上昇することがあります。このような場合、STARKプルーフは秒間約200,000のハッシュを処理する必要があります。
ここで、ポセイドンのようなzkフレンドリーなハッシュ関数が登場し、この負荷を軽減するためにSTARKプルーフに特に最適化されています。Poseidonは、SHA256やKeccakなどの従来のハッシュアルゴリズムと比較して、ZKプルーフでよりシームレスに動作するように設計されています。この互換性の主な理由は、従来のハッシュアルゴリズムの動作方法にあります:入力をバイナリデータ(0と1)として処理します。一方、ZKプルーフは、根本的に異なる数学的構造である素数体で機能します。この状況は、人間が日常生活で 10 進法を使用しているのに、コンピューターが 2 進数で動作することに似ています。ビットベースのデータをZK互換形式に変換するには、かなりの計算オーバーヘッドが伴います。ポセイドンは、プライムフィールド内でネイティブに動作することでこの問題を解決し、ZKプルーフとの統合を劇的に加速します。
ただし、ポセイドンは比較的新しいハッシュ関数であるため、SHA256やKeccakなどの従来のハッシュ関数と同じ信頼レベルを確立するためには、より包括的なセキュリティ分析が必要です。このため、gateのような取り組みがあります。ポセイドン暗号解析イニシアチブイーサリアム財団によって発表されたこのテストでは、専門家がポセイドンのセキュリティを厳密にテストし、敵対的な検証に耐えられるようにし、暗号アプリケーションの堅牢な標準になることを確認しています。一方で、SHA256やKeccakなどの古い機能はすでに広範囲にわたるテストを受け、確立されたセキュリティの記録を持っていますが、ZKフレンドリーではなく、STARKプルーフと使用するとパフォーマンスが低下します。
例えば、これらの従来のハッシュ関数を使用したSTARK証明は現在、10,000から30,000のハッシュしか処理できません。幸いにも、STARK技術の進歩により、このスループットは近いうちに100,000から200,000のハッシュに増加する可能性があり、効率が大幅に向上するかもしれません。
STARKプルーフは、大規模なデータセットのスケーラビリティと透明性に優れていますが、小さくて多数のデータ要素を扱う場合には制約があります。これらのシナリオでは、証明されるデータはしばしば小さくなりますが、複数のプルーフが必要となる点は変わりません。例としては、次のようなものがあります:
このようなユースケースでは、STARKプルーフはほとんど利点を提供しません。STARKは、名前の中の「S」によって強調されるように、大規模なデータセットに適していますが、小規模なデータシナリオでは苦労します。一方、SNARKは、名前の中の「S」によって強調されるように、簡潔さを目指して設計されており、プルーフのサイズを最小限に抑えることに焦点を当てており、帯域幅やストレージの制約がある環境で明確な利点を提供しています。
STARKの証明は通常40〜50 KBのサイズで、SNARKの証明の175倍ほど大きいです。SNARKの証明はわずか288バイトです。このサイズの違いは、検証時間とネットワークコストの両方を増加させます。STARKの証明が大きい主な理由は、スケーラビリティを確保するための透明性と多項式コミットメントへの依存ですが、これにより小規模データのシナリオでの性能コストが発生します。このような場合、Merkle Proofのような速くてスペース効率の良い方法がより実用的かもしれません。Merkle Proofは計算コストが低く、迅速な更新が可能であり、これらの状況に適しています。
それにもかかわらず、STARKの証明は、その量子セキュリティのために、イーサリアムの状態レスの未来において重要なままです。
アルゴリズム | プルーフサイズ | セキュリティ 仮定 | 最悪の場合 プロバーの遅延 |
Verkle Trees | ~100 - 2,000 kB | 楕円曲線 (量子耐性なし) | |
STARK + 保守的なハッシュ関数 | ~100 - 300 kB | 保守的なハッシュ関数 | > 10秒 |
STARK + 比較的新しいハッシュ関数 | ~100 - 300 kB | 比較的新しく、テストされていないハッシュ関数 | 1-2s |
格子ベースのMerkle木 | Verkle Trees > x > STARKs | リングの短整数解 (RSIS) 問題 | - |
表にまとめられたように、Ethereumには選択肢として4つの潜在的な道があります:
ただし、ハッシングに依存しないVerkle Treesは、Merkle Treesよりもはるかに証明性が高いことに注意することが重要です。
ここまで説明してきたことはすべて、バリデーターが以前の状態を保存する必要性をなくすことを中心に展開し、バリデーターはある状態から次の状態に移行するために使用します。目標は、バリデーターがテラバイト単位の状態データを維持することなく職務を遂行できる、より分散化された環境を作ることです。これまで述べてきた解決策を用いても、バリデーターは、ブロックに含まれる証人を通じて実行に必要なすべてのデータを受け取るため、状態全体を保存する必要はありません。ただし、次の状態に遷移し、それによってブロックの上でstateRootを検証するには、バリデーターはSTFを自分で実行する必要があります。この要件は、イーサリアムのパーミッションレスな性質と分散化に別の課題をもたらします。
最初は、ザ・バージは、イーサリアムの状態ツリーをマークルツリーからバークルツリーに移行することに焦点を当てたマイルストーンとして構想されました。状態の検証性を向上させることを目的としています。しかし、時間の経過とともに、それは状態の遷移とコンセンサスの検証性を高めることを目指すより広範な取り組みに発展しました。状態、実行、およびコンセンサスのトリオが完全に検証可能な世界では、イーサリアムのバリデータは「真の分散化」を実現するために、インターネット接続を持つほぼどんなデバイスでも動作させることができます。
前述したように、バリデーターはSTF(State Transition Function)と呼ばれる機能を12秒ごとに実行します。この関数は、前の状態とブロックを入力として受け取り、次の状態を出力として生成します。バリデーターは、新しいブロックが提案されるたびにこの関数を実行し、ブロックの上にある状態を表すハッシュ(一般に状態ルートと呼ばれる)が正しいことを確認する必要があります。
バリデータになるための高いシステム要件は、このプロセスを効率的に実行する必要があることから主に生じます。
スマート冷蔵庫をイーサリアムのバリデータに変えたい場合、インストールされたソフトウェアの助けを借りても、2つの大きな障害に直面します。
Light Clientsが以前の状態または最後のブロック全体にアクセスできないことによって引き起こされる問題を解決するために、The Vergeは、提案者が実行を実行し、その後にブロックに証拠を添付すべきであると提案しています。この証拠には、前の状態のルートから次の状態のルートへの遷移とブロックのハッシュが含まれます。これにより、Light Clientsはzk-proofを必要とせずに、たった3つの32バイトハッシュを使用して状態遷移を検証できます。
ただし、この証明はハッシュを通じて機能するため、それが状態の遷移のみを検証すると言うことは不正確です。それどころか、ブロックに添付された証明は複数のことを同時に検証する必要があります:
前のブロックの状態ルート= S、次のブロックの状態ルート= S + 1、ブロックハッシュ= H
先程参照したProver-Verifierの類推において、一般的には両者の間には通常、計算上のバランスがあると言えます。STFを検証可能にするために必要な証明の能力は、複数のことを同時に検証することを可能にするためVerifierにとって重要な利点をもたらしますが、実行の正確性を確認するためのこのような証明を生成することはProverにとっては比較的困難であることを示しています。Ethereumの現在のスピードでは、Ethereumブロックを4秒未満で証明する必要があります。しかし、今日最速のEVM Proverでさえ、平均ブロックを約15秒で証明することしかできません。[1]
それは言うまでもなく、この重大な課題を克服するために取ることができる3つの異なる道があります。
証明生成中、実行プロセスのすべての小さな部分(例:計算ステップまたはデータアクセス)は個別に証明でき、これらの証拠は後で1つの構造に集約できます。正しいメカニズムを使用すると、このアプローチにより、多くの異なるソース(例:数百のGPU)によって、ブロックの証拠が迅速かつ分散型に生成されます。これにより、参加者の幅広いプールが関与し、パフォーマンスが向上し、同時に分散化の目標に貢献します。
このアプローチにより、最悪のケースと平均的なケースの間のギャップを最小限に抑えることができ、より一貫したパフォーマンスを実現することができます。例えば、証明が難しい操作はガスコストが高くなる一方、証明が容易な操作はコストが低くなる可能性があります。さらに、ステートツリーやトランザクションリストなどのEthereumのデータ構造をSTARKに対応した代替品に置き換えることで、証明プロセスをさらに加速することができます。このような変更により、Ethereumはスケーラビリティとセキュリティの目標を達成し、検証可能性のビジョンをより現実的なものとすることができます。
実行証明を可能にするためのイーサリアムの取り組みは、検証可能性の目標を達成するための重要な機会を表しています。ただし、この目標を達成するには、技術的な革新だけでなく、コミュニティ内でのエンジニアリングの取り組みと重要な決定の増加も必要です。レイヤー 1 で実行プロセスを検証可能にするには、分散性を維持しながら、既存のインフラストラクチャと連携しながら、幅広いユーザー ベースがアクセスできるようにすることのバランスを取る必要があります。このバランスを確立すると、実行中に演算を証明するために使用される方法の複雑さが増し、並列証明生成などの進歩の必要性が浮き彫りになります。さらに、これらのテクノロジーのインフラストラクチャ要件 (例:ルックアップテーブル実装および運用化する必要がありますが、これには引き続き実質的な研究と開発が必要です。
一方で、特定のタスクに特化した回路(例:ASIC、FPGA、GPUなど)は、証明生成プロセスを加速させるための大きなポテンシャルを持っています。これらのソリューションは、従来のハードウェアと比較してはるかに高い効率を提供し、実行プロセスを高速化することができます。しかし、Ethereumの第1レイヤーでの分散化目標により、このようなハードウェアが一部のアクターにしか利用できないようになっています。その結果、これらのソリューションは第2レイヤーシステムでより広範囲に使用されることが予想されています。ただし、コミュニティは証明生成のハードウェア要件についても合意しなければなりません。重要な設計課題が浮かび上がります。証明生成はハイエンドのノートパソコンのような消費者向けのハードウェアで動作させるべきでしょうか、それとも産業用インフラが必要でしょうか?その答えがEthereum全体のアーキテクチャを形作ります。第2レイヤーソリューションの積極的な最適化を可能にする一方で、第1レイヤーに対してはより保守的なアプローチを求めることになります。
最後に、実行証明の実装は、直接的にEthereumの他のロードマップの目標と結びついています。有効性の証明の導入は、状態のないといった概念のみならず、ソロステーキングなどの領域をよりアクセスしやすくするだけでなく、Ethereumの分散化を向上させます。目標は、最も低スペックのデバイスでもステーキングを可能にすることです。さらに、計算の難しさと証明に基づいたEVM上のガスコストの再構築は、平均ケースと最悪ケースのシナリオのギャップを最小限に抑えることができます。しかし、このような変更は現行のシステムとの後方互換性を壊す可能性があり、開発者にコードの書き直しを余儀なくさせるかもしれません。このため、実行証明の実装は単なる技術的な課題ではなく、Ethereumの長期的な価値を守るために設計された旅であると言えます。
イーサリアムのコンセンサスメカニズムは、分散化とアクセシビリティを維持しながら、検証目標を達成するために一意のバランスを確立しようとしています。このフレームワークでは、確率的および決定論的なコンセンサス手法がそれぞれ異なる利点と課題を提供します。
確率的合意は、ゴシップ通信モデルに基づいて構築されています。このモデルでは、ネットワークを表すすべてのノードと直接通信する代わりに、ノードはランダムに選択された64または128のノードと情報を共有します。ノードのチェーン選択は、この制限された情報に基づいて行われ、エラーの可能性を導入します。しかし、時間の経過とともに、ブロックチェーンが進行するにつれて、これらの選択は正しいチェーンに向かって収束することが期待されています。エラー率は0%です。
確率的構造の利点の 1 つは、各ノードがチェーン ビューを個別のメッセージとしてブロードキャストしないため、通信のオーバーヘッドが削減されることです。その結果、このような構造は、システム要件が低く、はるかにパーミッションレスで分散型のノードで動作することができます。対照的に、決定論的コンセンサスは、1対すべてのコミュニケーションモデルを通じて機能します。ここで、ノードは、そのチェーンビューを他のすべてのノードに投票として送信します。この方法では、メッセージの強度が高くなり、ノード数が増えると、システムが最終的に限界に達する可能性があります。しかし、決定論的コンセンサスの最大の利点は、具体的な投票が利用できることであり、どのノードがどのフォークに投票したかを正確に知ることができます。これにより、高速で決定的なチェーンのファイナリティが保証され、ブロックの順序が変更されないことが保証され、検証可能になります。
分散化と許可なしの構造を維持しながら検証可能なコンセンサスメカニズムを提供するために、イーサリアムはスロットとエポックのバランスを取っています。スロットは12秒間隔を表し、ブロックの生成を担当するバリデータが責任を持つ基本的な単位です。スロットレベルで使用される確率的なコンセンサスは、チェーンがより柔軟にかつ分散化して運営できる一方で、明確な順序付けと検証可能性の面で制限があります。
エポックは32スロットからなり、決定論的な合意を導入します。このレベルでは、バリデータはチェーンの順序を確定させるために投票し、確実性を提供し、チェーンを検証可能にします。ただし、エポックレベルで具体的な投票による検証可能性を提供する一方で、確率的な構造のためにエポック内での完全な検証可能性は提供できません。このギャップを埋め、エポック内の確率的な構造を強化するために、EthereumはSync委員会として知られる解決策を開発しました。
Syncコミティは、Altairアップグレードで導入されたメカニズムであり、Ethereumの確率的コンセンサスの制限を克服し、軽量クライアントのためのチェーンの検証性を向上させるためのものです。このコミティは、256個のエポック(約27時間)にわたって務める512人の無作為に選ばれたバリデータで構成されています。これらのバリデータは、チェーンのヘッドを表す署名を生成し、軽量クライアントが過去のチェーンデータをダウンロードする必要なく、チェーンの妥当性を検証できるようにします。Syncコミティの動作は、次のように要約することができます:
ただし、シンク委員会はいくつかの分野で批判の対象となっています。特に、選択されたバリデータが意図的にプロトコルに逆らって行動しても、そのような悪質な行為に対してバリデータを削減する仕組みがプロトコルに欠けているという指摘があります。その結果、多くの人々がシンク委員会をセキュリティリスクと見なし、完全にライトクライアントプロトコルとして分類することを控えています。それでも、シンク委員会のセキュリティは数学的に証明されており、詳細は以下で確認できます。Sync Committee Slashingsに関するこの記事.
プロトコルにスラッシングメカニズムが存在しないのは設計の選択ではなく、確率的合意の性質から生じる必要性です。確率的合意では、バリデータが観察するものについて絶対的な保証を提供しません。たとえ多数のバリデータが特定のフォークをより重いものと報告したとしても、別のフォークをより重いと観察する例外的なバリデータが存在する可能性があります。この不確実性は、悪意のある意図を証明することを困難にし、したがって、不正行為を罰することを不可能にします。
この文脈では、同期委員会を不安全というよりも、それを非効率な解決策と表現する方が正確です。問題は、同期委員会の機械的な設計や運用に起因するのではなく、確率的コンセンサスの本質的な性質に由来しています。確率的コンセンサスはノードが観測する内容について確定的な保証を提供することができないため、同期委員会はそのようなモデル内で設計されることのできる最良の解決策の一つです。しかしながら、これは確率的コンセンサスの弱点を排除するものではなく、チェーンの最終性を保証する際の確率的コンセンサスの弱点を排除するものではありません。問題はメカニズムではなく、イーサリアムの現在のコンセンサス構造の内部にあります。
これらの制約により、イーサリアムエコシステムでは、合意メカニズムを再設計し、より短い期間で確定的な最終性を提供する解決策を実装するための取り組みが続けられています。gateなどの提案があります。Orbit-SSFと3SFのイーサリアムのコンセンサス構造を根本から再構築し、確率的なコンセンサスを置き換えるより効果的なシステムを作り出すことを目指しています。これらのアプローチは、チェーンの最終性を短縮するだけでなく、より効率的で検証可能なネットワーク構造を提供することを目指しています。イーサリアムコミュニティは、将来の実装に向けてこれらの提案を積極的に開発および準備しています。
Vergeは、Ethereumの現在と将来のコンセンサスメカニズムを、それらを完全に置き換えるのではなく、zk-proofテクノロジーによってより検証可能にすることを目指しています。このアプローチは、Ethereumのコンセンサスプロセスを最新化する一方で、分散化とセキュリティの核心原則を維持することを目指しています。 zkテクノロジーを使用して、チェーンのすべての歴史的および現在のコンセンサスプロセスを最適化することは、Ethereumの長期的なスケーラビリティと効率性の目標の達成において重要な役割を果たしています。 Ethereumのコンセンサスレイヤーで使用される基本的な操作は、この技術的な変革において非常に重要です。これらの操作とそれらが直面する課題について、より詳しく見てみましょう。
現在のコンセンサスレイヤーで使用されているECADD、Pairing、およびSHA256操作は、イーサリアムの検証可能性の目標において重要な役割を果たしています。しかし、彼らのzkフレンドリーさの欠如は、これらの目標を達成するための道のりに重大な課題をもたらします。ECADD操作は、高い数のバリデータの投票による負荷を作り出し、Pairing操作は数が少なくてもzkプルーフで証明するには数千倍も費用がかかります。さらに、SHA256ハッシュ関数のzk非フレンドリーさは、ビーコンチェーンの状態遷移を証明することを非常に困難にします。これらの問題は、イーサリアムの既存のインフラをゼロ知識技術に合わせるために包括的な変革が必要であることを明確に示しています。
2024年11月12日、ジャスティン・ドレイク氏はDevconでのプレゼンテーションで、イーサリアムのコンセンサスレイヤーを根本的かつ包括的に変革することを目的とした「ビームチェーン」と呼ばれる提案を紹介しました。ビーコンチェーンは、5年近くにわたってイーサリアムのネットワークの中核を担ってきました。しかし、この間、ビーコンチェーンに大きな構造変化はありませんでした。対照的に、技術の進歩は急速に進歩し、ビーコンチェーンの静的な性質をはるかに超えています。
Justin Drakeのプレゼンテーションでは、イーサリアムはMEVの理解、SNARK技術の突破、技術的なミスの反省など、これらの5年間で重要な教訓を学んできました。これらの新しい学びに基づく設計は、ブロックプロダクション、ステーキング、暗号化の3つの主要な柱に分類されます。以下のビジュアルは、これらの設計と提案されたロードマップを要約しています。
このセクションでは、詳細にThe VergeのConsensus、State、Executionステップを検討しました。このプロセス中に強調された最も顕著な問題の1つは、EthereumのBeacon ChainでのSHA256ハッシュ関数の使用です。SHA256はネットワークのセキュリティとトランザクションの処理を確保する上で中心的な役割を果たしていますが、zk技術との互換性のなさから、Ethereumの検証可能性の目標達成には重大な障害となっています。高い計算コストとzk技術との非互換性は、Ethereumの将来の開発で必ず解決されなければならない重要な問題です。
Justin Drakeのロードマップは、彼のDevconトークで発表され、Beacon ChainのSHA256をPoseidonなどのzk-friendlyハッシュ関数で置き換えることを予想しています。この提案は、Ethereumのコンセンサスレイヤーを現代化し、より検証可能で効率的で、zk-proofテクノロジーと一致するようにすることを目指しています。
この文脈では、イーサリアムはzkに不向きなハッシュ関数の課題に直面しているだけでなく、長期的なセキュリティのためにコンセンサスレイヤーで使用されるデジタル署名を再評価する必要があることがわかります。量子コンピューティングの進歩に伴い、現在使用されているECDSAなどのデジタル署名アルゴリズムは重大な脅威に直面する可能性があります。NISTが発行したガイドラインに記載されているように、112ビットのセキュリティレベルのECDSAの亜種は2030年までに廃止され、2035年までに完全に禁止されます。このため、イーサリアムや同様のネットワークは、将来的には量子セキュア署名などのより回復力のある代替手段に移行する必要があります。
この時点で、ハッシュベースの署名が量子耐性のあるソリューションとして現れ、ネットワークのセキュリティと検証可能性の目標をサポートする上で重要な役割を果たすことができます。このニーズに対処することは、Beacon Chainの検証可能性を確保するための第2の主要な障害も取り除きます:BLS署名。イーサリアムが量子セキュリティを確保するために取ることのできる最も重要なステップの一つは、ハッシュベースの署名やハッシュベースのSNARKなど、ポスト量子ソリューションの採用です。
Justin Drake が強調したように彼のDevconプレゼンテーションハッシュ関数は、事前イメージ耐性に依存しているため、量子コンピュータに対して固有に耐性を持っています。これにより、ハッシュ関数は現代の暗号の基本的な構成要素の1つとなっています。この特性により、量子コンピュータでも特定のハッシュから元の入力を効率的に逆算することはできず、セキュリティが保たれます。ハッシュベースの署名システムは、バリデータやアテスターがハッシュ関数に完全に基づいて署名を生成できるようにし、ポスト量子セキュリティを確保しながらネットワーク全体でより高い検証性を提供します。特に、SNARKフレンドリーなハッシュ関数が使用される場合、これはネットワークのセキュリティを向上させるだけでなく、Ethereumの長期的なセキュリティインフラをより堅牢で将来に対応できるものにします。
このシステムは、ハッシュベースの署名とハッシュベースのSNARKs(STARKのような証明)を組み合わせて、集約可能な署名スキームを作成します。 集約可能な署名は、何千もの署名を単一の構造体に圧縮し、わずか数百キロバイトの証拠にまで減少させます。 この圧縮により、ネットワーク上のデータ負荷が大幅に減少し、検証プロセスが大幅に加速します。 たとえば、イーサリアムの単一のスロットで生成される何千もの検証者の署名は、単一の集約署名で表すことができ、ストレージスペースと計算能力の両方を節約します。
しかし、このスキームの最も注目すべき特徴は、その無限に再帰的な集約であることです。つまり、1つの署名グループはさらに別のグループの下で組み合わされ、このプロセスはチェーン全体にわたって続けることができます。このメカニズムと将来の技術の進歩を考慮すると、BLSでは現在実現不可能な可能性を開くと言っても過言ではありません。
イーサリアムの検証可能性への道は、ブロックチェーン技術における根本的な変化を表しています。Vergeイニシアチブは、状態の検証のためのVerkle TreesやスケーラブルなトランジションのためのSTARKプルーフを通じて、コアの非効率性に対処しています。
最も野心的な提案の1つは、Beam Chainです。これはEthereumのコンセンサスレイヤーの包括的な再設計です。ビーコンチェーンの制限を解決し、zkフレンドリーな代替案を取り入れることにより、このアプローチはEthereumのスケーラビリティを向上させると同時に、分散化とアクセシビリティの核心原則を保持することを目指しています。ただし、この移行は、計算要件と許可なしで包括的なネットワークを維持するというEthereumの目標のバランスを取る上での課題も浮き彫りにしています。
NISTが現在の楕円曲線暗号を2035年までに段階的に廃止する計画を立てているため、Ethereumはハッシュベースの署名やPoseidonなどの量子耐性のある解決策を採用する必要があります。これらの解決策は、独自の効率のトレードオフを提供します。
EthereumのロードマップでのSTARKの使用は、スケーラビリティと検証性をさらに強調しています。STARKは透明性と量子耐性のある証明を提供する点で優れていますが、その統合にはプルーバ側の計算コストと小規模データの非効率性に関する課題があります。これらのハードルを克服することが必要であり、Ethereumのステートレスネスと効率的なブロック検証のビジョンを完全に実現するために、ネットワークが増加する需要に対して堅牢性を維持する必要があります。
これらの進展にもかかわらず、重要な課題は残っています。イーサリアムは、zkフレンドリー性、コンセンサスのスケーラビリティ、および量子耐性暗号の統合の複雑さなどの問題に対処する必要があります。さらに、既存のインフラの後方互換性は、開発者やユーザーへの影響を防ぐために慎重なエンジニアリングソリューションが必要な実用的なハードルを提起しています。
イーサリアムを際立たせているのは、その技術革新だけでなく、ブロックチェーンの最も困難な問題のいくつかを解決するための反復的なアプローチです。Beam Chain、Verkle Trees、STARKプルーフなどの技術が進むべき道は、開発者、研究者、そしてより広範なコミュニティによる共同作業にかかっています。これらの進歩は、一夜にして完璧を達成することではなく、透明で分散型で検証可能なインターネットの基盤を構築することです。
イーサリアムの進化は、Web3時代を形作る上で重要なプレーヤーとしての役割を強調しています。イーサリアムは、実用的なソリューションで今日の課題に取り組むことで、検証可能性、耐量子性、スケーラビリティが例外ではなく標準となる未来に近づいています。
Web3の最大の利点は検証可能性です-ユーザーはシステムが実際にどのように動作するかを検証できます。この機能により、多くの人々が暗号通貨業界内外でweb3をより透明で検証可能なインターネットへの一歩として説明しています。
FacebookやInstagramのようなWeb2プラットフォームでは、アルゴリズムやルールが文書化されていても不透明なままであるのに対し、暗号プロトコルは完全に監査可能に設計されています。それらが共有されていたとしても、プラットフォームが指定されたとおりに動作しているかどうかを検証することができません。これは、暗号とは正反対であり、すべてのプロトコルができるだけ監査可能に設計されているか、少なくともそのように期待されていることを意味しています。
今日は、最近公開されたヴィタリックのセクション「The Verge」を探求しますイーサリアムの将来に関する6部作シリーズ, Ethereumが将来的に検証可能性、持続可能性、およびスケーラビリティを実現するために取る手順を分析すること。 「The Verge」の見出しの下で、ブロックチェーンアーキテクチャをより検証可能にする方法、これらの変更がプロトコルレベルでもたらす革新、およびユーザーにより安全なエコシステムを提供する方法について議論します。さあ始めましょう!
Web2アプリケーションは「ブラックボックス」として機能し、ユーザーは入力とその結果のみを見ることができ、アプリケーションの実際の動作には透明性がありません。一方、暗号通貨プロトコルは通常、ソースコードを公開しているか、少なくとも公開する予定があります。この透明性には2つの目的があります。ユーザーが選択すれば、プロトコルのコードと直接やり取りすることができ、また、システムがどのように動作し、どのようなルールが適用されるかを正確に理解するのに役立ちます。
「できるだけ分散化し、残りを検証します。」
検証可能性は、システムが説明責任を果たし、多くの場合、プロトコルが意図したとおりに機能することを保証します。この原則は、中央集権化を最小限に抑えることの重要性を強調し、しばしば不透明で説明責任のない構造につながり、ユーザーが操作を検証できない場合があることを示しています。代わりに、可能な限り非中央集権化を目指し、非中央集権化が不可能な場合は、残りの要素を検証可能で説明責任を果たすよう努めるべきです。
イーサリアムコミュニティは、この見解に賛同するようです、ロードマップイーサリアムをより検証可能にするためのマイルストーン(「The Verge」と呼ばれる)が含まれています。ただし、「The Verge」に入る前に、ブロックチェーンのどの側面が検証されるべきか、ユーザーの観点から見てどの部分が重要かを理解する必要があります。
ブロックチェーンは実質的にグローバルなクロックとして機能します。約10,000台のコンピュータから成る分散ネットワークでは、トランザクションが起点ノードから他の全ノードに伝播するのにかなりの時間がかかる場合があります。そのため、ネットワーク全体のノードは、各ノードが独自の主観的な視点しか持っていないため、トランザクションの正確な順序を決定することはできません。つまり、トランザクションが他のトランザクションの前に到着したのか、それとも後に到着したのかを判別することはできません。
取引の順序が重要なため、ブロックチェーンネットワークは「スペシャライズドな方法」と呼ばれる専門の方法を使用しています。コンセンサスアルゴリズムノードが同期し、トランザクションの順序を同じに処理するためには、ネットワーク全体で取引の順序を決定することはできませんが、合意メカニズムによりすべてのノードが同じ順序で合意することができます。これにより、ネットワークは一つの統合されたコンピュータとして機能します。
コンセンサス層を超えて、すべてのブロックチェーンに存在する実行層もあります。実行層は、ユーザーが実行したいトランザクションによって形作られています。
トランザクションがコンセンサスによって正常に順序付けられた後、各トランザクションは実行レイヤーの現在の状態に適用される必要があります。もし「状態とは何か?」と疑問に思っているならば、おそらくブロックチェーンがデータベースと比較されることを見たことがあるかもしれません。具体的には、銀行のデータベースに似ていることで、ブロックチェーンは銀行と同様に、全員の残高の記録を維持しています。
もし、「S」と呼ばれる状態に$100を持っていて、他の誰かに$10を送りたい場合、次の状態「S+1」での残高は$90になります。1つの状態から別の状態に移動するための取引を適用するプロセスを、私たちはSTF(State Transition Function)と呼んでいます。
ビットコインでは、STFは主にバランスの変更に限定されているため、比較的簡単です。ただし、ビットコインとは異なり、イーサリアムはコードを実行できる実行レイヤーを備えた完全にプログラム可能なブロックチェーンであるため、イーサリアムのSTFははるかに複雑です。
ブロックチェーンには、検証する必要があるか、または検証できる3つの基本的なコンポーネントがあります:
これがわかりにくいまたは不明確に見える場合は心配しないでください。これらの側面をそれぞれ詳しく説明します。まずはブロックチェーンの状態を検証する方法から始めましょう!
イーサリアムの“状態”とは、ブロックチェーンにおけるあらゆる時点でのデータセットを指します。これには、口座の残高(コントラクト口座と外部所有口座、またはEOA)、スマートコントラクトコード、コントラクトのストレージなどが含まれます。イーサリアムは状態ベースのマシンであり、イーサリアム仮想マシン(EVM)で処理されるトランザクションが以前の状態を変更し、新しい状態を生み出します。
各Ethereumブロックには、そのブロックの後のネットワークの現在の状態を要約する値であるstateRootが含まれています。この値は、64文字のハッシュで構成されるEthereumの全体的な状態の簡潔な表現です。
新しいトランザクションが状態を変更するたびに、次のブロックに記録されるstateRootがそれに応じて更新されます。この値を計算するために、イーサリアムのバリデータはKeccakハッシュ関数と呼ばれるデータ構造の組み合わせを使用します。マークルツリー状態の異なる部分を整理してまとめるために。
ハッシュ関数は、入力を固定長の出力に変換する一方向関数です。Ethereumでは、ハッシュ関数が使用されます。ケチャックデータの要約を生成するために使用され、入力の種類の指紋のような役割を果たします。ハッシュ関数には4つの基本的な特性があります。
これらの特性のおかげで、Ethereumのバリデータは、各ブロックのSTF(ステートトランジション関数)を実行し、ブロック内のすべてのトランザクションを実行して状態に適用し、その後STF後の状態とブロックに示されている状態が一致するかどうかを検証することができます。このプロセスにより、ブロックの提案者が正直に行動したことが保証され、これはバリデータの主要な責任の一つです。
しかし、イーサリアムのバリデーターは、状態全体を直接ハッシュ化してその概要を見つけることはありません。ハッシュ関数の一方向の性質により、ハッシュを再現する唯一の方法は状態全体を所有することであるため、状態を直接ハッシュすると検証可能性がなくなります。
イーサリアムの状態はテラバイトのサイズであるため、電話やパーソナルコンピュータなどの日常的なデバイスに完全な状態を保存することは現実的ではありません。そのため、イーサリアムはMerkleツリー構造を使用してstateRootを計算し、状態の検証可能性をできるだけ保持しています。
A マークルツリー暗号化されたデータ構造で、データの整合性と正確性を安全かつ効率的に検証するために使用されます。Merkleツリーはハッシュ関数に基づいて構築され、データセットのハッシュを階層的に整理し、このデータの整合性と正確性を検証することを可能にします。このツリー構造には、3種類のノードが含まれています。
そのような木を構築する方法が気になる場合は、たった2つの簡単な手順が関与しています。
木の頂上で得られた最終ハッシュはMerkleルートと呼ばれます。Merkleルートは全体の木の暗号的要約を表し、データの整合性を安全に検証することができます。
マークル証明は、特定のデータを効率的に検証するために、ブロックヘッダーに格納されているマークルルートへのパスを作成するハッシュ値のシリーズを提供することによって、検証者がデータの正当性を確認するための中間ハッシュ値の連鎖を提供します(葉ノード)。この中間ハッシュ値の連鎖により、検証者は全体の状態をハッシュ化する必要なく、データの真正性を確認できます。
特定のデータポイントから始めて、検証者はそれをマークルプルーフで提供された各“兄弟”ハッシュと組み合わせ、木の上に段階的にハッシュを行います。このプロセスは単一のハッシュが生成されるまで続きます。この計算されたハッシュが格納されているマークルルートと一致する場合、データは有効と見なされます。そうでない場合、検証者はデータが主張されている状態に対応していないと判断できます。
RPCからデータ#4を受け取り、メルクルプルーフを使用してその正当性を検証したいとしましょう。これを行うには、RPCはメルクルルートに到達するために必要なパスに沿ってハッシュ値のセットを提供します。データ4の場合、これらの兄弟ハッシュにはハッシュ#3、ハッシュ#12、およびハッシュ#5678が含まれます。
計算されたMerkle Rootがブロック内の状態ルートと一致する場合、データ#4がこの状態内で確かに有効であることを確認します。一致しない場合、データが主張された状態に属していないことを示し、潜在的な改ざんを示します。見ての通り、すべてのデータのハッシュを提供することなく、またはVerifierに完全なMerkle Treeを再構築することを要求することなく、Proverはデータ#4が状態に存在し、その旅の間に変更されていないことを証明することができます-たった3つのハッシュを使用して。これがMerkle Proofが効率的とされる主な理由です。
メルクルツリーは、イーサリアムのような大規模なブロックチェーンシステムにおいて、確実で効率的なデータ検証を提供することは間違いありませんが、それでも十分に効率的でしょうか? これに答えるためには、メルクルツリーのパフォーマンスとサイズがプロバーバーの関係にどのような影響を与えるかを分析する必要があります。
その影響をよりよく理解するために、例を使って説明しましょう。枝分かれ係数は、木の各ノードから出てくる枝の数を決定します。
イーサリアムブロックチェーンが成長するにつれて、新しいトランザクションや契約、ユーザーのやり取りがデータセットに追加されるたびに、Merkle Treeも拡大する必要があります。この成長は、木のサイズだけでなく、証明のサイズや検証時間にも影響を与えます。
要約すると、マークルツリーは効率性を提供しますが、イーサリアムのデータセットの持続的な成長に対する最適な解決策には及びません。この理由から、The Vergeフェーズ中に、イーサリアムはより効率的な構造である「ゲート」でマークルツリーを置き換えることを目指しています。Verkle Trees. Verkle Treesは、証明のサイズを小さくする可能性がありますが、同じレベルのセキュリティを維持しながら、検証プロセスをProverとVerifierの両方にとって持続可能でスケーラブルにすることができます。
Vergeは、検証性を向上させ、ブロックチェーンの分散構造を強化し、ネットワークのセキュリティを高めることを目的としたEthereumのロードマップのマイルストーンとして開発されました。 Ethereumネットワークの主要な目標の1つは、誰でも簡単にバリデータを実行してチェーンを検証できるようにすることで、参加が中心化せずに誰でも開かれた構造を作成することです。この検証プロセスのアクセシビリティは、ブロックチェーンを中央集権的なシステムと区別する主要な特徴の1つです。中央集権的なシステムでは検証機能を提供しないため、ブロックチェーンの正確性は完全にユーザーの手に委ねられます。しかし、この保証を維持するには、バリデータを誰でもアクセスできるようにする必要があります。現在のシステムでは、ストレージと計算要件の制限により、この課題に対処することができません。
The Mergeを使用したProof-of-Stakeのコンセンサスモデルに移行して以来、イーサリアムのバリデータは2つの主な責任を持っています:
第2の責任を果たすために、バリデータはブロックの前の状態にアクセスする必要があります。これにより、彼らはブロックのトランザクションを実行し、その後の状態を導くことができます。ただし、この要件はバリデータに重い負担を課しており、彼らは大量のストレージ要件を扱う必要があります。イーサリアムは実現可能であり、ストレージコストも世界的に低下してきていますが、問題はコストではなく、バリデータ向けの特殊なハードウェアへの依存性にあります。Vergeは、モバイル電話やブラウザウォレット、さらにはスマートウォッチなどのストレージが制限されたデバイスでも完全な検証が行えるインフラストラクチャを作成することで、この課題を克服することを目指しています。これにより、バリデータはこれらのデバイス上で実行することができます。
このプロセスの重要な部分は、Verkle Treesへの移行です。最初に、VergeはEthereumのMerkle Tree構造をVerkle Treesで置き換えることに重点を置いていました。Verkle Treesを採用する主な理由は、Merkle TreesがEthereumの検証性に重大な障害を引き起こすためです。Merkle Treesとその証明は通常のシナリオでは効率的に機能することができますが、最悪のシナリオでは性能が劇的に低下します。
Vitalikによる計算によると、平均的な証明サイズは約4 KBで、管理可能な範囲内に収まっていると思われます。しかし、最悪の場合、証明サイズは330 MBに膨らむことがあります。はい、あなたが正しく読んだ通り-330 MBです。
最悪の場合におけるEthereumのMerkle Treesの極端な非効率性は、2つの主な理由によるものです:
証明書のサイズは、分岐係数に比例します。分岐係数を減らすと、証明書のサイズが小さくなります。これらの問題に対処し、最悪のシナリオを改善するために、イーサリアムはヘキサリーツリーからバイナリーマークルツリーに切り替え、コントラクトコードをマークル化することができます。イーサリアムの分岐係数が16から2に減少し、コントラクトコードもマークル化された場合、最大証明書サイズは10 MBに縮小できます。これは重要な改善ですが、このコストは1つのデータを検証するために適用されることに注意することが重要です。単純なトランザクションで複数のデータにアクセスする場合、より大きな証明書が必要になります。ブロックあたりのトランザクション数とイーサリアムの継続的な成長状況を考慮すると、この解決策は改善されましたが、まだ完全に実現可能ではありません。
これらの理由から、Ethereumコミュニティは問題に対処するために2つの異なる解決策を提案しています:
Verkle Treesとは、その名前が示すように、Merkle Treesに似た木構造です。ただし、最も重要な違いは、検証プロセス中に提供する効率にあります。Merkle Treesでは、1つの枝に16個のデータが含まれていて、そのうちの1つだけを検証したい場合、他の15個をカバーするハッシュチェーンも提供する必要があります。これは検証の計算負荷を大幅に増加させ、大きな証明サイズをもたらします。
これに対し、Verkle Treesは、「楕円曲線ベースのベクトルコミットメント」として知られる専門の構造を利用しています。より具体的には、内積引数(IPA)ベースのベクトルコミットメントです。ベクトルとは、基本的に特定の順序で整理されたデータ要素のリストです。 Ethereumの状態は、ベクトルと考えることができます。つまり、多数のデータ要素が特定の順序で格納されており、各要素が重要である構造です。この状態には、アドレス、契約コード、およびストレージ情報など、さまざまなデータコンポーネントが含まれており、これらの要素の順序がアクセスと検証に重要な役割を果たしています。
ベクトルコミットメントは、データセット内のデータ要素を証明および検証するために使用される暗号化手法です。これらの手法により、データセット内の各要素の存在および順序の両方を同時に検証することが可能です。例えば、Merkle Treesで使用されるMerkle Proofsもベクトルコミットメントの形態と考えることができます。Merkle Treesは要素を検証するためにすべての関連するハッシュチェーンを必要としますが、その構造自体がベクトルのすべての要素が特定の順序で接続されていることを証明します。
マークルツリーとは異なり、Verkleツリーは楕円曲線ベースのベクトルコミットメントを使用し、2つの主要な利点を提供します:
楕円曲線ベースのベクトルコミットメントのこれらの特徴は、検証に必要なデータ量を著しく削減し、Verkle Treesが最悪の場合でも小さな一定サイズの証明を生成できるようにします。これにより、データオーバーヘッドと検証時間が最小限に抑えられ、Ethereumのような大規模ネットワークの効率が向上します。その結果、Verkle Treesでの楕円曲線ベースのベクトルコミットメントの使用により、Ethereumの拡大する状態をより管理しやすく効率的に処理できるようになります。
すべてのイノベーション同様、Verkle Treesには制限があります。その主な欠点の1つは、楕円曲線暗号に依存していることで、これは量子コンピュータに脆弱です。量子コンピュータは古典的な方法よりもはるかに大きな計算能力を持っており、楕円曲線に基づく暗号プロトコルには重大な脅威をもたらします。量子アルゴリズムは、これらの暗号システムを潰したり弱めたりする可能性があり、Verkle Treesの長期的なセキュリティについて懸念が高まっています。
このため、Verkle Treesは無状態への有望な解決策を提供していますが、それが究極の修正ではないことに注意が必要です。ただし、Dankrad Feistなどの人物は、量子耐性暗号をEthereumに統合する際には注意深い検討が必要であると強調していますが、Ethereumのブロブに使用されているKZGコミットメントも量子耐性ではないことに留意する価值があります。したがって、Verkle Treesは暫定的な解決策として機能し、ネットワークにより堅牢な代替手段を開発するための追加時間を提供できます。
Verkle Treesは、Merkle Treesと比較して証明サイズが小さく、効率的な検証プロセスを提供し、Ethereumの急速に成長する状態を管理しやすくしています。楕円曲線ベースのベクトルコミットメントにより、大規模な証明をかなり少ないデータで生成できます。ただし、印象的な利点にもかかわらず、Verkle Treesは量子コンピューターの脆弱性を抱えており、一時的な解決策に過ぎません。EthereumコミュニティはVerkle Treesを時間を稼ぐための短期的なツールと見なしていますが、長期的な焦点は量子耐性ソリューションへの移行にあります。これが、STARK ProofsとBinary Merkle Treesが将来のより堅牢な検証インフラを構築するための強力な代替手段となります。
イーサリアムの状態検証プロセスでは、バイナリMerkleツリーを使用することでMerkleツリーの枝分かれ係数を(16から2に)削減できます。この変更は証明サイズを削減し、検証プロセスをより効率的にするための重要なステップです。ただし、最悪の場合でも、証明サイズは依然として10 MBに達する可能性があり、これはかなりの量です。ここでSTARKプルーフが登場し、これらの大きなバイナリMerkleプルーフを100-300 kBにまで圧縮します。
この最適化は、特に軽量クライアントまたはハードウェアが限られているデバイスでバリデータを運用する制約を考慮する場合に特に重要です、特に平均的なグローバルモバイルのダウンロードおよびアップロード速度がそれぞれ約7.625 MB/sおよび1.5 MB/sであると考えると。ユーザーは、完全な状態にアクセスする必要なしに、小さな携帯用の証拠でトランザクションを検証でき、バリデータは完全な状態を保存せずにブロック検証タスクを実行できます。
この二重の利益アプローチにより、検証者の帯域幅とストレージ要件が低減され、検証が高速化されます。これらは直接、スケーラビリティに向けたEthereumのビジョンを支援する3つの重要な改善点です。
STARKプルーフは大規模なデータセットを扱うのに優れていますが、小規模なデータを証明する際には効率が低く、特定のシナリオでの適用が妨げられる可能性があります。ステップ数やデータセットが小さいプログラムを扱う場合、STARKの比較的大きな証明サイズのため、それらは実用的でコスト効果が低い場合があります。
ブロックのMerkle Proofには約330,000のハッシュが含まれる可能性があり、最悪の場合、この数は660,000に上昇することがあります。このような場合、STARKプルーフは秒間約200,000のハッシュを処理する必要があります。
ここで、ポセイドンのようなzkフレンドリーなハッシュ関数が登場し、この負荷を軽減するためにSTARKプルーフに特に最適化されています。Poseidonは、SHA256やKeccakなどの従来のハッシュアルゴリズムと比較して、ZKプルーフでよりシームレスに動作するように設計されています。この互換性の主な理由は、従来のハッシュアルゴリズムの動作方法にあります:入力をバイナリデータ(0と1)として処理します。一方、ZKプルーフは、根本的に異なる数学的構造である素数体で機能します。この状況は、人間が日常生活で 10 進法を使用しているのに、コンピューターが 2 進数で動作することに似ています。ビットベースのデータをZK互換形式に変換するには、かなりの計算オーバーヘッドが伴います。ポセイドンは、プライムフィールド内でネイティブに動作することでこの問題を解決し、ZKプルーフとの統合を劇的に加速します。
ただし、ポセイドンは比較的新しいハッシュ関数であるため、SHA256やKeccakなどの従来のハッシュ関数と同じ信頼レベルを確立するためには、より包括的なセキュリティ分析が必要です。このため、gateのような取り組みがあります。ポセイドン暗号解析イニシアチブイーサリアム財団によって発表されたこのテストでは、専門家がポセイドンのセキュリティを厳密にテストし、敵対的な検証に耐えられるようにし、暗号アプリケーションの堅牢な標準になることを確認しています。一方で、SHA256やKeccakなどの古い機能はすでに広範囲にわたるテストを受け、確立されたセキュリティの記録を持っていますが、ZKフレンドリーではなく、STARKプルーフと使用するとパフォーマンスが低下します。
例えば、これらの従来のハッシュ関数を使用したSTARK証明は現在、10,000から30,000のハッシュしか処理できません。幸いにも、STARK技術の進歩により、このスループットは近いうちに100,000から200,000のハッシュに増加する可能性があり、効率が大幅に向上するかもしれません。
STARKプルーフは、大規模なデータセットのスケーラビリティと透明性に優れていますが、小さくて多数のデータ要素を扱う場合には制約があります。これらのシナリオでは、証明されるデータはしばしば小さくなりますが、複数のプルーフが必要となる点は変わりません。例としては、次のようなものがあります:
このようなユースケースでは、STARKプルーフはほとんど利点を提供しません。STARKは、名前の中の「S」によって強調されるように、大規模なデータセットに適していますが、小規模なデータシナリオでは苦労します。一方、SNARKは、名前の中の「S」によって強調されるように、簡潔さを目指して設計されており、プルーフのサイズを最小限に抑えることに焦点を当てており、帯域幅やストレージの制約がある環境で明確な利点を提供しています。
STARKの証明は通常40〜50 KBのサイズで、SNARKの証明の175倍ほど大きいです。SNARKの証明はわずか288バイトです。このサイズの違いは、検証時間とネットワークコストの両方を増加させます。STARKの証明が大きい主な理由は、スケーラビリティを確保するための透明性と多項式コミットメントへの依存ですが、これにより小規模データのシナリオでの性能コストが発生します。このような場合、Merkle Proofのような速くてスペース効率の良い方法がより実用的かもしれません。Merkle Proofは計算コストが低く、迅速な更新が可能であり、これらの状況に適しています。
それにもかかわらず、STARKの証明は、その量子セキュリティのために、イーサリアムの状態レスの未来において重要なままです。
アルゴリズム | プルーフサイズ | セキュリティ 仮定 | 最悪の場合 プロバーの遅延 |
Verkle Trees | ~100 - 2,000 kB | 楕円曲線 (量子耐性なし) | |
STARK + 保守的なハッシュ関数 | ~100 - 300 kB | 保守的なハッシュ関数 | > 10秒 |
STARK + 比較的新しいハッシュ関数 | ~100 - 300 kB | 比較的新しく、テストされていないハッシュ関数 | 1-2s |
格子ベースのMerkle木 | Verkle Trees > x > STARKs | リングの短整数解 (RSIS) 問題 | - |
表にまとめられたように、Ethereumには選択肢として4つの潜在的な道があります:
ただし、ハッシングに依存しないVerkle Treesは、Merkle Treesよりもはるかに証明性が高いことに注意することが重要です。
ここまで説明してきたことはすべて、バリデーターが以前の状態を保存する必要性をなくすことを中心に展開し、バリデーターはある状態から次の状態に移行するために使用します。目標は、バリデーターがテラバイト単位の状態データを維持することなく職務を遂行できる、より分散化された環境を作ることです。これまで述べてきた解決策を用いても、バリデーターは、ブロックに含まれる証人を通じて実行に必要なすべてのデータを受け取るため、状態全体を保存する必要はありません。ただし、次の状態に遷移し、それによってブロックの上でstateRootを検証するには、バリデーターはSTFを自分で実行する必要があります。この要件は、イーサリアムのパーミッションレスな性質と分散化に別の課題をもたらします。
最初は、ザ・バージは、イーサリアムの状態ツリーをマークルツリーからバークルツリーに移行することに焦点を当てたマイルストーンとして構想されました。状態の検証性を向上させることを目的としています。しかし、時間の経過とともに、それは状態の遷移とコンセンサスの検証性を高めることを目指すより広範な取り組みに発展しました。状態、実行、およびコンセンサスのトリオが完全に検証可能な世界では、イーサリアムのバリデータは「真の分散化」を実現するために、インターネット接続を持つほぼどんなデバイスでも動作させることができます。
前述したように、バリデーターはSTF(State Transition Function)と呼ばれる機能を12秒ごとに実行します。この関数は、前の状態とブロックを入力として受け取り、次の状態を出力として生成します。バリデーターは、新しいブロックが提案されるたびにこの関数を実行し、ブロックの上にある状態を表すハッシュ(一般に状態ルートと呼ばれる)が正しいことを確認する必要があります。
バリデータになるための高いシステム要件は、このプロセスを効率的に実行する必要があることから主に生じます。
スマート冷蔵庫をイーサリアムのバリデータに変えたい場合、インストールされたソフトウェアの助けを借りても、2つの大きな障害に直面します。
Light Clientsが以前の状態または最後のブロック全体にアクセスできないことによって引き起こされる問題を解決するために、The Vergeは、提案者が実行を実行し、その後にブロックに証拠を添付すべきであると提案しています。この証拠には、前の状態のルートから次の状態のルートへの遷移とブロックのハッシュが含まれます。これにより、Light Clientsはzk-proofを必要とせずに、たった3つの32バイトハッシュを使用して状態遷移を検証できます。
ただし、この証明はハッシュを通じて機能するため、それが状態の遷移のみを検証すると言うことは不正確です。それどころか、ブロックに添付された証明は複数のことを同時に検証する必要があります:
前のブロックの状態ルート= S、次のブロックの状態ルート= S + 1、ブロックハッシュ= H
先程参照したProver-Verifierの類推において、一般的には両者の間には通常、計算上のバランスがあると言えます。STFを検証可能にするために必要な証明の能力は、複数のことを同時に検証することを可能にするためVerifierにとって重要な利点をもたらしますが、実行の正確性を確認するためのこのような証明を生成することはProverにとっては比較的困難であることを示しています。Ethereumの現在のスピードでは、Ethereumブロックを4秒未満で証明する必要があります。しかし、今日最速のEVM Proverでさえ、平均ブロックを約15秒で証明することしかできません。[1]
それは言うまでもなく、この重大な課題を克服するために取ることができる3つの異なる道があります。
証明生成中、実行プロセスのすべての小さな部分(例:計算ステップまたはデータアクセス)は個別に証明でき、これらの証拠は後で1つの構造に集約できます。正しいメカニズムを使用すると、このアプローチにより、多くの異なるソース(例:数百のGPU)によって、ブロックの証拠が迅速かつ分散型に生成されます。これにより、参加者の幅広いプールが関与し、パフォーマンスが向上し、同時に分散化の目標に貢献します。
このアプローチにより、最悪のケースと平均的なケースの間のギャップを最小限に抑えることができ、より一貫したパフォーマンスを実現することができます。例えば、証明が難しい操作はガスコストが高くなる一方、証明が容易な操作はコストが低くなる可能性があります。さらに、ステートツリーやトランザクションリストなどのEthereumのデータ構造をSTARKに対応した代替品に置き換えることで、証明プロセスをさらに加速することができます。このような変更により、Ethereumはスケーラビリティとセキュリティの目標を達成し、検証可能性のビジョンをより現実的なものとすることができます。
実行証明を可能にするためのイーサリアムの取り組みは、検証可能性の目標を達成するための重要な機会を表しています。ただし、この目標を達成するには、技術的な革新だけでなく、コミュニティ内でのエンジニアリングの取り組みと重要な決定の増加も必要です。レイヤー 1 で実行プロセスを検証可能にするには、分散性を維持しながら、既存のインフラストラクチャと連携しながら、幅広いユーザー ベースがアクセスできるようにすることのバランスを取る必要があります。このバランスを確立すると、実行中に演算を証明するために使用される方法の複雑さが増し、並列証明生成などの進歩の必要性が浮き彫りになります。さらに、これらのテクノロジーのインフラストラクチャ要件 (例:ルックアップテーブル実装および運用化する必要がありますが、これには引き続き実質的な研究と開発が必要です。
一方で、特定のタスクに特化した回路(例:ASIC、FPGA、GPUなど)は、証明生成プロセスを加速させるための大きなポテンシャルを持っています。これらのソリューションは、従来のハードウェアと比較してはるかに高い効率を提供し、実行プロセスを高速化することができます。しかし、Ethereumの第1レイヤーでの分散化目標により、このようなハードウェアが一部のアクターにしか利用できないようになっています。その結果、これらのソリューションは第2レイヤーシステムでより広範囲に使用されることが予想されています。ただし、コミュニティは証明生成のハードウェア要件についても合意しなければなりません。重要な設計課題が浮かび上がります。証明生成はハイエンドのノートパソコンのような消費者向けのハードウェアで動作させるべきでしょうか、それとも産業用インフラが必要でしょうか?その答えがEthereum全体のアーキテクチャを形作ります。第2レイヤーソリューションの積極的な最適化を可能にする一方で、第1レイヤーに対してはより保守的なアプローチを求めることになります。
最後に、実行証明の実装は、直接的にEthereumの他のロードマップの目標と結びついています。有効性の証明の導入は、状態のないといった概念のみならず、ソロステーキングなどの領域をよりアクセスしやすくするだけでなく、Ethereumの分散化を向上させます。目標は、最も低スペックのデバイスでもステーキングを可能にすることです。さらに、計算の難しさと証明に基づいたEVM上のガスコストの再構築は、平均ケースと最悪ケースのシナリオのギャップを最小限に抑えることができます。しかし、このような変更は現行のシステムとの後方互換性を壊す可能性があり、開発者にコードの書き直しを余儀なくさせるかもしれません。このため、実行証明の実装は単なる技術的な課題ではなく、Ethereumの長期的な価値を守るために設計された旅であると言えます。
イーサリアムのコンセンサスメカニズムは、分散化とアクセシビリティを維持しながら、検証目標を達成するために一意のバランスを確立しようとしています。このフレームワークでは、確率的および決定論的なコンセンサス手法がそれぞれ異なる利点と課題を提供します。
確率的合意は、ゴシップ通信モデルに基づいて構築されています。このモデルでは、ネットワークを表すすべてのノードと直接通信する代わりに、ノードはランダムに選択された64または128のノードと情報を共有します。ノードのチェーン選択は、この制限された情報に基づいて行われ、エラーの可能性を導入します。しかし、時間の経過とともに、ブロックチェーンが進行するにつれて、これらの選択は正しいチェーンに向かって収束することが期待されています。エラー率は0%です。
確率的構造の利点の 1 つは、各ノードがチェーン ビューを個別のメッセージとしてブロードキャストしないため、通信のオーバーヘッドが削減されることです。その結果、このような構造は、システム要件が低く、はるかにパーミッションレスで分散型のノードで動作することができます。対照的に、決定論的コンセンサスは、1対すべてのコミュニケーションモデルを通じて機能します。ここで、ノードは、そのチェーンビューを他のすべてのノードに投票として送信します。この方法では、メッセージの強度が高くなり、ノード数が増えると、システムが最終的に限界に達する可能性があります。しかし、決定論的コンセンサスの最大の利点は、具体的な投票が利用できることであり、どのノードがどのフォークに投票したかを正確に知ることができます。これにより、高速で決定的なチェーンのファイナリティが保証され、ブロックの順序が変更されないことが保証され、検証可能になります。
分散化と許可なしの構造を維持しながら検証可能なコンセンサスメカニズムを提供するために、イーサリアムはスロットとエポックのバランスを取っています。スロットは12秒間隔を表し、ブロックの生成を担当するバリデータが責任を持つ基本的な単位です。スロットレベルで使用される確率的なコンセンサスは、チェーンがより柔軟にかつ分散化して運営できる一方で、明確な順序付けと検証可能性の面で制限があります。
エポックは32スロットからなり、決定論的な合意を導入します。このレベルでは、バリデータはチェーンの順序を確定させるために投票し、確実性を提供し、チェーンを検証可能にします。ただし、エポックレベルで具体的な投票による検証可能性を提供する一方で、確率的な構造のためにエポック内での完全な検証可能性は提供できません。このギャップを埋め、エポック内の確率的な構造を強化するために、EthereumはSync委員会として知られる解決策を開発しました。
Syncコミティは、Altairアップグレードで導入されたメカニズムであり、Ethereumの確率的コンセンサスの制限を克服し、軽量クライアントのためのチェーンの検証性を向上させるためのものです。このコミティは、256個のエポック(約27時間)にわたって務める512人の無作為に選ばれたバリデータで構成されています。これらのバリデータは、チェーンのヘッドを表す署名を生成し、軽量クライアントが過去のチェーンデータをダウンロードする必要なく、チェーンの妥当性を検証できるようにします。Syncコミティの動作は、次のように要約することができます:
ただし、シンク委員会はいくつかの分野で批判の対象となっています。特に、選択されたバリデータが意図的にプロトコルに逆らって行動しても、そのような悪質な行為に対してバリデータを削減する仕組みがプロトコルに欠けているという指摘があります。その結果、多くの人々がシンク委員会をセキュリティリスクと見なし、完全にライトクライアントプロトコルとして分類することを控えています。それでも、シンク委員会のセキュリティは数学的に証明されており、詳細は以下で確認できます。Sync Committee Slashingsに関するこの記事.
プロトコルにスラッシングメカニズムが存在しないのは設計の選択ではなく、確率的合意の性質から生じる必要性です。確率的合意では、バリデータが観察するものについて絶対的な保証を提供しません。たとえ多数のバリデータが特定のフォークをより重いものと報告したとしても、別のフォークをより重いと観察する例外的なバリデータが存在する可能性があります。この不確実性は、悪意のある意図を証明することを困難にし、したがって、不正行為を罰することを不可能にします。
この文脈では、同期委員会を不安全というよりも、それを非効率な解決策と表現する方が正確です。問題は、同期委員会の機械的な設計や運用に起因するのではなく、確率的コンセンサスの本質的な性質に由来しています。確率的コンセンサスはノードが観測する内容について確定的な保証を提供することができないため、同期委員会はそのようなモデル内で設計されることのできる最良の解決策の一つです。しかしながら、これは確率的コンセンサスの弱点を排除するものではなく、チェーンの最終性を保証する際の確率的コンセンサスの弱点を排除するものではありません。問題はメカニズムではなく、イーサリアムの現在のコンセンサス構造の内部にあります。
これらの制約により、イーサリアムエコシステムでは、合意メカニズムを再設計し、より短い期間で確定的な最終性を提供する解決策を実装するための取り組みが続けられています。gateなどの提案があります。Orbit-SSFと3SFのイーサリアムのコンセンサス構造を根本から再構築し、確率的なコンセンサスを置き換えるより効果的なシステムを作り出すことを目指しています。これらのアプローチは、チェーンの最終性を短縮するだけでなく、より効率的で検証可能なネットワーク構造を提供することを目指しています。イーサリアムコミュニティは、将来の実装に向けてこれらの提案を積極的に開発および準備しています。
Vergeは、Ethereumの現在と将来のコンセンサスメカニズムを、それらを完全に置き換えるのではなく、zk-proofテクノロジーによってより検証可能にすることを目指しています。このアプローチは、Ethereumのコンセンサスプロセスを最新化する一方で、分散化とセキュリティの核心原則を維持することを目指しています。 zkテクノロジーを使用して、チェーンのすべての歴史的および現在のコンセンサスプロセスを最適化することは、Ethereumの長期的なスケーラビリティと効率性の目標の達成において重要な役割を果たしています。 Ethereumのコンセンサスレイヤーで使用される基本的な操作は、この技術的な変革において非常に重要です。これらの操作とそれらが直面する課題について、より詳しく見てみましょう。
現在のコンセンサスレイヤーで使用されているECADD、Pairing、およびSHA256操作は、イーサリアムの検証可能性の目標において重要な役割を果たしています。しかし、彼らのzkフレンドリーさの欠如は、これらの目標を達成するための道のりに重大な課題をもたらします。ECADD操作は、高い数のバリデータの投票による負荷を作り出し、Pairing操作は数が少なくてもzkプルーフで証明するには数千倍も費用がかかります。さらに、SHA256ハッシュ関数のzk非フレンドリーさは、ビーコンチェーンの状態遷移を証明することを非常に困難にします。これらの問題は、イーサリアムの既存のインフラをゼロ知識技術に合わせるために包括的な変革が必要であることを明確に示しています。
2024年11月12日、ジャスティン・ドレイク氏はDevconでのプレゼンテーションで、イーサリアムのコンセンサスレイヤーを根本的かつ包括的に変革することを目的とした「ビームチェーン」と呼ばれる提案を紹介しました。ビーコンチェーンは、5年近くにわたってイーサリアムのネットワークの中核を担ってきました。しかし、この間、ビーコンチェーンに大きな構造変化はありませんでした。対照的に、技術の進歩は急速に進歩し、ビーコンチェーンの静的な性質をはるかに超えています。
Justin Drakeのプレゼンテーションでは、イーサリアムはMEVの理解、SNARK技術の突破、技術的なミスの反省など、これらの5年間で重要な教訓を学んできました。これらの新しい学びに基づく設計は、ブロックプロダクション、ステーキング、暗号化の3つの主要な柱に分類されます。以下のビジュアルは、これらの設計と提案されたロードマップを要約しています。
このセクションでは、詳細にThe VergeのConsensus、State、Executionステップを検討しました。このプロセス中に強調された最も顕著な問題の1つは、EthereumのBeacon ChainでのSHA256ハッシュ関数の使用です。SHA256はネットワークのセキュリティとトランザクションの処理を確保する上で中心的な役割を果たしていますが、zk技術との互換性のなさから、Ethereumの検証可能性の目標達成には重大な障害となっています。高い計算コストとzk技術との非互換性は、Ethereumの将来の開発で必ず解決されなければならない重要な問題です。
Justin Drakeのロードマップは、彼のDevconトークで発表され、Beacon ChainのSHA256をPoseidonなどのzk-friendlyハッシュ関数で置き換えることを予想しています。この提案は、Ethereumのコンセンサスレイヤーを現代化し、より検証可能で効率的で、zk-proofテクノロジーと一致するようにすることを目指しています。
この文脈では、イーサリアムはzkに不向きなハッシュ関数の課題に直面しているだけでなく、長期的なセキュリティのためにコンセンサスレイヤーで使用されるデジタル署名を再評価する必要があることがわかります。量子コンピューティングの進歩に伴い、現在使用されているECDSAなどのデジタル署名アルゴリズムは重大な脅威に直面する可能性があります。NISTが発行したガイドラインに記載されているように、112ビットのセキュリティレベルのECDSAの亜種は2030年までに廃止され、2035年までに完全に禁止されます。このため、イーサリアムや同様のネットワークは、将来的には量子セキュア署名などのより回復力のある代替手段に移行する必要があります。
この時点で、ハッシュベースの署名が量子耐性のあるソリューションとして現れ、ネットワークのセキュリティと検証可能性の目標をサポートする上で重要な役割を果たすことができます。このニーズに対処することは、Beacon Chainの検証可能性を確保するための第2の主要な障害も取り除きます:BLS署名。イーサリアムが量子セキュリティを確保するために取ることのできる最も重要なステップの一つは、ハッシュベースの署名やハッシュベースのSNARKなど、ポスト量子ソリューションの採用です。
Justin Drake が強調したように彼のDevconプレゼンテーションハッシュ関数は、事前イメージ耐性に依存しているため、量子コンピュータに対して固有に耐性を持っています。これにより、ハッシュ関数は現代の暗号の基本的な構成要素の1つとなっています。この特性により、量子コンピュータでも特定のハッシュから元の入力を効率的に逆算することはできず、セキュリティが保たれます。ハッシュベースの署名システムは、バリデータやアテスターがハッシュ関数に完全に基づいて署名を生成できるようにし、ポスト量子セキュリティを確保しながらネットワーク全体でより高い検証性を提供します。特に、SNARKフレンドリーなハッシュ関数が使用される場合、これはネットワークのセキュリティを向上させるだけでなく、Ethereumの長期的なセキュリティインフラをより堅牢で将来に対応できるものにします。
このシステムは、ハッシュベースの署名とハッシュベースのSNARKs(STARKのような証明)を組み合わせて、集約可能な署名スキームを作成します。 集約可能な署名は、何千もの署名を単一の構造体に圧縮し、わずか数百キロバイトの証拠にまで減少させます。 この圧縮により、ネットワーク上のデータ負荷が大幅に減少し、検証プロセスが大幅に加速します。 たとえば、イーサリアムの単一のスロットで生成される何千もの検証者の署名は、単一の集約署名で表すことができ、ストレージスペースと計算能力の両方を節約します。
しかし、このスキームの最も注目すべき特徴は、その無限に再帰的な集約であることです。つまり、1つの署名グループはさらに別のグループの下で組み合わされ、このプロセスはチェーン全体にわたって続けることができます。このメカニズムと将来の技術の進歩を考慮すると、BLSでは現在実現不可能な可能性を開くと言っても過言ではありません。
イーサリアムの検証可能性への道は、ブロックチェーン技術における根本的な変化を表しています。Vergeイニシアチブは、状態の検証のためのVerkle TreesやスケーラブルなトランジションのためのSTARKプルーフを通じて、コアの非効率性に対処しています。
最も野心的な提案の1つは、Beam Chainです。これはEthereumのコンセンサスレイヤーの包括的な再設計です。ビーコンチェーンの制限を解決し、zkフレンドリーな代替案を取り入れることにより、このアプローチはEthereumのスケーラビリティを向上させると同時に、分散化とアクセシビリティの核心原則を保持することを目指しています。ただし、この移行は、計算要件と許可なしで包括的なネットワークを維持するというEthereumの目標のバランスを取る上での課題も浮き彫りにしています。
NISTが現在の楕円曲線暗号を2035年までに段階的に廃止する計画を立てているため、Ethereumはハッシュベースの署名やPoseidonなどの量子耐性のある解決策を採用する必要があります。これらの解決策は、独自の効率のトレードオフを提供します。
EthereumのロードマップでのSTARKの使用は、スケーラビリティと検証性をさらに強調しています。STARKは透明性と量子耐性のある証明を提供する点で優れていますが、その統合にはプルーバ側の計算コストと小規模データの非効率性に関する課題があります。これらのハードルを克服することが必要であり、Ethereumのステートレスネスと効率的なブロック検証のビジョンを完全に実現するために、ネットワークが増加する需要に対して堅牢性を維持する必要があります。
これらの進展にもかかわらず、重要な課題は残っています。イーサリアムは、zkフレンドリー性、コンセンサスのスケーラビリティ、および量子耐性暗号の統合の複雑さなどの問題に対処する必要があります。さらに、既存のインフラの後方互換性は、開発者やユーザーへの影響を防ぐために慎重なエンジニアリングソリューションが必要な実用的なハードルを提起しています。
イーサリアムを際立たせているのは、その技術革新だけでなく、ブロックチェーンの最も困難な問題のいくつかを解決するための反復的なアプローチです。Beam Chain、Verkle Trees、STARKプルーフなどの技術が進むべき道は、開発者、研究者、そしてより広範なコミュニティによる共同作業にかかっています。これらの進歩は、一夜にして完璧を達成することではなく、透明で分散型で検証可能なインターネットの基盤を構築することです。
イーサリアムの進化は、Web3時代を形作る上で重要なプレーヤーとしての役割を強調しています。イーサリアムは、実用的なソリューションで今日の課題に取り組むことで、検証可能性、耐量子性、スケーラビリティが例外ではなく標準となる未来に近づいています。