# 零知识证明

零知识证明（Zero-Knowledge Proof，ZKP）是现代密码学中最重要的概念之一，也是当前区块链技术发展最活跃的前沿领域。它允许一方（证明者）向另一方（验证者）证明某个陈述是正确的，而**无需透露除该陈述本身之外的任何信息**。

## 基本概念

1985 年，Goldwasser、Micali 和 Rackoff 在论文《The Knowledge Complexity of Interactive Proof-Systems》中首次提出了零知识证明的概念。

一个零知识证明系统需要满足三个核心性质：

* **完备性 (Completeness)**：如果陈述为真，诚实的证明者总能让诚实的验证者信服。
* **可靠性 (Soundness)**：如果陈述为假，不诚实的证明者无法使验证者相信（除非概率极低）。
* **零知识性 (Zero-Knowledge)**：验证者在验证过程中除了知道陈述为真之外，不会获得任何其他信息。

## 经典比喻：阿里巴巴洞穴

想象一个环形洞穴，中间有一道只能用密码打开的门。Alice 想向 Bob 证明她知道密码，但又不想把密码告诉 Bob。

1. Bob 在洞穴入口等待。
2. Alice 随机选择从左边或右边进入洞穴。
3. Bob 走到入口处，随机喊 Alice 从左边或右边出来。
4. 如果 Alice 从 Bob 指定的方向出来，意味着她可能知道密码（能打开门），也可能是猜对了（50% 的概率）。

重复这个过程多次（如 20 次），如果 Alice 每次都能从指定方向出来，则 Bob 可以非常确信 Alice 知道密码，但 Bob 始终没有获得密码本身。

## 主要类型

### zk-SNARKs

**Zero-Knowledge Succinct Non-Interactive Argument of Knowledge**

* **Succinct (简洁)**：生成的证明非常小，验证速度非常快。
* **Non-Interactive (非交互)**：证明者只需发送一次证明，验证者即可验证，无需来回通信。
* **需要可信设置 (Trusted Setup)**：需要一个初始化阶段生成公共参数，如果该阶段的“有毒废料”泄露，系统安全性将受损。

代表项目：**Zcash**（首个将 zk-SNARKs 用于加密货币的项目）、**zkSync**。

### zk-STARKs

**Zero-Knowledge Scalable Transparent Argument of Knowledge**

* **Scalable (可扩展)**：证明生成和验证时间随问题规模增长更优。
* **Transparent (透明)**：不需要可信设置，避免了安全隐患。
* **证明体积较大**：相比 SNARKs，生成的证明更大。

代表项目：**Starknet**、**StarkEx**。

### 其它主流证明系统（2026 更新）

随着技术迭代，通用的证明系统（Universal SNARKs）成为主流，只需一次可信设置（或者像 STARKs 一样完全不需要）即可支持任意电路。

* **Plonk**：目前应用最广泛的通用 SNARK 方案之一，支持可更新的可信设置（Updatable Trusted Setup）。
* **Halo2**：由 Zcash 团队开发，利用递归证明（Recursive Proofs）实现极高的扩展性，无需可信设置。

## 在区块链中的应用

### 1. ZK Rollups (Layer 2 扩容)

ZK Rollups 利用零知识证明在链下批量处理交易，然后将一个简洁的有效性证明提交到 Layer 1。Layer 1 只需验证这个证明，无需重新执行所有交易，从而大幅提升吞吐量并降低成本。

主流项目：**zkSync Era**、**Starknet**、**Polygon zkEVM**、**Scroll**。

#### zk-eVM 实现对比（2026年3月数据）

当前市场上有多个 zk-eVM（零知识证明以太坊虚拟机）实现，各有权衡：

| 项目                    | TPS         | EVM兼容度 | TVL   | 主网生效    | 关键特性           |
| --------------------- | ----------- | ------ | ----- | ------- | -------------- |
| **zkSync Era**        | 4,000-7,000 | 99%    | $650M | 2023年3月 | 最接近EVM；社区规模大   |
| **Polygon zkEVM**     | 2,000-4,000 | 99.9%  | $420M | 2023年3月 | 与Polygon生态紧密集成 |
| **Scroll**            | 1,000-2,000 | 99.8%  | $180M | 2024年2月 | 设计更保守但安全性高     |
| **Linea (ConsenSys)** | 1,500-3,000 | 97%    | $320M | 2024年7月 | 背靠MetaMask生态   |

**关键指标说明**：

* **TPS (每秒交易数)**：理论峰值，实际受网络状况影响。zk Rollup 通常可达到4,000-7,000 TPS，相比以太坊mainnet的15 TPS提升数百倍。
* **EVM兼容度**：99%意味着大部分Solidity代码可直接部署，但某些底层操作码可能不完全兼容。
* **TVL (总锁仓量)**：跨链桥接资产总额。
* **证明延迟**：
  * zkSync Era：平均10-60秒生成证明
  * Polygon zkEVM：平均3-15分钟
  * Scroll：平均15-45分钟

**生态对比**：

* **zkSync Era**：DeFi生态相对成熟，dapp数>200，包括Uniswap、Lido、Aave等
* **Polygon zkEVM**：继承Polygon生态优势，与Layer 2 Arbitrum/Optimism形成三角竞争
* **Scroll**：强调安全性和透明开发，学术研究基础深厚（来自Berkeley研究者）
* **Linea**：ConsenSys支持，与MetaMask集成，对主流用户友好

**性能与安全权衡**：

zk-eVM的设计涉及多个权衡：

| 权衡维度  | 求快求省                | 求稳求安全              |
| ----- | ------------------- | ------------------ |
| 证明系统  | 使用快速但较新的方案（Plonk）   | 使用经过验证的方案（Groth16） |
| 证明延迟  | <1分钟                | 5-15分钟             |
| EVM兼容 | 97-98%（某些opcodes近似） | 99.9%（完全兼容）        |
| 风险偏好  | 中高                  | 低                  |
| 适用场景  | 高频交易、游戏             | 资产托管、DeFi借贷        |

### 2. 隐私保护

* **隐私交易**：如 Zcash，用户可以进行“屏蔽”交易，隐藏发送方、接收方和金额。
* **隐私身份**：用户证明自己满足某些条件（如年龄大于 18 岁）而不透露具体信息。

### 3. 跨链桥安全

传统跨链桥依赖多签或委员会，存在单点故障风险。基于 ZKP 的跨链桥可以通过数学证明来验证源链上的事件确实发生，无需信任第三方。

## 挑战与展望

* **计算开销**：生成零知识证明需要大量计算资源，虽然验证很快，但证明生成仍是瓶颈。硬件加速（如 FPGA、GPU、ASIC）是重要的研究方向。
* **开发复杂度**：编写 ZK 电路需要专业知识。诸如 **Circom**、**Noir**、**Cairo** 等 ZK 专用语言正在降低开发门槛。
* **标准化**：不同 ZK 方案之间缺乏互操作性，行业标准尚在形成中。

零知识证明被认为是继智能合约之后，区块链领域最重要的技术突破。随着技术的成熟，它将在隐私保护、可扩展性和可验证计算等方面发挥越来越重要的作用。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/blockchain_guide/05_crypto/zkp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
