ZK Rollup 和 Optimistic Rollup

  • kimiwu
  • 发布于 2020-08-28 17:15
  • 阅读 7

文章详细介绍了ZK Rollup和Optimistic Rollup两种Layer 2解决方案,包括它们的架构、实现原理以及优缺点。ZK Rollup利用zk-SNARK技术将数据上链并验证,而Optimistic Rollup则通过验证游戏确保数据的有效性。

ZK Rollup 不是一个新想法。它是由 Barry Whitehat 在一年前提出的。同时,Vitalik 在 EF Research 论坛上也有一篇相对完整的文章。该实现由 Matter Labs 和 Iden3 开发。深入研究 zk-SNARKs 之后,我最近才有时间关注 ZK Rollup。除了 ZK Rollup,我们还可以看看 John Adler 首次提出的 Optimistic Rollup

当 ZK Rollup 被提出时,它被定义为一个 Layer 2 解决方案。今年年初,它以 Plasma Ignis 的名义发布。那是因为 Plasma 非常火热,去年取得了很多进展,也被定义为 Layer 2 解决方案。基于这些原因,开发者将其命名为 Plasma。但这项技术与 Plasma 的精神完全不同。在社区的抗议后,它后来恢复为 Rollup(开发者的声明),所以搜索 “Plasma Ignis” 是找不到任何结果的。最近,Rollup 被重新命名为半 Layer 2 解决方案,这是一点点 Layer 2,但又不是完全的 Layer 2 … XD

ZK Rollup 的简要解释是将数据放置在链上的 Layer 2 解决方案。在理解 ZK Rollup 之前,让我先解释一下原始 Layer 2 的问题。以 Plasma 为例,Plasma 仅将 Plasma 块的哈希放在以太坊主链上。这意味着在链外处理数百或数千笔交易,仅在线上保存几十个字节。这是 Plasma 的构想,但也是设计中最困难的部分——数据可用性。

如果有人想离开 Plasma 链,他们需要一个机制来提取资金。在 Plasma 中,这被称为退出游戏(主链上没有数据,所以侧链参与者需要提供证据),这意味着每个人都必须保存数据量以进行挑战。与主链的体验相比,用户仅需要一个钱包,不需要下载区块数据。Plasma 的用户体验并不好。挑战期的另一个问题是,用户需要时刻在线以挑战某人,如果错过挑战期,可能会失去资金(因为使用诈欺证明,而不是有效性证明)。简而言之,由于数据可用性,它存在以下问题:

1. 用户需要频繁在线

2. 需要下载一些数据

这导致了糟糕的用户体验。

如何在不占用大量空间的情况下将数据放在链上?

首先,让我们解释一下整体架构。像 Plasma 一样,有一个智能合约用于存款。还有中继者帮助将交易发送到智能合约(在 Plasma 中称为操作员)。除了发送交易,中继者还需要生成 SNARK 证明,并将证明一起发送进行验证。

智能合约部分可以想象成 ERC20,每个参与者的余额记录在合约中。不同之处在于,ECR20 事务是标准交易,这意味着每个交易中只允许一个“转账”。在 Rollup 中,数百个“转账”将被打包成一个交易。合约可以分解这些“转账”并进行验证。

在智能合约中,使用两个 Merkle 树进行记录。一个用于记录地址,所以只需一个索引即可表示一个地址(未注册索引的值为零)。在设计中,使用 3 字节长度索引,地址的大小从原来 20 字节减少到 3 字节。另一个树用于记录余额和 nonce。

地址的 Merkle 树

这是数据格式(这是初始提案,目前实现更小),

因为索引用作地址的代表,仅需 3 字节(2²⁴ 地址),以及基本单位的 Value 10^-6 ETH,这样只需 15 字节表示一笔交易。它仅消耗 892 gas(尽管 Value 是 6 字节,但文中假设大多数交易仅使用 4 字节,所以算法为 13 字节 68 + 2 字节 4 = 892),而 ETH 转账消耗 21K gas,因此交易速度可以提高。

https://vitalik.ca/general/2019/08/28/hybrid_layer_2.html

为什么交易速度可以提高?还需要理解 交易速度的 计算

