什么是Rollup?--下篇(zk-rollup)

  • maxdeath
  • 更新于 2021-04-23 17:56
  • 阅读 3856

上周我们聊到什么是Rollup?Optimistic Rollup
接着本篇我们再谈谈另一种rollup方案--zk-rollup(ZR)

上周我们聊到什么是Rollup?Rollup是怎么来的之Plasma以及Plasma升级方案--Optimistic Rollup 「详情回顾:🔎 什么是Rollup?--上篇

接着本篇我们再谈谈另一种rollup方案--zk-rollup(ZR)

zk-rollup

zk在这里指的是zero knowledge(零知识),换言之,这种rollup方案基于一个叫做“零知识证明”的密码学工具。

“零知识证明”这个东西,如果比较关心区块链或者密码学的前沿技术的话可能大家已经听说过了,它的原理即便对于非专业人士太过复杂,我这里仅仅介绍一下它能做什么:

给定一个问题X,比如某数学试卷最后一道大题最后一问。

图片

这个时候,某个学霸小明做出了这道题,但是某个学渣小白不相信小明做出了这道题,于是和小明打赌,要他证明自己确实做出了这道题。而小明其实很清楚,小白想打赌的目的实际上是想抄他的答案。

那么,有没有某种方法,能够一方面证明小明解出了这题,同时还不泄露这题的答案呢?

这种方法就是零知识证明,它可以同时满足以上两个条件。通过某个零知识证明的算法,小明生成了一个证明“P”。

给出这个证明后,小白一看到“P”,就能100%确信小明确实解开了这道题——这是零知识证明中的“证明”的意思。

但另一方面,小白看到“P”之后,仍旧完全不知道答案和小明解题的一丁点过程——这是零知识证明中的“零知识”的意思。

具体到ZR的场景里,我们主要是用到“证明”的这部分用途。

在ZR中,链上保留交易以及一批交易之后,所有状态的变化的摘要。

于是,在这里,零知识证明中需要证明的东西,就是:“我知道一系列的交易,在经过这些交易之后,所有交易的状态的摘要将从A变成B。”

就比如:

“我知道某一系列交易,在经过这些交易的所有处理步骤之后,小明和小红的账户会从(1000,1000)变成(900,1100)。”

对这条论断,验证者可以通过零知识证明生成一个证明P。

然后,将P以及状态摘要A和B以及所有的交易一起发到链上,这样,所有的节点不需要验证这些交易,只要通过验证P,就可以确定状态A到状态B的真实性了。

这种做法和OR有个显著的不同点:

同样有一堆被打包起来的交易TX,同样是这些交易会让所有账户的状态从A变成B,同样是将具体变化的计算拿到链下而用一个证明代替。

但不同的是,ZR采用的是“有效证明(Validity proof)”的逻辑而OR采用的是“作恶证明(Fraud proof)”的逻辑,即:

  • 在OR中,有一个或者几个验证者,他们通过签名的方式担保“状态A在经过这些交易TX之后会变成状态B,我验证了”。然后,在一段时间的挑战期(通常是一周或者两周)之内,如果有人提出“你担保的结果和实际交易执行的结果不符”并提供证据,那么,错误的结果将会被回滚,挑战者可以获得担保人在链上抵押的一部分押金
  • 在ZR中,验证节点在链下通过零知识证明算法,生成一个证明P并与状态A,B与交易TX一起上传上链,相当于是表示“状态A在经过这些交易TX之后会变成状态B,你可以通过验证P来证实这一点”。在ZR中,不需要挑战期,因为密码学可以保证验算P就等价于验证了状态B是经由交易TX得出的。

OR和ZR哪个好?

可能很多读者看到这里,已经在心中有了个自己的判断——

