> For the complete documentation index, see [llms.txt](https://yeasy.gitbook.io/blockchain_guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yeasy.gitbook.io/blockchain_guide/05_crypto/zkp.md).

# 零知识证明

零知识证明（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 方案之间缺乏互操作性，行业标准尚在形成中。

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