﻿---
title: "零知识证明"
description: "准确理解零知识证明：完备性、可靠性、模拟、见证、设置假设、区块链用途与验证风险。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 零知识证明

> 仅供教育参考，不构成投资或安全建议。有效证明只在证明系统的假设下保证已编码的陈述。

<a id="answer"></a>

## 直接答案

零知识证明（ZKP）让证明者在不泄露用于建立陈述的秘密见证的情况下，使验证者相信该陈述为真。其形式化保证不是“交互记录中完全没有信息”，而是除公开陈述本身能够推出的信息外，合规验证者学到的内容都可以在不知道见证的情况下模拟出来。

证明系统需要分别考察三个性质：**完备性**，即持有有效见证的诚实证明者会被接受；**可靠性**，即虚假陈述仅以可忽略概率被接受；**零知识性**，即见证在规定的威胁模型下保持隐藏。许多实用系统属于计算型论证：可靠性只针对计算能力受限的攻击者成立，并依赖明确列出的密码学假设。

零知识性也不同于简洁性和有效性。证明可以是零知识但验证成本很高，可以很简洁却公开数据，也可以正确证明一个已编码关系，但该关系并不符合应用原本想执行的规则。

<a id="mechanism"></a>

## 工作原理

先定义公开陈述 `x`、私密见证 `w` 和精确关系 `R`。证明者生成证明，验证者使用公共参数或验证密钥进行判断。预期的可靠性主张可概括为：

`Verify(vk, x, proof) = 1 => exists w: R(x, w) = 1`

该式只说明已编码关系存在合适见证。它不会公开见证，也不会认证链下输入，更不能证明 `R` 已覆盖应用想要执行的所有业务规则。

- **交互式与非交互式。** 早期 ZK 协议交换挑战和响应。非交互式系统把证据装入一个证明，通常依赖设置材料、随机预言机模型或两者。
- **设置模型。** Groth16 的证明很小，但需要针对电路的结构化设置。PLONK 类系统可使用通用、可更新的结构化参考字符串。STARK 构造不需要结构化可信设置，但通常证明更大，并依赖哈希和低度测试。
- **算术化与承诺。** 实现会把程序转换成代数约束，对由见证推导的值作承诺，再用随机化检查，让验证者无需重做计算或查看见证便能检验结果。
- **知识证明。** 有些系统还主张通过证明提取器形式化地说明，被接受的证明者“知道”一个见证。这是独立性质，不能仅从“零知识”标签推断。

<a id="example"></a>

## 示例

假设 `x` 包含一个承诺和 `100 units` 的门槛，`w` 包含被承诺的余额与致盲因子。关系会检查承诺能否正确打开，以及余额是否至少为 `100 units`。有效的零知识证明可以确认这项关系而不披露准确余额。

但结果本身不能证明证明者拥有该账户、资金未被占用，或同一承诺没有重复使用。这些主张需要额外约束和公开输入。

在隐私型加密货币中，电路可以在隐藏部分交易细节的同时强制检查授权、价值守恒与防重复。在有效性 Rollup 中，证明可以确认一批状态转换；系统仍可能公开交易数据，因此“ZK Rollup”不自动等于私密交易。

<a id="risks"></a>

## 风险

- 不完整或错误的电路可能完美证明错误规则。
- 缺失域分离、链标识、根或承诺，可能把证明绑定到错误上下文。
- 对需要可信设置的系统，设置被攻破或“有毒废料”未销毁会破坏可靠性。
- 证明器、验证器、交互记录、曲线、哈希、编译器或智能合约的缺陷可能使理论保证失效。
- 公开输入、证明时间、交易图、费用和网络元数据可能泄露形式化 ZK 陈述之外的信息。
- 见证生成、浏览器、硬件或远程证明服务中的侧信道可能在生成证明前暴露秘密。
- 验证证明并不提供数据可用性、排序器活性、结算最终性、抗审查性或安全升级。
- 不同证明系统的密码学假设和具体安全余量不同；不能只按证明大小或验证速度评定安全性。

<a id="misconceptions"></a>

## 常见误区

- **“零知识意味着不公开任何数据。”** 公开陈述和有意暴露的输出仍然可见，证明模型之外的元数据也可能泄露。
- **“证明有效就代表应用正确。”** 它只表示已编码关系被接受，电路、集成和策略错误仍然可能存在。
- **“所有 ZK 系统的信任假设相同。”** 设置仪式、曲线、哈希、交互记录模型和升级控制均有实质差异。
- **“ZK 就是加密。”** 加密隐藏数据以供获授权者解密；ZK 证明无需发送见证供人解密便能建立主张。

<a id="related"></a>

## 相关主题

- [密码学哈希](/zh-cn/crypto/cryptographic-hash/)
- [隐私币](/zh-cn/crypto/privacy-coin/)
- [有效性证明](/zh-cn/crypto/validity-proof/)
- [ZK Rollup](/zh-cn/crypto/zk-rollup/)

<a id="sources"></a>

## 来源

- [The Knowledge Complexity of Interactive Proof Systems](https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Zero%20Knowledge/The_Knowledge_Complexity_Of_Interactive_Proof_Systems.pdf) - SIAM Journal on Computing（查阅日期：2026-08-22）
- [On the Size of Pairing-based Non-interactive Arguments](https://eprint.iacr.org/2016/260.pdf) - IACR Cryptology ePrint Archive（查阅日期：2026-08-22）
- [Scalable, transparent, and post-quantum secure computational integrity](https://eprint.iacr.org/2018/046.pdf) - IACR Cryptology ePrint Archive（查阅日期：2026-08-22）
- [PLONK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge](https://eprint.iacr.org/2019/953.pdf) - IACR Cryptology ePrint Archive（查阅日期：2026-08-22）
- [Zcash Protocol Specification](https://zips.z.cash/protocol/protocol.pdf) - Zcash Protocol Specification（查阅日期：2026-08-22）

Source: https://wiki.fcontext.com/zh-cn/crypto/zero-knowledge-proof/index.mdx
