---
title: "Validity(ZK) 증명 vs. 사기 증명"
description: "영지식 증명과 사기 증명의 개념, 유사점과 차이점, 그리고 어떤 것을 선택해야 하는지 알아보세요"
---

# Validity(ZK) 증명 vs. 사기 증명

Ethereum의 기하급수적인 성장은 데이터 처리와 저장에 어려움을 야기하는데, 특히 탈중앙화와 데이터 보안을 유지하기 위해 블록체인 상의 각 트랜잭션을 검증해야 하는 블록 한도 내에서는 더욱 그렇습니다.

Ethereum과 병렬로 작동하지만 그 보안의 이점을 얻지 못하는 사이드체인이나, 유효한 상태를 보장하기 위해 자체 합의 메커니즘에 의존하는 [monolithic blockchains](https://www.alchemy.com/overviews/modular-vs-monolithic-blockchains)와 달리, layer 2 블록체인은 블록체인 아키텍처의 일부로 proof를 사용합니다.

## 어떤 유형의 블록체인이 proof를 사용하나요?

**Proof는 base chain의 상태가 올바른지 확인하면서 확장성과 처리량 증가를 달성하기 위해 rollup을 사용하는 layer 2 블록체인에서 가장 흔히 발견됩니다.** Rollup은 별도의 블록체인에서 트랜잭션을 배치 처리하고 proof를 사용해 트랜잭션의 진실성을 보장하는 유형의 스케일링 솔루션입니다.

Rollup에는 두 가지 주요 유형이 있습니다:

1. [Optimistic Rollups](https://www.alchemy.com/overviews/optimistic-rollups) - 모든 트랜잭션이 유효하다고 가정하며, **fraud proof**를 사용해 7일 이내에 허위 트랜잭션을 입증합니다
1. [Zero Knowledge \(ZK\) Rollups](https://www.alchemy.com/blog/zero-knowledge-rollups) - **validity proof**를 사용해 트랜잭션의 유효 여부를 즉시 증명합니다

Validity proof와 fraud proof는 트랜잭션이 base chain의 상태에 기록되기 전에 그 정당성을 검증합니다.

## Validity proof란 무엇인가요?

**Validity proof는 zero knowledge \(ZK\) proof라고도 하며, 어떤 정보에 대한 proof를 생성하는 prover와, 두 당사자 간에 정보를 공유하지 않고 그 proof를 검증하는 verifier 사이에서 이루어지는 트랜잭션 검증 방식입니다**.

Prover와 verifier 사이에 공유되는 정보를 **witness**라고 하며, 일반적으로 복잡한 수학 방정식의 해입니다. 본질적으로 prover는 자신이 witness를 정확히 알고 있음을 보여야 하고, verifier는 prover가 witness에 대한 지식을 갖고 있는지를 신뢰성 있게 판단할 수 있어야 합니다.

### Validity proof는 어떻게 작동하나요?

**Validity proof는 깨뜨리기 어렵게 설계되었으며, polynomial commitment라는 암호화 기법에 의존합니다**. Polynomial commitment에서는 검증 계산의 각 단계에서 나온 정보가 다항식으로 인코딩되며, 인수분해된 다항식 표현이 숫자들 간의 방대한 방정식들을 대신할 수 있습니다.

다항식 방정식을 검증함으로써 암묵적으로 수치 계산을 검증하게 되지만, 이 다항식들을 해싱하는 과정은 복잡합니다. Polynomial commitment에 사용되는 주요 다항식 해싱 방식 세 가지는 다음과 같습니다:

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

FRI는 "**F**ast **R**eed-Solomon **I**nteractive Oracle Proofs of Proximity"의 약자입니다.

### **어떤 블록체인이 ZK proof를 사용하나요?**

**Zero Knowledge proof와 rollup을 사용하는 블록체인의 몇 가지 예로는 zkSync, StarkNet, Zcash가 있습니다.**

모든 ZK rollup은 보안과 트랜잭션 검증에 집중되어 있어 다양한 사용 사례에서 신뢰성 있게 사용될 수 있습니다. zkSync와 Zcash는 트랜잭션에 더 초점을 맞추는 반면, StarkNet은 게임 커뮤니티를 위한 안전한 NFT 및 web3 개발 프레임워크인 **Immutable X**를 포함해 다양한 dapp과 DeFi 프로젝트를 지원하도록 다각화되었습니다.

## Fraud proof란 무엇인가요?

Fraud proof는 **fault proof**라고도 하며, 트랜잭션 상태에 이의를 제기하기 위해 verifier가 제출하는 proof입니다. 구현 방식에 따라 fraud proof는 트랜잭션의 일부 구간을 실행하며 이를 검증하려고 시도합니다.

간단히 설명하면 다음과 같습니다:

- Fraud proof가 오류를 발견하면 배치에 삽입된 트랜잭션이 제거되고, 배치는 이전에 검증된 올바른 상태로 되돌아갑니다.
- 이의 제기 기간 동안 fraud proof가 제출되지 않으면 상태 변경은 낙관적으로 올바른 것으로 간주됩니다.

### Fraud proof는 어떻게 작동하나요?

Fraud proof는 Merkle root를 비교하고, 단일 라운드 계산\(Optimism처럼\) 또는 다중 라운드 계산\(Arbitrum처럼\)을 통해 시작 및 종료 상태 root를 검증하는 방식으로 작동합니다.

블록체인은 **Merkle Tree**라는 데이터 구조 위에서 작동하며, 각 트랜잭션은 트리의 leaf로 존재하고 이후의 branch는 점점 더 복잡한 해시로 표현됩니다.

root node, 즉 **Merkle Root**는 데이터를 효과적으로 압축하는 해시로, 사용자가 메인 체인 전체를 지속적으로 다운로드할 필요가 없게 해줍니다.

<ImageBlock
  src="https://media.alchemy.com/1704290692-fraud-proof-merkle-root.png"
  alt="녹색으로 표시된 데이터와 위에 나타난 배치(batch)는 post-state root를 검증하기에 충분하다. (출처: Vitalik's Blog)"
  width={411}
  height={481}
  caption="녹색으로 표시된 데이터와 위에 나타난 배치(batch)는 post-state root를 검증하기에 충분하다. (출처: Vitalik's Blog)"
/>

Verifier가 트랜잭션 상태 변경에 이의를 제기하고자 한다면, 현재의 post-state root와 올바른 post-state root를 계산하는 데 사용할 수 있는 Merkle tree의 특정 부분만 제출하면 됩니다. 만약 둘이 일치하지 않으면 트랜잭션 상태 변경은 되돌려지고 해시는 입증 가능한 올바른 상태 root로 재설정됩니다.

### **어떤 블록체인이 fraud proof를 사용하나요?**

**Fraud proof와 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 proof와 fraud proof는 어떤 점에서 비슷한가요?

ZK proof와 fraud proof는 둘 다 확장을 위해 rollup 솔루션을 사용하며, 서로 다른 사용 사례를 위한 여러 구현 방식을 갖고 있다는 점에서 비슷합니다.

### 1. 둘 다 확장성을 높이기 위해 layer 2 rollup 기반 솔루션에서 사용됩니다

Rollup은 메인 Ethereum 블록체인의 부하 대부분을 제거하도록 설계되었습니다. 메인넷에서 트랜잭션을 실행하는 대신, rollup은 계산을 오프체인으로 옮기면서 트랜잭션당 소량의 데이터만 Ethereum에 유지합니다. 트랜잭션을 압축함으로써 rollup은 초당 트랜잭션 수\(TPS\) 확장성을 높이고 평균 gas 비용을 낮춥니다.

Rollup의 두 가지 주요 유형은 optimistic rollup과 ZK rollup입니다.

**optimistic rollup**의 핵심 특징은 처음에 모든 트랜잭션이 유효하다고 가정하고 이 트랜잭션들을 배치에 추가한다는 점입니다. 제출 이후에는 fraud proof로 트랜잭션에 이의를 제기할 수 있는 이의 제기 기간이 있습니다.

**Zero knowledge rollup**은 트랜잭션을 배치로 모아서 제출한다는 점에서 optimistic rollup과 유사하지만, 둘 사이의 주된 차이점 중 하나는 ZK rollup이 개인정보 공유 없이 각 트랜잭션이 rollup에 커밋되기 전에 이를 검증하기 위해 validity proof를 사용한다는 점입니다.

### 2. Validity proof와 fraud proof는 여러 구현 방식을 가지고 있습니다

Validity proof는 SNARK와 STARK를 포함해 여러 구현 방식이 있으며, fraud proof는 single rollup, multi-round rollup을 포함해 여러 구현 방식이 있습니다.

### SNARK 대 STARK

인기 있는 두 가지 ZK proof 구현 방식은 [SNARKs and STARKs](https://www.alchemy.com/overviews/snarks-vs-starks)입니다.

**SNARK는 다음의 약자입니다:**

- Succinct
- Non-interactive
- ARgument of
- Knowledge

ZK SNARK는 proof 자체 외에 추가 정보가 필요 없는, 작고 빠르게 검증 가능한 지식 논증\(즉, 계산적으로 안전한 암호학적 proof\)을 생성합니다.

**마찬가지로 STARK는 다음의 약자입니다:**

- Scalable
- TRansparent
- Argument of
- Knowledge

SNARK와 STARK의 주요 차이점은 STARK가 갖는 확장성과 투명성입니다. STARK는 proof가 선형적으로 확장되기 때문에 확장 가능한 반면, SNARK proof는 준선형적으로만 확장됩니다. 이 때문에 STARK는 대규모 트랜잭션에 선호됩니다.

또한 SNARK는 더 중앙화된 신뢰 설정에 의존하는 대신, 공개적으로 검증 가능한 무작위성을 사용해 prover와 verifier 간의 상호작용을 설정할 수 있기 때문에 투명합니다.

### Single 대 multi-round rollup

Optimistic rollup의 두 가지 주요 유형은 각각 Optimism과 Arbitrum이 사용하는 single round rollup과 multi-round rollup입니다. Verifier가 Optimism 상의 트랜잭션에 이의를 제기하기 위해 fraud proof를 제출하면, proof 전체가 EVM에서 실행되는데, 이는 일주일이라는 이의 제기 지연 시간\(DTD\)에만 제한되는 비교적 빠르고 간단한 과정입니다.

반면 Arbitrum의 fraud proof 검증 과정은 오프체인의 대화형 이의 제기 검증 과정에 의존하며, 여기서 주장자와 이의 제기자는 여러 라운드에 걸쳐 트랜잭션 구간을 반복적으로 좁혀나가다가 의견이 갈리는 구간을 찾아냅니다.

## Validity proof와 fraud proof는 어떤 점에서 다른가요?

ZK proof와 fraud proof는 필요한 계산량, 트랜잭션을 검증하는 데 걸리는 시간, 보안성, 구현 난이도 등 여러 면에서 다릅니다.

### 1. Validity proof는 fraud proof보다 계산량이 더 많이 필요합니다

ZK proof는 본질적으로 수학적으로 검증하기 어렵고, 진정한 zero knowledge 검증 과정에 필요한 기술적 특성 때문에 대체로 방대한 계산이 필요합니다.

Fraud proof는 배치당 약 40,000 gas로 대체로 더 저렴한 반면, ZK SNARK proof는 500,000 gas가 필요합니다. 하지만 optimistic rollup은 fraud proof가 결과를 입증하거나 반증하기 위해 모든 데이터를 메인 블록체인에 다시 게시해야 하기 때문에, ZK SNARK가 온체인에서는 더 저렴합니다.

### 2. Validity proof는 즉각적인 반면, fraud proof는 이의 제기 지연 시간이 있습니다

ZK proof와 fraud proof의 주요 차이점 중 하나는, ZK proof는 트랜잭션을 즉시 검증하는 반면 fraud proof는 트랜잭션 처리를 늦추는 본질적인 이의 제기 지연 시간\(DTD\)을 갖는다는 것입니다. 특정 배치에 대해 verifier들이 fraud proof를 제출하지 않은 경우에만 해당 배치가 실제로 Ethereum에 게시됩니다.

### 3. Validity proof는 더 탈중앙화되어 있고 데이터가 더 안전합니다

ZK proof는 최소한의 상호작용\(예: validator에게 proof를 공유하는 것만\)만 필요하고, 이 과정이 안전하게 이루어질 수 있기 때문에 매우 탈중앙화되어 있습니다.

또한 proof가 zero knowledge이고 완벽하게 정확하기 때문에, validity proof는 사용자 프라이버시를 보호하고 L1 체인에 대한 51% 공격과 같은 심각한 위협의 위험을 최소화합니다.

반면 optimistic rollup은 verifier가 fraud proof를 제출해야 하는데, 이는 트랜잭션 상태 이의 제기가 배치에 전달되는 것을 막기 위해 가로채이거나 DDoS 공격을 받을 수 있습니다.

### 4. Validity proof는 구현하기가 더 어렵습니다

Optimistic rollup, 그리고 결과적으로 fraud proof는 어떤 EVM이나 [Optimistic Virtual Machine](https://www.alchemy.com/overviews/optimistic-virtual-machine)\(OVM\)에서도 작동할 수 있지만, zero knowledge proof와 ZK rollup은 zero knowledge Ethereum Virtual Machine\([zkEVMs](https://www.alchemy.com/overviews/zkevm)\)이라는 특수한 가상 머신을 필요로 합니다. 이러한 가상 머신은 ZK 계산 및 암호학적 validity proof와 함께 작동하는 방식으로 스마트 컨트랙트를 실행할 수 있습니다.

아주 최근까지도 zkEVM은 이론적으로만 가능하다고 여겨졌으며, 지금도 EVM을 ZK proof를 지원하도록 감싸는 것은 어려운 작업입니다. 하지만 ZK 분야에서는 ZK proof의 처리량과 확장성을 높이는 새로운 개발들이 이루어지고 있습니다.

가장 주목할 만한 것은 Polygon이 [자체 rollup 기술](https://www.alchemy.com/overviews/polygon-zk-rollups)을 개발하고 있다는 점인데, 이는 recursive ZK SNARK를 사용해 오프체인 트랜잭션을 더 효율적으로 처리한 뒤 메인 체인으로 돌아옵니다. Recursive proof는 여러 트랜잭션 블록을 한 번에 증명한 다음 집계된 블록까지 증명하는 방식으로 작동합니다.

본질적으로 SNARK가 다른 SNARK를 증명하는 셈이며, 그 결과 여러 개의 rollup된 트랜잭션보다 훨씬 효율적인 하나의 최종 트랜잭션이 만들어집니다. Polygon의 Polygon Zero는 이러한 recursive proof를 생성하기 위해 **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\)의 도입으로 완화됩니다.

## 어떤 layer-2 스케일링 솔루션을 사용해야 하나요?

최근까지 ZK proof는 구현하기 어렵고 계산량이 훨씬 많았기 때문에 fraud proof와 optimistic rollup이 선호되었지만, zero knowledge 분야의 다양한 새로운 발전으로 인해 ZK rollup은 그 어느 때보다 접근하기 쉬워지고 있습니다.

zkEVM이 늘어나고 더 안전하며 정보 노출이 없는 비대화형 트랜잭션이 보장됨에 따라, ZK rollup은 떠오르는 layer-2 스케일링 솔루션의 대안으로 자리 잡고 있습니다.
