---
title: "Validity（ZK）Proofs と Fraud Proofs の比較"
description: "ゼロ知識証明とフラウドプルーフについて、それぞれの類似点、相違点、どちらを選ぶべきかを解説"
---

# Validity（ZK）Proofs と Fraud Proofs の比較

Ethereumの指数関数的な成長は、データの処理と保存に困難をもたらします。特に、ブロックチェーン上ですべてのトランザクションを検証することで分散性とデータセキュリティを維持するために必要なブロック制限内では、この問題が顕著になります。

Ethereumと並行して動作しながらもそのセキュリティの恩恵を受けられないサイドチェーンや、有効な状態を保証するために独自のコンセンサスメカニズムに依存する[monolithic blockchains](https://www.alchemy.com/overviews/modular-vs-monolithic-blockchains)とは異なり、レイヤー2ブロックチェーンはブロックチェーンアーキテクチャの一部としてプルーフを使用します。

## どのようなタイプのブロックチェーンがプルーフを使用するのか？

**プルーフが最もよく見られるのは、ベースチェーンの状態が正しいことを保証しながらRollupsを使用してスケールとスループットの向上を実現するレイヤー2ブロックチェーンです。** Rollupとは、別のブロックチェーン上でトランザクションをバッチ処理し、プルーフを使用してトランザクションの正当性を保証するタイプのスケーリングソリューションです。

Rollupには主に2つのタイプがあります：

1. [Optimistic Rollups](https://www.alchemy.com/overviews/optimistic-rollups) - すべてのトランザクションを有効と仮定し、**不正証明（fraud proofs）**を使用して7日以内に不正なトランザクションを証明する
1. [Zero Knowledge \(ZK\) Rollups](https://www.alchemy.com/blog/zero-knowledge-rollups) - **有効性証明（validity proofs）**を使用してトランザクションが有効かどうかを即座に証明する

Validity proofsとfraud proofsは、トランザクションがベースチェーンの状態に記録される前にその正当性を検証します。

## Validity proofとは何か？

**Validity proof（ゼロ知識証明、ZK proofとも呼ばれる）は、ある情報についてプルーフを作成するプルーバー（prover）と、両者間で情報を共有することなくそのプルーフを検証するベリファイア（verifier）との間で行われるトランザクション検証方式です**。

プルーバーとベリファイアの間で共有される情報は**witness**と呼ばれ、通常は複雑な数学的方程式の解です。要するに、プルーバーはwitnessを正確に把握していることを示す必要があり、ベリファイアはプルーバーがwitnessについての知識を持っているかどうかを確実に判断できる必要があります。

### Validity proofはどのように機能するのか？

**Validity proofsは破ることが困難であるように設計されており、多項式コミットメントと呼ばれる暗号技術に依存しています**。多項式コミットメントでは、検証計算の各ステップからの情報が多項式にエンコードされ、因数分解された多項式表現が数値間の多数の方程式の代わりとなります。

多項式方程式を検証することで、暗黙的に数値計算を検証していることになりますが、これらの多項式をハッシュ化するプロセスは複雑です。多項式コミットメントに使用される3つの主要な多項式ハッシュ化方式は次のとおりです：

1. KZG \(Kate\) Polynomial Commitments
1. Bulletproofs
1. FRIs

FRIは「**F**ast **R**eed-Solomon **I**nteractive Oracle Proofs of Proximity」の略です。

### **ZK proofsを使用するブロックチェーンは何か？**

**Zero Knowledge proofsとRollupsを使用するブロックチェーンの例としては、zkSync、StarkNet、Zcashが挙げられます。**

すべてのZK Rollupsはセキュリティとトランザクション検証に重点を置いており、そのため様々なユースケースで信頼性を持って使用することができます。zkSyncとZcashはトランザクションにより重点を置いている一方、StarkNetは、ゲーミングコミュニティ向けの安全なNFTとweb3開発のためのフレームワークである**Immutable X**など、様々なdappやDeFi事業をサポートするよう多様化しています。

## Fraud proofとは何か？

Fraud proof（**fault proof**とも呼ばれる）は、ベリファイアがトランザクションの状態に異議を申し立てるために提出するプルーフです。実装内容によっては、fraud proofはトランザクションの一部分を実行し、それらを検証しようと試みます。

簡単に説明すると：

- fraud proofがエラーを発見した場合、バッチに挿入されたトランザクションは削除され、バッチは検証可能な正しい以前の状態に戻されます。
- 異議申し立て期間中にfraud proofsが提出されなかった場合、状態変更は楽観的に正しいものとみなされます。

### Fraud proofはどのように機能するのか？

Fraud proofsは、Merkleルートを比較し、単一ラウンドの計算（Optimismのような）または複数ラウンドの計算（Arbitrumのような）のいずれかを通じて開始状態ルートと終了状態ルートを検証することで機能します。

ブロックチェーンは**Merkle Tree**と呼ばれるデータ構造上で動作します。これは各トランザクションをツリーの葉として含み、それに続く枝はツリーのますます複雑になるハッシュによって表現されます。

ルートノード（**Merkleルート**とも呼ばれる）は、データを効果的に凝縮するハッシュであり、ユーザーがメインチェーン全体を常にダウンロードする必要をなくします。

<ImageBlock
  src="https://media.alchemy.com/1704290692-fraud-proof-merkle-root.png"
  alt="緑色のデータと、上記に示したバッチがあれば、post-state rootを検証するのに十分である。(出典: Vitalik's Blog)"
  width={411}
  height={481}
  caption="緑色のデータと、上記に示したバッチがあれば、post-state rootを検証するのに十分である。(出典: Vitalik's Blog)"
/>

ベリファイアがトランザクションの状態変更に異議を申し立てたい場合、現在の事後状態ルートと、正しい事後状態ルートを計算するために使用できるMerkleツリーの特定の部分を提出するだけでよいのです。両者が一致しない場合、トランザクションの状態変更は元に戻され、ハッシュは証明可能な正しい状態ルートにリセットされます。

### **Fraud proofsを使用するブロックチェーンは何か？**

**Fraud proofsとOptimistic Rollupモデルは、メインチェーン上のトランザクションよりも大幅に安価で高速であるため、Arbitrum、Optimism、Metis Andromedaなどのブロックチェーンで好んで使用されています**。

OptimismとArbitrumは、特にトランザクションをバッチ処理してスループットを向上させる能力など、Optimistic Rollupの機能のために設計された独自のEVM互換仮想マシンを使用していますが、Metisは自身のL2システムの応用性により重点を置いており、[apps](https://www.alchemy.com/dapps/top/defi-dapps)、[DAOs](https://www.alchemy.com/dapps/top/daos)、DeFiエコシステムの構築と開発を支援する様々な機能を備えています。

## Validity proofsとfraud proofsはどのように似ているのか？

ZK proofsとfraud proofsは、どちらもスケーリングのためにRollupソリューションを使用し、異なるユースケースに対して複数の実装を持つという点で似ています。

### 1. どちらもレイヤー2のRollupベースのソリューションでスケーラビリティを向上させるために使用される

Rollupsは、メインのEthereumブロックチェーンから大部分の負荷を取り除くために設計されました。メインネット上でトランザクションを実行する代わりに、Rollupsは計算をオフチェーンに移しながら、トランザクションごとのわずかなデータをEthereum上に保持します。トランザクションを圧縮することで、Rollupsはより高い秒間トランザクション数（TPS）のスケーラビリティと、平均ガスコストの低下を可能にします。

Rollupの主な2つのタイプはoptimisticとZK rollupです。

**Optimistic rollups**の主要な特徴は、最初にすべてのトランザクションを有効と仮定し、それらのトランザクションをバッチに追加できるようにすることです。提出後、fraud proofによってトランザクションに異議を申し立てることができる異議申し立て期間があります。

**Zero knowledge rollups**は、トランザクションをバッチにまとめて提出する点でoptimistic rollupsと似ていますが、主な違いの一つは、ZK rollupsが個人情報を共有することなく、各トランザクションがrollupにコミットされる前にvalidity proofsを使用してそれを検証することです。

### 2. Validity proofsとfraud proofsには複数の実装がある

Validity proofsには、SNARKsやSTARKsを含む（これらに限定されない）複数の実装があり、fraud proofsには単一Rollupや複数ラウンドRollupを含む複数の実装があります。

### SNARKs vs. STARKs

2つの一般的なZK proofの実装は[SNARKs and STARKs](https://www.alchemy.com/overviews/snarks-vs-starks)です。

**SNARKとは：**

- Succinct
- Non-interactive
- ARgument of
- Knowledge

ZK SNARKsは、プルーフ自体を超えた追加情報を必要としない、小さく迅速に検証可能な知識の証明（すなわち計算的に健全な暗号学的プルーフ）を作成します。

**同様に、STARKとは：**

- Scalable
- TRansparent
- Argument of
- Knowledge

SNARKとSTARKの主な違いは、STARKのスケーラブルで透明性のある特性です。STARKsのプルーフは線形にスケールする一方、SNARKsのプルーフは準線形にしかスケールしないため、STARKsはスケーラブルです。このため、STARKsはより大きなトランザクションに好まれます。

さらに、SNARKsは、より中央集権的で信頼された設定に依存する代わりに、公開検証可能なランダム性を使用してプルーバーとベリファイアの間のインタラクションを設定できるため、透明性があります。

### 単一ラウンドvs.複数ラウンドRollup

Optimistic rollupsの主な2つのタイプは、それぞれOptimismとArbitrumによって使用される単一ラウンドと複数ラウンドのRollupです。ベリファイアがOptimism上のトランザクションに異議を申し立てるためにfraud proofを提出すると、プルーフ全体がEVM上で実行されます。これは、1週間という異議申し立て時間遅延（DTD）によってのみ制限される、比較的迅速かつ簡単なプロセスです。

一方、Arbitrumのfraud proof検証プロセスは、主張者と挑戦者が複数のラウンドにわたって意見が一致しない箇所が見つかるまでトランザクションの区間を繰り返し絞り込んでいく、インタラクティブなオフチェーン異議検証プロセスに依存しています。

## Validity proofsとfraud proofsはどのように異なるのか？

ZK proofsとfraud proofsには、必要な計算量、トランザクションの検証にかかる時間、セキュリティ、実装の難しさなど、複数の違いがあります。

### 1. Validity proofsはfraud proofsよりも計算負荷が高い

ZK proofsは本質的に検証が数学的に困難であり、真のゼロ知識検証プロセスに必要な技術的性質上、通常は集中的な計算が必要です。

Fraud proofsは通常、1バッチあたり約40,000ガスと安価ですが、ZK SNARKのプルーフには500,000ガスが必要です。しかし、Optimistic Rollupsはfraud proofが結果を正当化または反証するためにすべてのデータをメインブロックチェーンに公開し戻す必要があるため、ZK SNARKsの方がオンチェーンでは安価です。

### 2. Validity proofsは即時であるが、fraud proofsには異議申し立ての時間遅延がある

ZK proofsとfraud proofsの大きな違いは、ZK proofsがトランザクションを即座に検証するのに対し、fraud proofsにはトランザクションを遅くする本質的な異議申し立て時間遅延（DTD）があることです。あるバッチに関してベリファイアからfraud proofsが一切提出されなかった場合にのみ、そのバッチが実際にEthereumに公開されます。

### 3. Validity proofsはより分散化されており、データセキュリティが高い

ZK proofsは最小限のインタラクション（例えば、ベリファイアへのプルーフの共有のみ）しか必要とせず、このプロセスは安全に行うことができるため、非常に分散化されています。

さらに、プルーフがゼロ知識であり完全に正確であるため、validity proofsはユーザーのプライバシーを保護し、L1チェーンに対する51%攻撃のような深刻な脅威のリスクを最小化します。

しかし、Optimistic Rollupsでは、ベリファイアがfraud proofを提出する必要がありますが、これは傍受されたりDDoS攻撃を受けたりすることで、トランザクションの状態への異議申し立てがバッチに反映されるのを妨げられる可能性があります。

### 4. Validity proofsの方が実装が難しい

Optimistic Rollups、ひいてはfraud proofsは、任意のEVMまたは[Optimistic Virtual Machine](https://www.alchemy.com/overviews/optimistic-virtual-machine)（OVM）上で動作できますが、Zero knowledge proofsとZK rollupsには、zero knowledge Ethereum Virtual Machines（[zkEVMs](https://www.alchemy.com/overviews/zkevm)）と呼ばれる専用の仮想マシンが必要です。これらの仮想マシンは、ZK計算と暗号学的validity proofsに対応した方法でスマートコントラクトを実行できます。

つい最近まで、zkEVMsは理論的にのみ可能であると考えられており、現在でもZK proofsをサポートするようにEVMsをラップすることは困難です。しかし、ZK proofsのスループットとスケーラビリティの向上を可能にする新たな展開がZK分野で進んでいます。

特に注目すべきは、Polygonが[独自のRollup技術](https://www.alchemy.com/overviews/polygon-zk-rollups)を構築していることです。これは再帰的ZK SNARKsを使用して、メインチェーンに戻る前にオフチェーンでのトランザクションをより効率的に実行するものです。再帰的プルーフは、一度に複数のトランザクションブロックを証明し、さらに集約されたブロックも証明することで機能します。

要するに、SNARKsは他のSNARKsを証明しており、その結果、複数のロールアップされたトランザクションよりもさらに効率的な、最終的な1つのトランザクションが得られます。PolygonのPolygon Zeroは、これらの再帰的プルーフを作成するために**Plonky2**を使用しており、これは現在利用可能な最も高速な証明方式です。

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "", dataType: "object" },
      { key: "2", width: 200, title: "<p>Validity Proofs (STARKs or SNARKs)</p>", dataType: "object" },
      { key: "3", width: 200, title: "<p>Validity Proofs (STARKs or SNARKs)</p>", dataType: "object" },
      { key: "4", width: 200, title: "<p>Fraud Proofs</p>", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p><strong>On-Chain Data</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p>zK-Rollup</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Volition</p>", tooltip: "", icon: "" },
        "4": { title: "<p>Optimistic Rollup</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p><strong>Off-Chain Data</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<p>Validium</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Volition</p>", tooltip: "", icon: "" },
        "4": { title: "<p>Plasma</p>", tooltip: "", icon: "" },
        id: 1,
      },
    ],
  }}
/>

もう一つの選択肢は[Validum](https://ethereum.org/en/developers/docs/scaling/validium/)です。これは、一部のデータをオンチェーンに保存する代わりに、すべてのデータをオフチェーンに保存するタイプのZK Rollupです。この設定のリスク要因として、StarkExオペレーターがオフチェーンデータへのアクセスを妨げたり改変したりする可能性がありますが、これは中立で誠実なデータストレージを提供するData Availability Committee（DAC）の設立によって緩和されています。

## どのレイヤー2スケーリングソリューションを使うべきか？

つい最近まで、ZK proofsは実装が困難で計算負荷がはるかに高かったため、fraud proofsとoptimistic rollupsが好まれていましたが、ゼロ知識分野における様々な新しい展開により、ZK rollupsはかつてないほどアクセスしやすくなっています。

zkEVMsが増加し、より安全で情報を漏らさない非インタラクティブなトランザクションが保証されるようになるにつれ、ZK rollupsは有力なレイヤー2スケーリングソリューションとして台頭しています。