ZR似乎从很多角度看起来都比OR好啊:

  1. OR并不带来绝对的安全性——首先OR的安全性还是通过押金而不是算法保证的。此外,与闪电网络,Plasma一样,这些基于“担保--挑战”也就是基于“作恶证明”的机制都容易受到对于区块链的“审查攻击”,也就是说,如果别人在第二层偷了你的钱,但串通了矿工在挑战期的时候不打包你的申诉,于是过了挑战期,你的钱就永久地在第二层被偷走了。相对的,基于“有效证明”的ZR就不存在这种问题。
  2. 同时,由于挑战期的存在,将资产从OR的链下提到链上时需要被锁定一段时间,而这一点对于很多对及时性要求高的交易是不可接受的。比如,想要将OR里的钱提出去做交易,就不得不等待一周或两周的锁定期之后才能成功,这点就需要一个额外的“跨OR”机制来实现,而这个“跨OR”实际上有需要引入额外的算法的复杂度和信任假设。

的确,ZR在这两点上有着对于OR根本性的优势——OR无论再怎么完善,它只是提供了一个可选方案:你可以选择链上交易,也可以选择以低一些的安全性和很长的退出时间为代价,选择交易费更低、速度更快、吞吐量更高的OR交易。但ZR则不同,ZR是可以完完全全代替链上交易的扩容方案——甚至,ZR还能在提供安全性的同时,可以提供相比于链上交易不具备隐私保护。

但另一方面,ZR有一个根本性的缺点,就是零知识证明本身——

  1. 首先,零知识证明的一个特性是,虽然验证P要比验证TX简单很多,但相对的,生成P要比验证TX复杂更多。也就是说,虽然普通节点的工作量变小了,因为他们只需要负责验证P,但是需要从交易TX中生成P的ZR节点的工作量变多了,而且,通常ZR会要求他们能够在一个区块间隔的时间生成这个证明。这些节点相当于老师,将快速将复杂的知识TX先学一遍,然后用简单的语言,也就是P交给其他节点。于是,这些节点需要更高的硬件投入
  2. 此外,零知识证明本身有个极大的局限性,就是虽然从理论上来讲,任何论断都可以通过零知识证明,但在实际中,目前的几种主流的零知识证明算法,比如Bullet proof,zk-SNARK,zk-STARK在证明不同的问题上的效率各有优劣。换言之,虽然从理论上来讲我们可以把以太坊的所有交易挪到链下,但在目前的技术条件下,转账类的交易更容易实现,甚至已经能够技术落地。但是对于一般性的,图灵完备的交易而言,想要生成零知识证明有的时候是效率很低甚至完全不现实的。因此,如何对一般性的交易有效的生成零知识证明,仍旧是个待解决的研究问题,还需要等待密码学技术的突破。而相对的,OR在把一般性的交易挪到链下这点上其实障碍小得多。
  3. 一些零知识证明算法,例如应用很广泛的zk-SNARK,需要可信的初始设置——算法中的一些安全相关的随机数是需要初始节点进行选取的,于是这些随机数在初始设置完成之后,就成了“有毒废料”(toxic waste)。而后续无论是证明的“安全性”还是“零知识性”都建立在这些有毒废料被销毁的前提下。换句话说,假设一个恶意节点架设了一个基于zk-SNARK的ZR,然后偷偷地保存了这些废料,那么,他可以通过这些废料生成假的证据从而偷走别人的链下资产。从这个角度看,有这种问题的ZR实际上和OR一样,也不能认为达成了和链上交易相同的安全性。

因此,个人认为:

  1. 在短期内,OR显然是以太坊扩容最现实也最接近实现的方案。
  2. 但是从长远看,如果零知识证明能够实现对于一般交易有效的生成证明的突破,那么ZR的优势是OR无法比拟的。
  3. 由于各个OR之间以及OR和ZR之间互通性的问题,虽然OR上线可能更快,但OR的广泛应用之路可能更艰难。
Optimistic Rollup Zk Rollup
证明类型 作恶证明 有效证明
链上计算复杂度
TPS 100 (有BLS签名500) 2000
链下计算复杂度 低(能跑EVM就行) 非常高
图灵完备 可以实现 目前还实现不了
资金撤出时间 两星期 瞬间
安全隐患 对主链的审查攻击 有毒废料

Rollup和分片哪个好?

