ZK Rollup、Optimistic Rollup、Plasma 等以太坊热门 Layer 2 方案各有何优缺点?

原文标题:《分布式课堂:理解以太坊各个 Layer2 扩容解决方案(状态通道、侧链、Rollup 等)》
撰文:Michael Zhou,Celer 核心开发者

自从 DeFi 热潮席卷以太坊,导致以太坊拥堵,Gas 费用创历史新高。我们一直以来关心的以太坊扩容的现实问题:在以太坊 2.0 尚未推出,更为贴合实际的 Layer2 方案有望解决以太坊的扩容问题。

这次,分布式课堂邀请了 Celer 团队的 Michael 着重讲述「链下」技术,它们包括状态通道、Plasma、Rollup 等。Michael 毕业于麻省理工学院(MIT),获得计算机硕士学位。Michael 目前在 Celer 负责对于区块链技术,特别是各种二层扩容技术的研究,他参与了通用状态通道、状态守卫者侧链 (SGN) 以及 Hybrid Rollup 等的核心设计和开发工作。

duotone (1).jpg

状态通道

  • 优点:延迟低,实时性高
  • 缺点:用户人数有限,资金利用率低
  • 用途:小额支付 / 预测市场 / 赌球赛马

一般情况下是双方会在链下建立一个状态通道,通过交换私钥进行签名以后的信息,并在链下进行交易。当时比特币比特币实现了名为闪电网络的支付通道网络,把这个状态通道互相连接起来:即使用户没有直接状态通道,也可以通过几个中间节点把它一一层一层地转发过去,相当于 channel network。

基本上,状态通道的延迟能做到互联网的延迟。比如说服务器之间的延迟是多少,这个状态通道的延迟就是多少。市面上通过其他链发送交易的速度是秒级的。但是状态通道的话,一般都是毫秒级的。另外,它还有一个优点就是实时性非常高。

状态通道是一种 scale up (扩容)的手段。scale up 的意思是用技术手段线性地将区块链扩容,比如说像分片。比如说以太坊 2.0 要启动 64 个分片,然后它的容量就增加了 64 倍。而对于状态通道来说,他现在能支持 1000 个用户同时在线,未来可能最多支持到 64000 个用户,这个数字还是很低的。

尽管状态通道的 scale up 是说你节点数量越多,你的网络越大,你的容量越大。这只是一个很美好的设想,实际上它受到了一个很大的限制——low liquidity utilization (低资金利用率)。状态通道是要这个双方都把这个钱存到链上的通道,之后再互相进行发送支付。第一步,就是要把钱存到链上去,这个钱是有限的。就是你比如说手上你有 1000 个以太,状态通道只能发送 1000 个以太。如果你突然发送一笔 2000 以上的以太,它就无能为力了。

因为容量可以扩容,然而资金流动性却没有办法扩容。如果一个用户给另一个用户发送一大笔钱,那中间每一个转发的节点都要有这么大的容量,在现实生活中是不太可能的。等大家把这么多钱都锁到一个状态通道里边,如果只能用状态通道转发的话,这个效率是非常低下。

状态通道只能支持小额支付。像闪电网络其实并不大,可能和资金利用率低是有关系的。另外,把一般的 dAPP 搬到状态通道是相当难的。我们曾经尝试把五子棋搬到状态通道上。尽管我们写了 sdk,让别的项目的开发去用,他们还是觉得这个开发是相当难的。

另外,状态机只适用于这个固定的人数。就是你要把 uniswap 放在状态机上是不现实的。因为在这个 dAPP 的用户是无限量的,没有一个固定的用户集。即使你把棋类游戏或是稍大的 PC 游戏搬到状态通道上,这些游戏也必须写成状态机的形式。他们每一个状态的转移,要非常清楚地写出来。

理论上,你可以把任意单机游戏都搬到状态通道上。但现实中没有人会去这样做,除非你是非常不信任游戏服务器。一般来说,预测市场以及赌球赛马(大家对及时变化很快的场景做预测),是可以搬到状态通道上的。

侧链

  • 优点: 代码和数据独立,不增加主链的负担
  • 缺点:安全性弱

侧链的本质就是在这个基础层上再搭一个链,然后用完全另外一套验证人。它的整个安全性是分开的:主链有主链的安全性,侧链有侧链的安全性。

主链从 POW 转到 POS 会有更强的安全性,但侧链的验证人偏少,安全性也较弱:比如说 Cosmos 才只有 100 个验证人。

侧链的 TPS 取决于它的验证人。验证的人数越多,它的 TPS 会越低。侧链的延迟是相对低的,比状态通道的毫秒级高一些,比主链的十几秒几十秒延迟低很多。

状态通道的安全性就是双方互相签过名,就具备主链的安全性。只要一方做恶,另外一方都可以提交到主链,把它这个争议解决掉。而侧链的话就是你要信任多数的验证人是好人,所以它的安全性要比主链低很多。

Rollup/Plasma

  • Plasma:缺点是无法应用到智能合约上,用户跑节点的负担重
  • Rollup:优点是数据在链上,可以随时验证(也是和 Plasma 唯一的区别),链下支付可以用任何代币支付而链上支付只能用 ETH

