• 0

  • 2

  • 收藏

伊斯坦布尔升级后,zkRollup将如何提升以太坊的吞吐量?

Unitimes_Charles

Unitimes 发烧友

1年前

来源 | iden3

据估计,伊斯坦布尔升级之后,zkRollup 可以帮助以太坊将其吞吐量提高到大约每秒3000笔交易(tps)。本文试图验证这一说法。

Eric Conner 推文大意:你知道伊斯坦布尔升级包含了一个允许以太坊扩展至 3000 TPS 的以太坊改进提案 (EIP) 吗?

与现有系统相比较,Visa 网络目前平均TPS为2000。而以太坊目前支持约30 TPS。因此,如你所见,如果这些测算正确,这将是非常重要的性能改进。

伊斯坦布尔升级:开启 Rollup 创新之门

12月7日实施的伊斯坦布尔硬分叉是以太坊网络的最新一次升级。

伊斯坦布尔升级包含两个以太坊改进提案(EIP)使 zk-SNARKs 的价格更便宜——EIP-1108EIP-2028

EIP-1108 包含了急需的 gas 定价调整,这为 rollup 创新打开了大门。这些定价调整大大降低了验证 zk-SNARKs gas 费用

引用自 EIP1108

简单总结:椭圆曲线算法预编译目前价格过高。对预编译进行重新定价将大大有助于以太坊上的许多隐私解决方案和扩展解决方案。

原理:现有的协议将从费用更低的椭圆曲线密码学中受益匪浅

EIP-2028 calldata gas 花费从每字节 68 gas 降到更低的成本 (估计为每字节16 gas)。由于我们的数据可用性解决方案是通过 calldata 将数据上链,所以交易吞吐量得以提高。

现在,我们已经了解了两个 EIP 可以如何 zkRollup 扩展解决方案。接下来,让我们看一下数据!

吞吐量上限:伊斯坦布尔升级前后对比

以太坊目前
  • 矿工接受的区块 gas 限制为 10,000,000 gas。
  • 每笔以太坊交易收取 21,000 gas 作为基本费用(简单的转账而言)。
  • 大约每15秒将一个块添加到链中。

有了这些数字,我们可以算出以太坊的最大吞吐量

  • 每个区块的最大交易数量为10M / 21k = 476。
  • 这使我们的吞吐量为476个交易/ 15秒=每秒32交易

使用 ZkRollup 的以太坊(伊斯坦布尔升级之前)

每个 zkRollup块(我们称为一个批次(batch))包含 2048 笔 (简单的以太坊) 交易和一个 zk 证明。因此,我们必须为两种数据类型(交易证明)计算 gas 费用:

  • 每笔交易占用 8.125 字节。以 68 gas/字节的成本计算,每笔交易 gas 花费为8.125*68= 552.5 gas。每批次有2048交易,因此每批次的交易成本为552.5 * 2048 = 1,131,520 gas
  • 生成证明的成本 800,000 gas。每批次一个证明意味着每个证明要花费 800,000 gas
  • 因此,每个 rollup 批次的成本为1,131,520 + 800,000 = 1,931,520 gas

考虑到每块10M 的gas限制,我们可以在每个以太坊区块中插入多少 zkRollup 批次?

  • 10M / 1,931,520 = 5.17 批。为了简单起见,取每块5批。
  • 如果将5个批次插入一个以太坊区块,每个批次可容纳2048交易,这意味着每个区块我们可以打包5 * 2048 = 10,240交易
  • 10,240个交易/ 15秒=每秒 682交易

使用 ZkRollup 的以太坊(伊斯坦布尔升级之后)

之前一样,每个批次 (一个批次是一个 zkRollup块) 包含 2048 笔 (简单的以太坊) 交易和一个 zk 证明。但是,由于实施 EIP 1108 EIP 2028 这两个提案,交易和证明的 gas 成本现在都发生了变化:

  • 每笔交易为8.125字节。当前每笔交易需耗费16个gas /字节,因此每笔交易 gas 花费为 8.125*16=130 gas。由于每批次有2048交易,因此每批次的交易成本为130 * 2048 = 266,240 gas
  • 生成证明的成本现在为 350,000 gas。每批次一个证明意味着350,000 gas的证明成本。
  • 因此每个 rollup 批次的成本为 266,240 + 350,000 = 616,240 gas