这就回到了经典的第一层网络和第二层网络之争的问题,而这个问题实在太大了,需要单开一篇来写。

但就目前语境下的以太坊Rollup方案和分片方案而言,两者确实可以进行一个限定条件下的比较:

  1. rollup显然是更现实并且已经初步落地的方案,而分片还是镜中花水中月——相比而言,也许一个较为通用的ZR方案都比可能比以太坊分片要早实现。因为首先分片技术复杂,牵扯利益众多,而且,它可以说是个以太坊基础设施的方案;而rollup项目则都是商业项目,背后的推力更大,而以太坊对于分片的升级,一拖再拖之后,在路线图上还是个遥遥无期的事情。更何况以太坊开发者除了分片还有PoS等一堆事情要先做。
  2. rollup和分片并不冲突。原本,分片的确和layer 2方案例如plasma有着一定的竞争关系,因为两者都会带来无限扩展,而两者的原理都是一笔交易仅被部分节点验证。但rollup实际上是个“1.5层方案”,已经不能够无限扩展了。所以从这个角度而言,rollup和分片不再是一个“选哪个方案来实现无限扩展”的非此即彼的关系,而成了“既……又……”的关系——想要短期解决容量问题,就得先用rollup;想要长期实现无限扩展,还是得要分片。
  3. 最后的问题,是我们还需不需要分片——也就是我们还需不需要“无限扩展”,也就是我们是不是还希望输出能够随着网络的增大而无限增加。而现在其实我们知道,分片技术其实就是以降低安全性的代价提高输出,而我们也知道,单纯地追求高TPS其实没有意义。因此,我不认为分片以及无限扩展是个必然需要追求的目标——如果rollup之后输出已经够用,或者是未来以太坊的网络中的矿工数量并不会继续扩大了,那么“无限扩展”其实并不是一个必然选项。

当然,以上这些并不是说分片不行,第二层方案最好;或者是说所有人都该拥抱rollup。而我的观点是,每条区块链,都应该根据自己的需要,来选取适合的扩容方案,因为扩容方案也不会是从天上掉下来的:OR也好,ZR也好,分片也罢,其实都需要在性能和安全性之间有所取舍。现在,大家早就过了盲目追求百万TPS的时代,也越过了把DPOS当作扩容不可能三角的一角的阶段。其实我们知道在不牺牲安全性和中心化程度的基础上,TPS已经能够达到一个“够用”的水平,因此,于其追求更高的TPS,更该关心的是TPS里每条交易的意义——这些交易为什么需要放在区块链上而不是中心化数据库中。

因此,我对于ETH2.0的态度一直是“吃瓜看戏”。因为在我看来,ETH2.0从来都不是什么rollup和分片路线之争,分片只不过是Vitalik Buterin和核心开发者们在各个rollup团队们开始有些喧宾夺主的时候,画的一个“你看我们也没闲着,未来ETH2.0还是需要我们主导”的靶子而已。要不然,如果真按照一些人说的以太坊就保持PoW+rollup就好,那接下来核心开发团队要干啥去呢?

图片

而最后,我觉得一个需要传递的最重要的信息是——虽然现在Rollup俨然已经成了扩容的代名词,甚至但无论你是初学区块链的爱好者也好,还是业界寻找方向的开发者和投资人也好,对于rollup都需要知道的一个最重要的问题是——rollup实际上不是一个通用方案,也不是一个区块链全行业的“高新技术”,它甚至不是广义上的“区块链扩容方案”中的一个重要路线,其实只是解决一个“以太坊限定”的拥堵问题的一个最合适、最现实和最容易实现的方案,并由于以太坊和DeFi的火热恰逢其会地吸引了大量的技术人员和投资者而已。

加入Colacoder,和区块链资深研究者和开发人员,一起用通俗的语言,聊一聊圈内热点话题背后的技术和逻辑,欢迎投稿!

图片

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
maxdeath
maxdeath
代尔夫特理工大学 (TU Delft) · 区块链博士后 & 代尔夫特理工大学 (TU Delft) · 信息论博士