Rollup 是 19 年慢慢火起来的一个概念。和 Rollup 类似的 Plasma,是以太坊上也是 V 神认为大有希望的一个解决方案。Plasma 的问题是它只能够把支付做好,对于稍微复杂的智能合约却无能为力。作恶的一方是不会把数据给你提交上链,以至于这种争议至少要等两个星期才能解决。这个过程是对于用户来说难以接受的。另外,由于 Plasma 的数据都在链下,用户跑 plasma 的节点负担是很重的:你跑的时间长了,就会消耗几十个 G 或者几百个 G,是手机无法承受的。

19 年有人提出了 Rollup,在我看来是一个中间道路。Rollup 就是链下的计算+链上的数据+Fraud proof。然后它最关键的一个点就是不是所有数据都在链上,它的链上数据仅仅限于它每一笔交易的输入,但不包括它的最终状态。比如说,你从 a 走到 b ,我只是把路径告诉你了;但是你具体在 a 做了什么事,在 b 做了什么事,这种状态是记录在链下的。

任何人任何用户都可以去看 Rollup 的区块,也就是打包后的交易,然后把它这个状态的转移重新更换。如果状态转移是错的,用户就可以在链上提交 Fraud proof,并将验证人淘汰掉。因为验证人在链上是有质押的,如果他作恶的话,他的质押会被没收掉。且虽然不是每一笔 Rollup 都会进行验证,但是验证人会一直跑,一旦发现有 Fraud (比如说 A 给 B 发了 1 块钱,但记录的是 A 给 B 发了 3 块钱),就可以拿到相应奖励。这个过程可以理解为任何人都可以进行抽查以及督察。

他的好处是数据都在链上,可以任凭用户随时去验证,不会出现像 plasma 那样的数据可用性问题。且验证的结果具有唯一性,验证人链下把这个智能合约跑一遍,就会发现验证链下的计算是否按照链上的智能合约。从经济学角度来说,一般的验证人不太会去做恶,因为他的质押额太大了。

Rollup 和 Plasma 其实非常类似。只是 Rollup 把数据放到链上去,Fraud Proof 的过程会非常简单。Rollup 的 TPS 会在主链的几百倍左右,一般是在几百上千的级别;根据不同业务,如果应用简单一些的话,应该可以做到几千级别。而 plasma 的 TPS 最高能到上万。

Optimistic Rollup / ZK Rollup

  • Optimistic Rollup:可以支持通用的智能合约,缺点是需一到两周时间去跑证明
  • ZK Rollup:可以支持支付以及 DEX,缺点是耗内存和 CPU/ 无法支持智能合约,离落地还有时间

Optimistic Rollup 从技术来说要比 ZK Rollup 简单很多。它的好处是可以支持通用的智能合约。ZK 和 Optimistic 的区别是,Fraud Proof 变成了 Validity Proof。这两种验证方式相当于两种不同的思维方式:Optimistic Rollup 是乐观思维,就是说相信验证人是不会做恶的;ZK 是悲观思维,相信验证人还是会作恶的,所以要生成一个零知识证明,然后和 Rollup 一起打包到链上去。大家去验证不需要跑状态转移,因为这个转移已经通过零知识证明跑过一遍了。

这就类似法律上的举证证明,是自证清白还是别人证明你是好人。ZK Rollup 相当于自证清白。其实,Optimistic 和 ZK 都牵涉到一个最终性的问题。Optimistic Rollup 的最终性是比较长的,用户没有跑过这个证明,提现期需要一到两周。这期间系统会给足够多的窗口,让足够多的人去验证这个事情。ZK 不会碰到这个问题,因为一旦它的零知识证明上链,它的最终性也就确认了。

那么 ZK Rollup 的问题是什么呢?它对于这个节点要求是非常非常高的。ZK Rollup 就是耗 CPU 和内存,并需要很强的服务器去做这个打包。而 Optimistic Rollup 对于打包者的要求并不那么高。唯一要求的就是验证人在链上质押来保证不会作恶。

由于这个 ZK 的复杂性,导致它目前只能用于一些特定的应用:比如说像那个支付和 DEX。另外 ZK 还包含了零知识电路,它是密码学中非常新的概念,目前存在安全隐患的可能。

Hybrid Rollup

  • 避免了中心化的问题,引入了侧链做打包人

Hybrid Rollup 是结合了侧链和 Rollup。我们发现了一个问题打包者可能很中心化,比如说路印。而 ZK Roll 因为对打包者要求很高,它的中心化问题更加严重。这会引发一个问题:假设路印的服务器到期以后,机器就会发生宕机,交易所会进入提现模式,相当于变相被解散。为了预防这种风险,我们牺牲了一些 TPS,引入了侧链的验证人。

Hybrid Rollup 的好处:第一,不会出现打包人只有一个以及单点故障这个情况,因为这需要一个侧链共同去打包。第二,作恶的可能性更小了,因为需要所有节点共同加强才能去作恶。且安全性是双重的:侧链以及 Rollup 的双重安全性会防止有人作恶。

来源链接:mp.weixin.qq.com