# 零知识证明

零知识证明（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 只需验证这个证明，无需重新执行所有交易，从而大幅提升吞吐量并降低成本。

代表项目会随主网状态、治理和生态迁移变化，应以各项目官方文档和公告为准。审计或选型文档不要把 TPS、TVL、证明延迟等动态指标写成长期静态表格。

#### zkEVM 与 ZK Rollup 项目状态核查（2026年4月）

当前市场上有多个 ZK Rollup / zkEVM 实现，各有权衡。建议用以下维度做实时核查，而不是固化一张很快过期的排名表：

| 核查维度    | 应确认的问题                                |
| ------- | ------------------------------------- |
| 主网状态    | 是否仍在积极维护，是否有迁移、降级支持或停止排序器的官方公告        |
| EVM 兼容性 | 是字节码等价、Solidity 源码兼容，还是需要特定编译器/账户抽象约束 |
| 数据可用性   | 交易数据是否发布到 L1，是否依赖外部 DA 层或委员会          |
| 排序器/证明者 | 排序器、证明者和升级权限是否中心化，是否有强制退出路径           |
| 指标来源    | TPS、TVL、费用和证明延迟是否来自官方仪表盘或链上浏览器的最新数据   |

**Polygon zkEVM 状态**：Polygon 官方已公告 Polygon zkEVM Mainnet Beta 将在 2026 年 7 月 1 日停止 sequencer。到该日期前，链和桥仍可运行用于迁移资产；新项目选型不应再把它写成与其他活跃通用 zkEVM 同等的长期建设目标。

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

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

| 权衡维度  | 求快求省                         | 求稳求安全              |
| ----- | ---------------------------- | ------------------ |
| 证明系统  | 使用较新或高度定制的证明栈，优化证明生成成本       | 使用更成熟、审计更充分的证明组件   |
| 证明延迟  | 更频繁提交证明，依赖更强的 prover 性能和运营能力 | 更保守的批次与证明节奏，确认体验较慢 |
| EVM兼容 | 源码级兼容或存在特定编译器/操作码约束          | 更接近字节码级兼容，迁移成本更低   |
| 风险偏好  | 中高                           | 低                  |
| 适用场景  | 高频交易、游戏                      | 资产托管、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.
