バリディウム
バリディウムは、ZKロールアップのように有効性証明を使用してトランザクションの整合性を強制するスケーリングソリューションですが、トランザクションデータをイーサリアム・メインネットに保存しません。オフチェーンのデータ可用性はトレードオフをもたらしますが、スケーラビリティの大幅な向上につながる可能性があります(バリディウムは1秒あたり約9,000件以上のトランザクション (opens in a new tab)を処理できます)。
前提条件
イーサリアムのスケーリングとレイヤー2に関するページを読んで理解しておく必要があります。
バリディウムとは?
バリディウムは、イーサリアム・メインネット外でトランザクションを処理することでスループットを向上させるように設計された、オフチェーンのデータ可用性と計算を使用するスケーリングソリューションです。ゼロ知識ロールアップ(ZKロールアップ)と同様に、バリディウムはイーサリアム上のオフチェーントランザクションを検証するためにを公開します。これにより、無効な状態遷移が防止され、バリディウムチェーンのセキュリティ保証が強化されます。
これらの「有効性証明」は、ZK-SNARKs(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)またはZK-STARKs(Zero-Knowledge Scalable Transparent ARgument of Knowledge)の形式で提供されます。ゼロ知識証明 (opens in a new tab)の詳細。
バリディウムユーザーに属する資金は、イーサリアム上のスマート・コントラクトによって制御されます。バリディウムは、ZKロールアップと同様に、ほぼ瞬時の引き出しを提供します。引き出しリクエストの有効性証明がメインネットで検証されると、ユーザーはマークル証明を提供することで資金を引き出すことができます。マークル証明は、検証済みのトランザクションバッチにユーザーの引き出しトランザクションが含まれていることを検証し、オンチェーンのコントラクトが引き出しを処理できるようにします。
ただし、バリディウムユーザーは資金を凍結され、引き出しを制限される可能性があります。これは、バリディウムチェーン上のデータ可用性管理者がオフチェーンの状態データをユーザーから隠蔽した場合に発生する可能性があります。トランザクションデータにアクセスできないと、ユーザーは資金の所有権を証明して引き出しを実行するために必要なマークル証明を計算できません。
これがバリディウムとZKロールアップの主な違いであり、データ可用性のスペクトルにおける位置づけの違いです。両方のソリューションはデータストレージへのアプローチが異なり、これはセキュリティとトラストレス性に影響を与えます。
バリディウムはイーサリアムとどのように相互作用するのか?
バリディウムは、既存のイーサリアムチェーンの上に構築されたスケーリングプロトコルです。トランザクションをオフチェーンで実行しますが、バリディウムチェーンはメインネットにデプロイされたスマート・コントラクトの集合によって管理されます。これには以下が含まれます。
-
検証者コントラクト: 検証者コントラクトは、状態の更新を行う際にバリディウムオペレーターによって提出された証明の有効性を検証します。これには、オフチェーントランザクションの正確性を証明する有効性証明と、オフチェーントランザクションデータの存在を検証するデータ可用性証明が含まれます。
-
メインコントラクト: メインコントラクトは、ブロック生成者によって提出された状態コミットメント(マークル・ルート)を保存し、有効性証明がオンチェーンで検証されるとバリディウムの状態を更新します。このコントラクトは、バリディウムチェーンへの入金と引き出しも処理します。
バリディウムはまた、以下の点においてメインのイーサリアムチェーンに依存しています。
セトルメント
バリディウムで実行されたトランザクションは、親チェーンがその有効性を検証するまで完全に確認することはできません。バリディウムで行われるすべてのビジネスは、最終的にメインネットでセトルメントされる必要があります。イーサリアムのブロックチェーンはまた、バリディウムユーザーに「セトルメント保証」を提供します。つまり、オフチェーントランザクションは一度オンチェーンにコミットされると、取り消したり変更したりすることはできません。
セキュリティ
セトルメントレイヤーとして機能するイーサリアムは、バリディウム上の状態遷移の有効性も保証します。バリディウムチェーンで実行されたオフチェーントランザクションは、ベースとなるイーサリアムレイヤー上のスマート・コントラクトを介して検証されます。
オンチェーンの検証者コントラクトが証明を無効と判断した場合、トランザクションは拒否されます。これは、オペレーターがバリディウムの状態を更新する前に、イーサリアムプロトコルによって強制される有効性条件を満たさなければならないことを意味します。
バリディウムはどのように機能するのか?
トランザクション
ユーザーは、バリディウムチェーン上でトランザクションを実行する役割を担うノードであるオペレーターにトランザクションを送信します。一部のバリディウムは、チェーンを実行するために単一のオペレーターを使用するか、オペレーターをローテーションするためにプルーフ・オブ・ステーク (PoS)メカニズムに依存する場合があります。
オペレーターはトランザクションをバッチに集約し、証明のために証明回路に送信します。証明回路は、トランザクションバッチ(およびその他の関連データ)を入力として受け入れ、操作が正しく実行されたことを検証する有効性証明を出力します。
状態コミットメント
バリディウムの状態はマークル・ツリーとしてハッシュ化され、そのルートはイーサリアム上のメインコントラクトに保存されます。状態ルートとも呼ばれるマークル・ルートは、バリディウム上のアカウントと残高の現在の状態に対する暗号化コミットメントとして機能します。
状態の更新を実行するには、オペレーターは(トランザクションの実行後に)新しい状態ルートを計算し、それをオンチェーンのコントラクトに提出する必要があります。有効性証明が確認されると、提案された状態が受け入れられ、バリディウムは新しい状態ルートに切り替わります。
入金と引き出し
ユーザーは、オンチェーンのコントラクトにETH(または任意のERC互換トークン)を入金することで、イーサリアムからバリディウムに資金を移動します。コントラクトは入金イベントをオフチェーンのバリディウムに中継し、そこでユーザーのアドレスに入金額と同額がクレジットされます。オペレーターは、この入金トランザクションも新しいバッチに含めます。
資金をメインネットに戻すには、バリディウムユーザーは引き出しトランザクションを開始し、それをオペレーターに送信します。オペレーターは引き出しリクエストを検証し、バッチに含めます。バリディウムチェーン上のユーザーの資産も、システムからエグジットする前に破棄されます。バッチに関連付けられた有効性証明が検証されると、ユーザーはメインコントラクトを呼び出して、初期入金の残りを引き出すことができます。
検閲耐性メカニズムとして、バリディウムプロトコルは、ユーザーがオペレーターを介さずにバリディウムコントラクトから直接引き出すことを許可します。この場合、ユーザーはアカウントが状態ルートに含まれていることを示すマークル証明を検証者コントラクトに提供する必要があります。証明が受け入れられると、ユーザーはメインコントラクトの引き出し関数を呼び出して、バリディウムから資金をエグジットさせることができます。
バッチの提出
トランザクションのバッチを実行した後、オペレーターは関連する有効性証明を検証者コントラクトに提出し、新しい状態ルートをメインコントラクトに提案します。証明が有効な場合、メインコントラクトはバリディウムの状態を更新し、バッチ内のトランザクションの結果をファイナライズ済みとします。
ZKロールアップとは異なり、バリディウムのブロック生成者はトランザクションバッチのトランザクションデータを公開する必要はありません(ブロックヘッダーのみ)。これにより、ブロブデータ、calldata、またはその両方の組み合わせを使用してメインのイーサリアムチェーンに状態データを公開する「ハイブリッド」スケーリングプロトコル(つまり、レイヤー2)とは対照的に、バリディウムは純粋なオフチェーンスケーリングプロトコルになります。
データ可用性
前述のように、バリディウムはオフチェーンのデータ可用性モデルを利用しており、オペレーターはすべてのトランザクションデータをイーサリアム・メインネット外に保存します。バリディウムのオンチェーンデータフットプリントの低さは、スケーラビリティを向上させ(スループットはイーサリアムのデータ処理能力によって制限されません)、ユーザー手数料を削減します(データをオンチェーンで公開するコストが低くなります)。
ただし、オフチェーンのデータ可用性には問題があります。マークル証明の作成または検証に必要なデータが利用できない可能性があります。これは、オペレーターが悪意を持って行動した場合、ユーザーがオンチェーンのコントラクトから資金を引き出せなくなる可能性があることを意味します。
さまざまなバリディウムソリューションは、状態データのストレージを分散化することでこの問題を解決しようとしています。これには、ブロック生成者に、オフチェーンデータを保存し、要求に応じてユーザーが利用できるようにする責任を負う「データ可用性管理者」に基盤となるデータを送信させる強制が含まれます。
バリディウムのデータ可用性管理者は、すべてのバリディウムバッチに署名することで、オフチェーントランザクションのデータの可用性を証明します。これらの署名は、オンチェーンの検証者コントラクトが状態の更新を承認する前にチェックする「可用性証明」の一形態を構成します。
バリディウムは、データ可用性管理へのアプローチが異なります。状態データを保存するために信頼できる当事者に依存するものもあれば、そのタスクにランダムに割り当てられたバリデーターを使用するものもあります。
データ可用性委員会 (DAC)
オフチェーンデータの可用性を保証するために、一部のバリディウムソリューションは、状態のコピーを保存し、データ可用性の証明を提供するために、データ可用性委員会(DAC)と総称される信頼できるエンティティのグループを任命します。DACはメンバー数が少ないため、実装が容易で、調整も少なくて済みます。
ただし、ユーザーは、必要なとき(マークル証明の生成など)にデータを利用できるようにDACを信頼する必要があります。データ可用性委員会のメンバーが悪意のあるアクターによって侵害され (opens in a new tab)、オフチェーンデータを隠蔽される可能性があります。
バリディウムにおけるデータ可用性委員会の詳細 (opens in a new tab)。
ボンド付きデータ可用性
他のバリディウムでは、オフラインデータの保存を担当する参加者が、その役割を引き受ける前にスマート・コントラクトにトークンをステーク(つまりロックアップ)する必要があります。このステークは、データ可用性管理者間の誠実な行動を保証する「ボンド(保証金)」として機能し、トラスト前提を減らします。これらの参加者がデータ可用性を証明できなかった場合、ボンドはスラッシングされます。
ボンド付きデータ可用性スキームでは、必要なステークを提供すれば、誰でもオフチェーンデータを保持するように割り当てることができます。これにより、適格なデータ可用性管理者のプールが拡大し、データ可用性委員会(DAC)に影響を与える中央集権化が軽減されます。さらに重要なことに、このアプローチは悪意のある活動を防ぐために暗号経済的インセンティブに依存しており、バリディウムでオフラインデータを保護するために信頼できる当事者を任命するよりもはるかに安全です。
バリディウムにおけるボンド付きデータ可用性の詳細 (opens in a new tab)。
ボリションとバリディウム
バリディウムは多くの利点を提供しますが、トレードオフ(最も顕著なのはデータ可用性)を伴います。しかし、多くのスケーリングソリューションと同様に、バリディウムは特定のユースケースに適しています。これがボリション(Volition)が作成された理由です。
ボリションは、ZKロールアップとバリディウムチェーンを組み合わせ、ユーザーが2つのスケーリングソリューションを切り替えることを可能にします。ボリションを使用すると、ユーザーは特定のトランザクションでバリディウムのオフチェーンデータ可用性を活用しながら、必要に応じてオンチェーンデータ可用性ソリューション(ZKロールアップ)に切り替える自由を保持できます。これにより、ユーザーは独自の状況に応じてトレードオフを選択する自由を実質的に得ることができます。
分散型取引所(DEX)は、高額な取引にバリディウムのスケーラブルでプライベートなインフラストラクチャを使用することを好む場合があります。また、ZKロールアップのより高いセキュリティ保証とトラストレス性を求めるユーザーのために、ZKロールアップを使用することもできます。
バリディウムとEVMの互換性
ZKロールアップと同様に、バリディウムは主にトークンスワップや支払いなどのシンプルなアプリケーションに適しています。ゼロ知識証明回路でEVM命令を証明するためのかなりのオーバーヘッドを考慮すると、バリディウム間で一般的な計算とスマート・コントラクトの実行をサポートすることは実装が困難です。
一部のバリディウムプロジェクトは、EVM互換言語(Solidity、Vyperなど)をコンパイルして、効率的な証明のために最適化されたカスタムバイトコードを作成することで、この問題を回避しようとしています。このアプローチの欠点は、新しいゼロ知識証明に適したVMが重要なEVMオペコードをサポートしていない可能性があり、開発者が最適なエクスペリエンスを得るために高水準言語で直接記述しなければならないことです。これにより、さらに多くの問題が発生します。開発者はまったく新しい開発スタックで分散型アプリケーション (dapp) を構築することを余儀なくされ、現在のイーサリアムインフラストラクチャとの互換性が損なわれます。
しかし、一部のチームは、既存のEVMオペコードをZK証明回路用に最適化しようとしています。これにより、プログラム実行の正確性を検証するための証明を生成するEVM互換VMである、ゼロ知識イーサリアム仮想マシン(zkEVM)が開発されます。zkEVMを使用すると、バリディウムチェーンはスマート・コントラクトをオフチェーンで実行し、有効性証明を提出して、イーサリアム上で(再実行することなく)オフチェーン計算を検証できます。
zkEVMの詳細 (opens in a new tab)。
バリディウムはイーサリアムをどのようにスケーリングするのか?
1. オフチェーンデータストレージ
オプティミスティックロールアップやZKロールアップなどのレイヤー2スケーリングプロジェクトは、L1で一部のトランザクションデータを公開することで、純粋なオフチェーンスケーリングプロトコル(プラズマなど)の無限のスケーラビリティとセキュリティをトレードオフします。しかし、これはロールアップのスケーラビリティ特性がイーサリアム・メインネットのデータ帯域幅によって制限されることを意味します(この理由から、データシャーディングはイーサリアムのデータストレージ容量を改善することを提案しています)。
バリディウムは、すべてのトランザクションデータをオフチェーンに保持し、メインのイーサリアムチェーンに状態の更新を中継するときに状態コミットメント(および有効性証明)のみを投稿することで、スケーラビリティを実現します。ただし、有効性証明の存在により、バリディウムはプラズマやサイドチェーンなどの他の純粋なオフチェーンスケーリングソリューションよりも高いセキュリティ保証を得ることができます。オフチェーントランザクションを検証する前にイーサリアムが処理しなければならないデータ量を減らすことで、バリディウムの設計はメインネットのスループットを大幅に拡張します。
2. 再帰的証明
再帰的証明は、他の証明の有効性を検証する有効性証明です。これらの「証明の証明」は、以前のすべての証明を検証する1つの最終的な証明が作成されるまで、複数の証明を再帰的に集約することによって生成されます。再帰的証明は、有効性証明ごとに検証できるトランザクションの数を増やすことで、ブロックチェーンの処理速度をスケーリングします。
通常、バリディウムオペレーターが検証のためにイーサリアムに提出する各有効性証明は、単一のブロックの整合性を検証します。一方、単一の再帰的証明を使用して、複数のバリディウムブロックの有効性を同時に確認できます。これは、証明回路が複数のブロック証明を1つの最終的な証明に再帰的に集約できるため可能です。オンチェーンの検証者コントラクトが再帰的証明を受け入れると、基盤となるすべてのブロックが直ちにファイナライズ済みになります。
バリディウムの長所と短所
| 長所 | 短所 |
|---|---|
| 有効性証明はオフチェーントランザクションの整合性を強制し、オペレーターが無効な状態の更新をファイナライズ済みとするのを防ぎます。 | 有効性証明の生成には特別なハードウェアが必要であり、中央集権化のリスクをもたらします。 |
| ユーザーの資本効率を向上させます(イーサリアムへの資金の引き出しに遅延がありません)。 | 一般的な計算/スマート・コントラクトのサポートが限られています。開発には専用の言語が必要です。 |
| 高額なアプリケーションにおいて、不正証明ベースのシステムが直面する特定の経済的攻撃に対して脆弱ではありません。 | ZK証明の生成には高い計算能力が必要です。低スループットのアプリケーションでは費用対効果が高くありません。 |
| コールデータをイーサリアム・メインネットに投稿しないことで、ユーザーのガス代を削減します。 | 主観的なファイナリティ時間は遅くなります(ZK証明の生成に10〜30分)が、紛争の遅延時間がないため、完全なファイナリティまでは速くなります。 |
| トランザクションのプライバシーとスケーラビリティを優先する取引やブロックチェーンゲームなど、特定のユースケースに適しています。 | 所有権のマークル証明を生成するにはオフチェーンデータが常に利用可能である必要があるため、ユーザーが資金を引き出せなくなる可能性があります。 |
| オフチェーンのデータ可用性は、より高いレベルのスループットを提供し、スケーラビリティを向上させます。 | セキュリティモデルは、暗号化セキュリティメカニズムに純粋に依存するZKロールアップとは異なり、トラスト前提と暗号経済的インセンティブに依存しています。 |
バリディウム/ボリションの使用
複数のプロジェクトが、分散型アプリケーション (dapp) に統合できるバリディウムとボリションの実装を提供しています。
StarkWare StarkEx - StarkExは、有効性証明に基づくイーサリアムのレイヤー2 (L2) スケーラビリティソリューションです。ZKロールアップまたはバリディウムのデータ可用性モードのいずれかで動作できます。
Matter Labs zkPorter- zkPorterは、zkRollupとシャーディングのアイデアを組み合わせたハイブリッドアプローチでデータ可用性に取り組むレイヤー2スケーリングプロトコルです。それぞれが独自のデータ可用性ポリシーを持つ、任意の数のシャードをサポートできます。