前三篇文章介绍了 ZK 基本原理、非交互式证明基本原理、zk-SNARK 与 zk-STARK 区别与关联。
本系列将试图用通俗举例和语言,帮助大家理解复杂概念。本系列非学术论述,举例只为帮助大家通俗理解。如有错误,欢迎指正。更严谨的表述,欢迎大家查看专业论文学习。
前情回顾,
1/ 零知识证明,英文为 Zero Knowledge Proofs,简写为 ZK 或 ZKP。
zkXXX,即代表应用了零知识证明。
2/ 零知识证明技术,要在证明速度、验证速度、整体大小之间做取舍,继而产生的用户体验不同。
zk-SNARK 诞生时间久,经过验证,应用比较成熟,并诞生了 Groth16、PLONK、Halo2 等多技术分支。zk-STARK 相较而言,诞生时间较短,仍需时间验证完善。
Manta 采用 Groth16,是目前最快、数据量最小的 zk-SNARK。Manta在椭圆曲线密码(FH-ECC)算法等基础上,进一步优化升级,ZK 生成速度比Zcash快十倍。交互确认时间仅需 2-3秒。
3/ ZK 开发逐渐模块化。zk-SNARK 与 zk-STARK 之间,可通过切换多项式承诺,进行相互转换。且,代码终会开源,所以长期看,单靠技术无法构筑壁垒。
正式开始本篇内容。
什么是 Rollup ?
Roll,卷、滚的意思。Up,向上、起来的意思。Rollup 就是“卷起来”。
当然,这不是内卷那个“卷”,而是像面饼一样,把食材统统卷进去的那个“卷”。
Rollup,就是把许许多多多笔交易“卷”起来,在自己的网络里处理掉。
Rollup 通常运行一组中心化定序器(Sequencer),为 Rollup 上的交易进行排序。定序器就像中心化的服务器。
Rollup 与 以太坊主链关系,举个便于理解但不十分严谨例子,如同初期的支付宝与银行。
资金从以太坊主网转入 Rollup,如同把钱从银行卡转入支付宝。
用户在 Rollup 交互,交互信息并不直接提交到以太坊主链上,而是由 Rollup 定序器进行排序。
这个过程,称为“链下扩容”,所谓“链下”指的是在以太坊链下。
支付宝初期,用户直接使用支付宝余额交易,银行对具体交易信息,并不知情。支付宝相对银行,也是“链下”。
定序器会对 Rollup 里的交易,统一进行排序、打包、压缩,隔一段时间提交到以太坊主链,由以太坊主链提供结算、校验交易数据,以减轻主链负担。
主链矿工可以通过欺诈证明(Fraud Proof,通常由Optimistic Rollup 采用)或有效性证明(Validity Proof,通常由 zk-Rollup 采用),验证 Rollup 交易数据是否真实。
举个例子,用户在 Aribitrum 上,使用 Gmx 疯狂进行衍生品交易。这些操作,都让 Aribitrum “卷”起来处理掉了,这些交互仅在 Aribitrum 当前 Rollup 上发生,不会造成以太坊主链拥堵。
Aribitrum 会将一段时间内的交互信息排序、打包、压缩、提交到以太坊主链,由以太坊全节点校验交易数据真实性,所以,Rollup 称为执行层,主要负责执行交易。
Optimistic Rollup 与 ZK Rollup?
Optimistic 与 ZK,是以太坊主链全节点,校验 Rollup 交易数据真实性的方式,可以理解成是对账方式。
Rollup 是处理交易的方式。
这俩都是 Rollup,所以,处理交易方式一致,都是“卷起来”。区别在于,对账方式:
1/ Optimistic,意为“乐观的、积极的”。
Optimistic Rollup“乐观的”默认交易信息真实有效。
万一有人提供虚假交易信息呢?
若使用 Aribitrum 或 Optimism,会发现,把代币跨回其他网络,需要等待几天时间,即“等待期”。
“等待期”内,以太坊主网全节点都可以发起挑战,证明某交易为假。
由于 Rollup 数据层和结算层仍使用以太坊,相当于根账本在以太坊上,所以,Rollup 自身是无法篡改、作弊的。
若挑战成功,则会罚没作弊者保证金,交给挑战者,并回滚该区块内的交易。
2/ zk-Rollup
还记得 ZK 的基本原理及特性嘛?
证明者(Prover)和验证者(Verifier)。证明者生成证明,验证者在不获取信息本身的前提下,验证该证明。
ZK 有以下特性:
完备性(Complete):提交者若确实掌握了答案,那他能找到方法向验证者证明为真,即真的假不了。
合理性(Sound):若提交者未掌握答案,那他无法向验证者证明为真,即假的真不了。
零知识性(Zero-Knowledge):证明过程中,验证者除了“证明”之外,不会获得其他相关信息。
zk-Rollup 会在向以太坊主网提交区块时,生成一个零知识证明。主网全节点验证该证明即可。
需要注意的是,zk-Rollup 通常只应用了 ZK 前两个属性,即完备性与合理性,达到压缩计算的目的。
Optimistic Rollup 需要将一段时间内交易数据,压缩后,完整地连同状态根(包含用户地址余额等信息)、欺诈证明(仅在发生争议时),传回到以太坊主网。
由于交易数据和结算仍存储在以太坊主网上,当全节点提出挑战时,可根据先前存储的状态,校验欺诈证明是否成立,判断 Optimistic Rollup 是否作弊。
zk-Rollup 不需要将全部交易数据发布至以太坊主网,仅发布状态差异(类似用户账户状态变化)和有效性证明即可,这样会使得交易成本 Gas 更低。使用 zk 前两个属性,达到压缩计算目的。
zk-Rollup 证明文件很小,验证时间一定,所以证明本身不会随着交易数量增加而变大。
长期来看 zk-Rollup 在 Gas 成本和 Tps 方面,要优于 Optimistic Rollup,且无需提现等待期。
所以,以太坊创始人 Vitalik 认为,短期内 Optimistic Rollup 会因 EVM 兼容性占据优势,但长期来看,zk-Rollup 会胜出。
本质上,Optimistic Rollup 安全来自于经济学,作恶者要考虑损失的成本,挑战者的动机由经济利益驱动。
zk-Rollup 安全来自于密码学,用密码学手段验证证明,可以做到去信任化。
长期看,zk-Rollup 相比 Optimistic Rollup 更具优势,但短期仍受制于 zk-EVM 发展。这也是我们在下一篇会聊到的话题。
这里需要区分的是,用户在 zk-Rollup 上的交易信息仍是透明可查询的。
而 Manta 作为基于 ZK 的可编程隐私公链,除前两个特性外,还重点应用了零知识性,让链上交易隐私化。
Rollup 与模块化
不可能三角,又称三元悖论,通常指去中心化(Decentralization)、可扩展性(Scability)、安全性(Security)三者不可同时兼得。
通常,模块化是指,把 Layer1 共识、结算、数据、执行四层分别解耦(单拆出来),在不增加节点硬件负担,造成中心化前提下,实现扩容,打破“不可能三角”。
V神在波哥大以《Hardening rollups with multi-proofs》为主题进行分享,即采用多证明机制,加强Rollup安全。
方案二是多证明人机制(multi-provers),采用多证明系统,用欺诈证明或 zkEVM 多种实现,预防网络宕机情况。
方案三是双重证明加治理小组(two-provers plus governance tie break),采用欺诈证明加ZK证明,再加上治理小组裁决。当一个证明系统出现漏洞,另一个系统不受影响。
在此之前,Optimism 的 Kelvin 曾写过《The hybrid ZK/Optimistic Rollup of the future》(ZK/Optimistic 混合 Rollup 的未来),探讨过将 Optimistic 与 ZK 相结合。
总结下, 1/ Rollup 内的交易,隔一段时间统一压缩打包,提交到以太坊主网,由主网提供结算、验证交易数据,以减轻主链负担。
2/ Optimistic 与 ZK,是以太坊主链全节点,校验 Rollup 交易数据真实性的方式,可以理解成是对账方式。Rollup 是处理交易的方式。
3/ Optimistic Rollup 需要将一段时间内交易数据,压缩后,完整地连同状态根、欺诈证明(仅在发生争议时),传回到以太坊主网。
zk-Rollup 不需要将全部交易数据发布至以太坊主网,仅发布状态差异(类似用户账户状态变化)和有效性证明即可,这样会使得交易成本 Gas 更低。使用 zk 前两个属性,达到压缩计算目的。
4/ 本质上,Optimistic Rollup 安全来自于经济学,作恶者要考虑损失的成本,挑战者的动机由经济利益驱动。
zk-Rollup 安全来自于密码学,用密码学手段验证证明,可以做到去信任化。
5/ 用户在 zk-Rollup 上的交易信息仍是透明可查询的。而 Manta 是基于 ZK 的可编程隐私公链,除前两个特性外,还重点应用了零知识性,让链上交易隐私化。
6/ 当前,将 Optimistic 与 ZK 结合,是 Rollup 探索方向之一。