零知识证明是一种密码学方法,让证明者在不公开秘密内容的情况下,向验证者证明某个陈述或计算结果确实成立。
它可以证明“我已满 18 岁”而不披露生日,证明一笔转账余额充足而不公开余额,也能证明数千笔链下交易执行正确而不让 Ethereum 重新计算。隐私和扩容因此成为 ZK 技术最重要的两类应用。
但 ZK 并非天然隐藏一切,也不是无需成本的“终极答案”。ZK Rollup 可以公开交易数据,仅用有效性证明保证计算正确;隐私协议则需要把敏感数据作为秘密见证,并认真处理元数据、密钥、可信设置、数据可用性和合约漏洞。
若希望先了解零知识证明与 AI、跨链、预言机及模块化区块链的整体关系,可阅读2025 年 Web3 前沿赛道全景图。
零知识证明由证明者和验证者参与。证明者掌握一个秘密或完成了一段计算,希望让验证者相信陈述为真;验证者通过公开规则检查证明,而不获得生成证明所用的全部私密输入。
陈述可以是“这个哈希对应的原文由我掌握”“账户余额足够支付”“某人属于合格用户集合”,也可以是“这批交易从旧状态正确计算出新状态”。秘密输入通常称为 Witness,即见证。
证明系统把程序或规则转换为数学约束。证明者给出满足约束的见证并生成短证明,验证者使用验证密钥或公开参数检查。验证成功只说明该陈述满足已定义规则,不保证规则本身符合业务真实意图。
完整性表示:如果陈述真实,诚实证明者使用正确见证生成的证明,应被诚实验证者接受。系统不能频繁拒绝合法用户,否则即使密码学安全,也无法形成可靠产品。
可靠性又称健全性,表示:如果陈述为假,作弊者几乎不可能构造能通过验证的证明。攻击者不能凭空证明自己有余额、满足年龄要求,或让无效交易批次被 L1 接受。
零知识性表示:验证者除“陈述有效”之外,不应学到见证内容。严格定义通常通过模拟器说明,验证过程得到的信息可以在不知道秘密的情况下被模拟,因此证明没有额外泄露。
这三项必须同时理解。一个系统可能能证明计算正确,却没有隐藏公开输入;也可能保护见证,却在应用层泄露地址、时间、Gas 或交互模式。隐私需要密码学和产品设计共同完成。
第一步是定义要证明的程序。例如要求证明者知道某个密码,其哈希等于公开值;或证明一批交易的签名、Nonce、余额与状态根变更都符合规则。
第二步是算术化。系统把程序转换成有限域上的多项式、约束系统或执行轨迹。加法、乘法、范围检查和哈希都必须用证明系统能处理的形式表示,复杂程序会产生大量约束。
第三步是生成 Witness。证明者运行程序得到私密中间值与结果,并按电路要求排列见证。错误见证无法满足约束,理论上不能生成有效证明。
第四步是 Proving。证明者执行较重的密码学计算,把庞大见证压缩成较短证明。这个阶段可能需要大量 CPU、GPU、内存或专用硬件,是 ZK 系统的主要成本来源。
第五步是 Verification。验证者只使用公开输入、证明和验证密钥检查少量密码学等式,不必重新执行原计算。正是“证明昂贵、验证便宜”的不对称,让一条链可以验证大量链下计算。
早期零知识协议要求证明者与验证者多轮交互。证明者先提交承诺,验证者随机提出挑战,证明者返回响应。重复足够多次后,作弊者靠猜测通过的概率变得极低。
区块链更适合非交互式证明。证明者一次生成可公开验证的证明,任何节点都能独立检查,无需与原证明者在线对话。Fiat-Shamir 变换常用哈希函数把交互中的随机挑战转换成确定挑战。
非交互证明需要公开参数或透明随机性。一些 SNARK 使用可信设置生成 Common Reference String;另一些系统采用通用设置、可更新设置或无可信设置方案。选择不同系统会影响证明大小、速度、透明度和升级成本。
SNARK 代表简洁非交互式知识论证。它通常生成很小的证明,链上验证快速且 Gas 较低,适合隐私支付、身份和 Rollup。Groth16、PLONK、Halo2 等属于不同证明体系,不能只用一个名称概括全部属性。
部分 SNARK 需要可信设置。如果仪式产生的秘密参数没有彻底销毁,掌握 Toxic Waste 的攻击者可能伪造证明。多方计算仪式通过让许多参与者贡献随机性降低风险,只要至少一名参与者诚实销毁秘密即可保护系统。
Halo2 等系统支持递归和无特定电路可信设置设计。无论采用何种方案,项目仍需公开参数来源、电路版本、密码学曲线、审计和升级权限,不能只宣传“使用 SNARK”。
STARK 代表可扩展透明知识论证。它使用可公开验证的随机性,通常不需要传统可信设置,并基于哈希等密码学假设,常被认为具有更好的后量子研究属性。
STARK 对大规模计算的证明生成具有扩展优势,但原始证明通常比 SNARK 大,链上验证成本也可能更高。递归证明和压缩技术可把多个 STARK 证明聚合,降低最终结算成本。
Starknet 使用基于 STARK 的证明体系,Cairo 则是为可证明计算设计的执行环境。SHARP 可以聚合多个程序的证明并递归压缩,让不同应用分摊证明与 Ethereum 验证成本。

