比特币上的 ZK-Rollups 比以太坊更具可扩展性

ZK-Rollup 被认为是以太坊 Layer 2 扩容解决方案的圣杯。总的来说,我自己的观点是,在短期内,乐观的汇总可能会在通用 EVM 计算中胜出,而 ZK 汇总可能会在简单的支付、交易所和其他

ZK-Rollup 被认为是以太坊 Layer 2 扩容解决方案的圣杯。

总的来说,我自己的观点是,在短期内,乐观的汇总可能会在通用 EVM 计算中胜出,而 ZK 汇总可能会在简单的支付、交易所和其他特定于应用程序的用例中胜出,但在随着 ZK-SNARK 技术的改进,中长期 ZK 汇总将在所有用例中胜出。—维塔利克

我们已经直接在比特币上实现了第一个 ZK-Rollup (ZKR)。此外,我们展示了为什么 ZKR 在比特币上比在以太坊上效果更好。

ZKR 如何在以太坊中运作

ZKR 的核心是利用 ZK- S NARK 证明的简洁性:验证某些计算是否正确完成比重新执行它更有效。不是处理链上的每笔交易,而是首先将合约的多个交易发送给协调器(又名定序器/中继器),而不是矿工。协调器将它们“滚动”/捆绑到单个事务中。该交易包含一个简洁的证明,证明所有这些批量交易都被忠实地处理,将合约从state1更改为state2,并发送给矿工。

比特币上的 ZK-Rollups 比以太坊更具可扩展性-1ZK 汇总

由于交易处理的所有繁重工作都外包给了链外,因此区块链可以在给定的时间间隔内处理更多的交易,从而扩大规模。zkSNARK 证明确保了链下状态转换的正确性,使协调者无法提交无效的状态转换。这使得 ZKR 成为一个有吸引力的 L2 可扩展性解决方案,因为它允许在不牺牲 L1 安全性的情况下进行扩展,这与Plasma 和 Optimistic Rollup 等许多其他 L2 解决方案不同。

ZKR 代币

我们以代币为例来演示如何使用 ZKR。

比特币上的 ZK-Rollups 比以太坊更具可扩展性-2以太坊上的汇总

主链上有一个 Rollup 合约,跟踪状态根。“状态根”是 Merkle 树的根。树的每个叶子都是一个帐户,由其所有者的公钥或地址及其属性(例如余额)组成。

比特币上的 ZK-Rollups 比以太坊更具可扩展性-3帐户形成 Merkle 树

在以下示例中,将两笔存款分批为一个交易。

比特币上的 ZK-Rollups 比以太坊更具可扩展性-4状态转换比特币上的 ZKR

我们已经在比特币上实施了汇总合约。它确保在处理完一批事务后,将当前状态根更新为正确的新根。

它跟踪的唯一状态是第 8 行中帐户树的根。第 14 行使用我们之前的 zk-SNARK 库验证有效性证明。Root 在第 17 行更新。第 5 行的验证密钥来自 zk-SNARK 的设置阶段。

生成 ZKR 证明

我们需要以 zk-SNARK 友好的方式对我们的事务处理逻辑进行编码。一种流行的语言是 Circom。由于篇幅所限,我们不在这里介绍 Circom 语法,而是请读者参考circom 官方网站了解更多信息。

处理单个事务涉及:

  1. 通过默克尔证明检查发件人帐户是否在树中
  2. 验证发件人的签名
  3. 更新发送者的余额并验证中间默克尔根
  4. 更新接收方的余额
  5. 更新默克尔根

多笔交易

只有当多个事务一起批处理时,汇总的好处才会显现出来。我们可以简单地在上面的代码之上添加一个循环。仅当批次中的所有交易都有效时,生成的证明才有效。

概括

ZKR 将交易数据存储在第 1 层(L1)的链上,以实现数据可用性。底层 L1 的存储成本对 ZKR 的可扩展性增益设置了上限。因此,ZKR 在比特币上的效果比在以太坊上要好得多,因为前者的存储成本比后者便宜几个数量级。

此外,由于 zk-SNARK 是通用的,一旦在比特币上部署了 rollup 智能合约,许多现有的在其他区块链上设计的 ZKR 工具(例如 Circom 和ZoKrates)都可以直接在比特币中重复使用。这意味着 ZKR 可用于今天在比特币上扩展应用程序。

收藏我們

搜索