零知识证明技术演进:从理论突破到扩容应用

robot
摘要生成中

零知识证明:从理论到应用的演进

零知识证明的发展历程

零知识证明体系起源于1985年Goldwasser、Micali和Rackoff发表的论文《交互式证明系统的知识复杂性》。该论文探讨了在交互系统中,通过多轮交互来证明一个陈述正确性所需交换的知识量。如果可以在不泄露任何额外信息的情况下完成证明,就称之为零知识证明。

早期的零知识证明系统效率和实用性都不高,主要停留在理论层面。直到近10年,随着密码学在加密货币领域的广泛应用,零知识证明才逐渐成为一个重要研究方向。其中,开发通用、非交互式、证明规模有限的零知识证明协议是一个关键目标。

零知识证明的突破性进展是Groth在2010年发表的论文,奠定了zk-SNARK的理论基础。2015年,Zcash将零知识证明应用于保护交易隐私,开启了零知识证明在实际场景中的广泛应用。

此后,一些重要的学术成果包括:

  • 2013年的Pinocchio协议,大幅提升了证明和验证效率
  • 2016年的Groth16,进一步精简了证明规模并提高验证效率
  • 2017年的Bulletproofs,提出了无需可信设置的短证明算法
  • 2018年的zk-STARKs,提出了抗量子的零知识证明协议

其他如PLONK、Halo2等新发展也在不同方面改进了zk-SNARK。

HashKey ZK 101 第一期:历史原理与行业

零知识证明的主要应用

零知识证明目前最广泛的两个应用是隐私保护和扩容。

早期的隐私交易应用如Zcash和Monero等曾备受关注,但隐私需求并未如预期那样突出,这类项目逐渐退居二线。相比之下,扩容的需求日益迫切。特别是以太坊2.0转向以rollup为中心的路线后,基于零知识证明的扩容方案重回业界焦点。

隐私交易

隐私交易的代表性项目包括:

  • Zcash:使用zk-SNARKs实现交易隐私
  • Monero:采用Bulletproofs算法
  • Tornado Cash:基于以太坊的混币池,使用zk-SNARKs

Zcash的隐私交易流程包括系统设置、密钥生成、铸币、交易证明生成、验证和接收等步骤。但Zcash也存在一些局限性,如基于UTXO模型,难以与其他应用结合,实际隐私交易使用率不高。

Tornado Cash采用单一大混币池的方式,具有更好的通用性。它基于Groth16的zk-SNARK实现,可以保证存入的币才能被提取,且每个币只能被提取一次。

HashKey ZK 101 第一期:历史原理与行业

扩容

零知识证明在扩容方面的应用主要是zk-rollup。zk-rollup的核心角色是Sequencer和Aggregator。Sequencer负责打包交易,Aggregator将大量交易合并并生成零知识证明,用于更新以太坊状态树。

zk-rollup的优点是费用低、交易速度快、可保护隐私。缺点是生成证明计算量大,且SNARK需要可信设置。

目前主要的zk-rollup项目包括:

  • StarkNet:使用zk-STARKs,不支持EVM
  • zkSync:采用PLONK,支持EVM
  • Aztec:开发了PLONK协议,隐私优先
  • Scroll:致力于实现EVM兼容的zk-rollup

EVM兼容性是zk-rollup面临的一大挑战。目前的解决方案主要有两种:完全兼容Solidity操作码,或设计新的ZK友好虚拟机并兼容Solidity。EVM兼容性的提升将极大影响ZK生态的发展。

HashKey ZK 101 第一期:历史原理与行业

zk-SNARK的基本原理

zk-SNARK代表"零知识简洁非交互式知识论证"。它具有以下特性:

  • 零知识:不泄露额外信息
  • 简洁:验证成本低
  • 非交互:无需多轮交互
  • 论证:计算上可靠
  • 知识:证明者必须知道有效信息

Groth16的zk-SNARK实现原理包括以下步骤:

  1. 将问题转换为电路
  2. 将电路转化为R1CS形式
  3. 将R1CS转换为QAP形式
  4. 生成可信设置参数
  5. 生成和验证零知识证明

HashKey ZK 101 第一期:历史原理与行业

零知识证明技术正在快速发展,未来有望在更多领域发挥重要作用。

HashKey ZK 101 第一期:历史原理与行业

ZK1.15%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 分享
评论
0/400
暂无评论
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)