隐私应用把余额、交易金额、身份属性或名单成员资格作为秘密见证,只公开验证所需的最小陈述。验证者知道用户符合条件,却不需要看到完整原始数据。
Zcash 的 Shielded Transaction 使用 zk-SNARK 证明转账遵守货币规则,例如输入有效、没有重复花费、输出金额守恒,同时隐藏发送者、接收者、金额和 Memo。链仍能拒绝无效交易,却不公开所有财务细节。
身份场景可证明“年龄超过门槛”“来自允许地区”“持有有效凭证”或“是名单中的唯一成员”,而不上传护照原件。Nullifier 可防止同一资格重复领取奖励或重复投票,同时避免在不同应用间直接暴露统一身份标识。
零知识不能自动隐藏网络层信息。IP、钱包充值来源、交易时间、Gas 支付和与透明地址的交互仍可能形成关联。若匿名集合很小,或用户经常在公开与私密模式之间切换,外部观察者仍可推断身份。
ZK Rollup 在 L2 执行和存储大量交易,把交易批次的状态变化摘要、必要数据与有效性证明提交到 Ethereum。L1 验证证明后接受新状态,无需重新执行批次中的每笔交易。
批处理把固定证明与结算成本分摊给大量用户,减少 L1 计算和存储压力。证明验证通过后,状态不需要像 Optimistic Rollup 那样等待完整挑战期来确认计算正确,因此理论上可以更快形成可提款状态。
ZK Rollup 的安全不是只靠证明。L1 合约必须正确验证证明,Rollup 还要提供足够数据,让用户重建状态并在运营者停止服务时退出。Sequencer、Prover、升级管理员和桥合约也可能成为中心化或故障点。
ZKsync Era 使用有效性证明确认批次执行,Starknet 使用 STARK 证明和 Cairo,其他 zkEVM 则努力兼容 Ethereum 开发工具与字节码。它们在虚拟机、证明系统、数据可用性与兼容程度上并不相同。
关于 ZK Rollup、Optimistic Rollup、Validium 和侧链的完整区别,可阅读Layer 2 是什么?以太坊扩容方案完全指南。
zkEVM 是可以对 EVM 或与 EVM 相近执行环境生成有效性证明的系统。它让 Solidity 合约和 Ethereum 工具迁移到 ZK Rollup,同时把交易执行转换成证明电路可验证的数学约束。
EVM 最初不是为 ZK 设计,部分操作码、Keccak 哈希、动态内存和状态访问证明成本很高。项目需要在 Ethereum 等价性、开发兼容性与证明效率之间取舍,因此不同 zkEVM 对字节码和工具的支持程度不同。
还要区分 zkEVM Rollup 与 L1 zkEVM。前者在 L2 执行并把证明提交给 Ethereum;后者希望 Ethereum 验证者用 ZK 证明验证 L1 区块执行,减少所有节点重复计算,提高验证效率和节点可及性。
ZK Rollup 把交易数据或恢复状态所需数据发布到 L1,成本相对高,但用户可依靠 Ethereum 数据重建状态。即使运营者停止服务,用户仍有更强的自主退出基础。
Validium 同样使用有效性证明保证状态转移正确,但数据保存在链外,由数据可用性委员会或其他网络提供。它可以降低费用和提高吞吐,却增加数据被扣留的风险;证明正确不代表用户一定拿得到恢复状态所需数据。
Volition 允许用户或应用在 Rollup 与 Validium 数据模式之间选择。高价值资产可采用 L1 数据可用性,低价值高频交易可选择链外数据。灵活性增加后,钱包和界面必须明确披露每笔资产处于哪种安全模式。
数据可用性与执行有效性是两个独立问题。ZK 证明可以证明“状态变化算对了”,却不能凭空恢复未公开的交易数据。评估扩容项目时,两者都要检查。
去中心化身份可以用 ZK 证明资格、凭证持有和集合成员身份,实现最小披露。用户不必把完整身份证件交给每个应用,验证方只得到业务所需结论。相关背景可阅读去中心化身份 DID:掌控你的数字身份。
储备证明可在不公开全部账户细节的情况下证明资产或负债满足某些约束。它仍不能自动证明资产所有权、负债完整性与托管法律关系,需要审计、签名和其他数据配合。
合规场景可以证明交易满足名单、额度和地区规则,而不公开所有客户数据。隐私机器学习可证明模型按承诺运行或结果来自某个模型,不过大型模型的证明成本仍高,通常需要专用 zkVM、递归和硬件加速。
跨链协议可用 ZK 轻客户端证明另一条链的共识与状态,减少固定多签信任;游戏可证明公平计算;DAO 可实现匿名投票同时防止重复投票;供应链可证明某项条件满足而隐藏商业机密。
复杂程序需要大量约束,Prover 可能消耗显著计算、内存和时间。证明服务集中在少数高性能运营者,会带来可用性、审查和基础设施中心化风险。
电路证明的是被编码的规则。如果开发者漏写约束,攻击者可能提供不符合业务规则却满足电路的见证。验证器会正确接受一个“错误定义的问题”的证明。
使用特定可信设置的证明系统依赖仪式秘密被销毁。若参数生成被破坏,攻击者可能伪造证明而不易被发现。项目应公开仪式、参与者、参数哈希和更新方式。
曲线、哈希、有限域、随机数、编译器和验证合约任何实现错误都可能破坏安全。新证明系统需要长期研究、形式化验证、审计和实际运行验证。
即使 Witness 保密,公开输入、Nullifier、充值与提现金额、网络地址和时间模式仍可能关联用户。隐私应用需要足够匿名集合和安全默认设置。
Rollup 合约、桥、Prover、Sequencer 和验证密钥可能受管理员控制。ZK Proof 阻止无效状态并不自动阻止恶意升级,时间锁、多签和逃生舱仍然重要。
零知识证明擅长证明“输入满足规则”,却不能凭空判断链外输入是否真实。若年龄、学历、资产或现实事件由某个机构签发,系统仍需信任签发者按规则核验并妥善保护密钥。错误凭证进入电路后,也可能生成密码学上完全有效的证明。
因此,身份和合规应用应同时检查凭证来源、撤销机制、有效期限、签发者密钥轮换与预言机安全。ZK 可以减少向验证方披露的数据,却不能消除数据源风险。
隐私不是单笔交易的孤立属性。若某个屏蔽池只有少数用户,或用户存入后立即以相同金额转出,观察者仍可能通过金额、时间、Gas、网络地址与交互习惯进行关联。证明没有泄露 Witness,不代表行为模式没有留下线索。
用户应避免把“无法直接读取明文”误解为“无法追踪”。协议则应评估匿名集合规模、金额标准化、延迟机制、Relayer、网络层隐私与默认钱包流程,同时向用户清楚说明公开字段。
项目常用每秒证明数量、证明大小或验证 Gas 展示性能,但不同电路复杂度、硬件、批次规模与安全参数之间不能直接横向比较。一个简单哈希电路的速度,不能代表完整 zkEVM 执行复杂智能合约时的成本。
评估性能时,应同时查看证明延迟、峰值内存、硬件配置、批次等待、链上数据费、验证费和最终确认时间。还要区分实验室基准、测试网结果与主网长期负载,避免只凭单一指标判断可扩展性。
第一,确认它证明什么。项目应公开陈述、公开输入、秘密见证和安全边界。只说“采用 ZK”却不解释证明内容,无法判断隐私与有效性保证。
第二,确认使用哪种证明系统。检查 SNARK、STARK、PLONK、Halo2 或其他框架,是否需要可信设置,证明大小、生成成本、验证成本与递归方式如何。
第三,检查电路和代码是否开源、审计与测试。证明系统库安全不代表业务电路安全,Rollup 的状态机、桥、升级合约和钱包也需要独立审查。
第四,检查数据可用性。确认交易数据发布在 Ethereum、Blob、独立 DA 网络还是委员会,用户在运营者停止时如何重建状态和退出。
第五,检查系统中心化。了解 Sequencer、Prover、参数生成、升级管理员、暂停者和桥控制权。路线图中的“未来去中心化”不等于当前已经去中心化。
第六,检查用户隐私边界。哪些字段真正隐藏,哪些公开,钱包是否默认保护隐私,Nullifier 能否跨应用关联,IP 与法币入口是否泄露身份。
为了评估零知识证明项目,可使用 ZKP 六维清单。它不是投资评级,也不代表密码学安全认证。
确认秘密见证、公开输入和可能泄露的元数据。有效性证明不一定提供交易隐私,隐私声明必须落实到具体字段和攻击模型。
明确陈述与约束:是证明余额、身份、程序执行、状态转移还是链共识。证明只对已编码规则负责,不对规则外事实负责。
检查证明硬件、成本、Prover 数量、抗审查和失败恢复。单一 Prover 下线可能导致网络停止,即使无法提交无效状态。
查看电路、编译器、证明库、参数和验证合约是否开源、审计与形式化验证。业务约束缺失是最危险的实现错误之一。
确认数据发布位置、恢复状态与强制退出方式。Validity Proof 保证计算正确,Data Availability 决定用户能否独立继续使用状态。
核查多签、时间锁、暂停、桥、Sequencer 和验证密钥。管理员若能立即替换验证器,可能绕过用户对当前证明系统的信任。
它只保护被设计为秘密见证的信息。公开输入、交易时间、地址关联、IP 和充值提现路径仍可能泄露。具体隐私取决于协议与使用方式。
不是。多数 ZK Rollup 使用有效性证明扩容,但交易数据和账户活动可能公开。要获得隐私,还需专门的屏蔽状态、电路和钱包设计。
没有统一答案。SNARK 证明小、验证便宜,部分方案需要可信设置;STARK 通常透明且适合大计算,但证明更大。安全还取决于实现、参数和审计。
正常验证不会恢复 Witness。若密码学假设、实现、密钥管理或应用元数据失效,隐私仍可能受损,因此不能把“零知识”理解为永久绝对匿名。
它在链下执行大量交易,把证明和批次数据成本分摊给许多用户。费用仍受证明、数据发布、L1 Gas、Sequencer 和桥接影响,不保证始终便宜。
可信设置是生成证明与验证公共参数的仪式。若残留秘密被攻击者掌握,部分系统可能被伪造。多方仪式与透明证明系统可降低相关风险。
普通用户不必掌握公式,但应理解项目证明什么、是否保护隐私、数据放在哪里、谁控制升级,以及桥和钱包的风险。
零知识证明把“相信执行者”转变为“验证数学证明”。它可以在不披露秘密的情况下证明资格与交易有效,也能让 Ethereum 用一次验证确认大量链下计算。
SNARK、STARK、递归证明、zkEVM 和 zkVM 正在改善证明效率与可编程性。Zcash 展示隐私支付,Starknet 与 ZKsync 展示有效性 Rollup,身份协议则展示选择性披露与防女巫能力。
但 ZK 只保证被正确编码并验证的陈述。电路漏洞、可信设置、Prover 中心化、数据不可用、管理员升级和元数据泄露,都不会因添加“ZK”标签自动消失。
从Web3 技术栈:从底层公链到应用层看,零知识证明横跨密码学、执行层、扩容、身份与应用。评估时应分开检查证明系统、数据、运营与用户体验。
回到2025 年 Web3 前沿赛道全景图,可以继续把 ZK 与 AI、跨链、预言机、隐私计算和模块化区块链放在同一框架中理解。
如需使用独立钱包连接 Web3 应用,可选择 Hotcoin Web3 Wallet;需要移动端行情与交易工具,可前往 Hotcoin App;浏览更多教育内容,请访问 Hotcoin。
风险提示: 本文仅用于教育与信息分享,不构成投资、交易、密码学、智能合约开发、法律或税务建议。ZK 项目可能面临电路与验证器漏洞、可信设置、证明密钥泄露、Prover 与 Sequencer 中心化、数据不可用、桥接、合约升级、隐私元数据和监管风险;参与前请核验最新官方文档、审计、参数、数据模式、管理员权限和退出机制,并只投入可承受损失的资产。