考虑到每个以太坊区10M gas 的限制,我们可以在以太坊区块中插入多少 zkRollup 批次?

  • 10M / 616,240 = 16.22 批。为了简单起见,让我们取每块大约15批。
  • 如果将15个批次插入以太坊区块,由于每个批次可容纳 2048交易,这意味着我们可以让每个区块打包15 * 2048 = 30,720交易
  • 30,720个交易/ 15秒=每秒2048交易

汇总表格

由于 zkRollup 带来的吞吐量的增加与交易成本的减少存在直接的关系,因此,考虑上述问题的另一种方法是:

  • 当前发送一笔简单的以太坊交易需要花费约21,000 gas。
  • 以太坊结合 ZkRollup(在伊斯坦布尔升级之前)可以将交易成本降低到 1000 gas 以下大约 945 gas
  • 伊斯坦布尔升级之后,现在的每笔交易的交易费为 300 gas

这是一个简洁的汇总表,将所有三种场景中的交易成本与吞吐量作比较:

[注意,为了计算以太坊结合 ZkRollup 带来的交易成本,我们需要将每个证明的 gas 成本 (伊斯坦布尔升级之前800,000,升级之后350,000), 除以批次中的交易数量(2048), 因为每批次有一个证明,这相当于将一个证明的成本分摊到每批次中的所有交易中;然后我们将此数字加到每笔交易的数据存储 gas 成本中 (伊斯坦布尔升级之前为 552.5,升级之后为130), 换句话说,就是加到每笔交易数据的 calldata 存储成本中。]

结论

如本文开头所述,Visa 网络目前 TPS 平均为2000。因此,尽管我们还没有达到 Eric Conner 所说的 3000 TPS的要求,但是吞吐量 2048 TPS 仍然是一个很大的进步。由于这个数字与我们所作的假设只是略有不同,因此 3000 TPS 似乎并不那么难实现。

一些说明

在我们太过兴奋之前,请记住,这是理论上的最大值实际上,事情远比这复杂

实际上,要将15个批次放入1个区块中,需要1个批次创建时间平均为1秒钟(假设出块时间为15秒)。

请记住,每个 zkRollup 批次都需要简短的加密证明(zk-SNARK),以证明该批次中交易的完整性。事实证明,生成此证明的计算费用十分昂贵。这才是达到理论吞吐量限制的主要瓶颈

目前使用一个 CPU 和三个 GPU,需要几分钟时间才能生成一个这样的证明。

尽管通过并行计算可以显着改善性能,但是将证明生成时间从几分钟减少到几秒钟,同时保持合理的成本,仍然是一个重要的挑战。

(请注意,一旦某个 rollup 交易聚集器aggregator, 我们称为 operator (操作员)) 挖出”了一批次交易该操作员必须在链上验证证明。此验证作为其他操作员的“数据库更新”。实际场景中,这意味着只能在生成并验证了批次n的证明后才能“挖出”批次n+1。)

虽然生成证明是这里的主要瓶颈,但这并不是唯一的挑战设置每秒能够处理 2000交易的服务器也不是一个小问题。更不要谈验证所有涉及的签名。我们还需要一个功能强大的高级区块浏览器来处理所有这些信息…

当然,我们还在处理这些工作。在解决这些问题之前,我们不会停止。

毕竟,如果我们不相信这一切,我们就不会在这个领域工作 :)

 

原文链接:

https://iden3.io/post/istanbul-zkrollup-ethereum-throughput-limits-analysis

【文章版权归原作者所有,其内容与观点不代表Unitimes立场,亦不构成任何投资意见或建议。发布文章仅为传播更有价值的信息,合作或授权联系请发邮件至editor@unitimes.io或添加微信unitimes2018】

2

相关文章推荐

未登录头像

暂无评论