今天,一个区块的 gas 限制约为 8M,因此如果每个人简单地在以太坊上进行 ETH 转账,速度大约是

8M / 21K / 15 ~= 25 tps

所以,当前瓶颈是 gas 限制。如果降低交易费用或增加一个区块的 gas 限制,可以获得更好的交易速度(但也会导致其他问题)。ZK Rollup 通过减少交易数据量,可以提高交易速度。让我们看看使用 ZK Rollup 后,交易速度可以达到多快。

(8M — 600K(zk-SNARK 证明) — 50K(开销)) / 892 / 15 ~= 550 tps

这个数字来自 Vitalik 的文章的标题“链上扩展可能达到 ~500 tx/sec”。但实际上并没有那么理想。在作者 Barry 的实现中,它仅约为 268 tps。因为一旦账户余额被更新,智能合约就会抛出事件,这会产生额外的 gas 成本。然而,这种设计对于应用程序来说也是更加友好的。

数据在链上,并通过 zk-SNARK 验证,这意味着链上的数据是经过验证的。因此不会再出现第二层中提到的那个问题,需要挑战、需要下载数据等。这也意味着不需要信任中继者,因为他们无法做任何恶意的事情。在最坏的情况下,他们只会停止发送你的交易。

现实是否如我们所期望的…

zk-SNARK 看似是万灵药,似乎解决了所有问题,但并不如此完美。除了可信设置外,最大的问题是它需要大量的计算能力。在 Barry 提供的数据中,如果中继者的计算机是 7G 内存加上 20G 的硬盘交换空间,它可能只产生 20 tx/sec。这远低于预期的 500 tps。因此,这个解决方案最大的问题在于如何解决计算问题。

并行计算!

Matter Labs 提出了一个多操作员模型和并行计算。多操作员模型,就像小型区块链,使用 DPOS(委托权益证明),随机选择区块生产者。所选的区块生产者可以收集交易,生成证据并提交。这种方法还避免了中心化。如果中继者受到恶意攻击,整个网络仍然可以运作。另一方面,这也为并行计算铺平了道路。生成零知识证明是一项非常耗时的工作。因此,基于多中继模型,Matter Labs 提出了一个两阶段的“提交-验证”方法。区块首先在链上提交,然后用 SNARK 证明进行验证(如下图所示)。通过一些数据优化,结果可以达到 1600 tps。

https://medium.com/matter-labs/introducing-matter-testnet-502fab5a6f17

延迟…

这听起来很美好,但由于你的交易被分成两个阶段,从交付到验证需要经过几个区块。延迟会比当前情况更长。当然,目前用户可接受多长延迟并不清楚。这是一种权衡,节省交易费用,提高交易速度,但也增加了承诺延迟。所有这些仍然要等到解决方案上线后才能知晓。

今年年初在台北,Vitalik 讲述了一种 ZK Rollup 的高级版本——ZK ZK Rollup。有关详细信息,请参考 这篇文章

Plasma & Optimistic Rollup

Optimistic Rollup 的想法来源于 John 的帖子 在 EF 研究论坛。在这里,我只介绍一些简单的差异。

该概念也是将数据放置在链上,但不是使用 zk-SNARK 进行验证以实现通用应用。From 改为用户的签名(65 字节),因为我们需要知道谁签署了交易而不使用 SNARK。数据量变得更大,可以想象这会消耗更多的 gas。这意味着交易速度将低于 ZK Rollup。另一方面,因未使用 zk-SNARK 进行验证,你需要一个验证游戏来确保数据的有效性。我将在此不做详细讨论。如果时间允许,我会写一篇关于 Plasma/Optimistic Rollup 的更详细内容。

估计的交易速度约为 100 tps。如果签名方法更改为 BLS,可以增加到 450 tps。随着 EIP2028,gas 将下降,预计交易速度将达到 400/2000 tps。

感谢 John Adler 的 正确性。

参考文献:

链上扩展可能达到 ~500 tx/sec 通过大规模交易验证

介绍 Matter Testnet

Optimistic Rollup

最小可行的合并共识

直接在你的收件箱中获取最佳软件优惠

  • 原文链接: medium.com/coinmonks/zk-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
kimiwu
kimiwu
江湖只有他的大名,没有他的介绍。