本文介绍 zkRollup 的相关内容,待补充。

概述

ZK-rollups 是第二层扩展解决方案,通过将计算和状态存储移至链下,提高了以太坊主网的吞吐量。ZK-rollups 可以批量处理数千笔交易,然后只向主网发布一些最小的摘要数据。这些摘要数据定义了应对以太坊状态进行的更改,以及证明这些更改正确的加密证据。

ZK-rollups 将交易打包并在链下执行。链下计算减少了需要发布到区块链的数据量。ZK-rollup operator 提交一个 summary,代表所有交易所需的更改,而不是单独发送每一笔交易。他们还产生有效性证明,以证明他们的更改的正确性。

ZK-rollup 的状态由部署在以太坊网络上的智能合约维护。为了更新这个状态,ZK-rollup 节点必须提交一个有效性证明进行验证。如前所述,有效性证明是一个加密保证,表明 rollup 提出的状态变更确实是执行给定批次交易的结果。这意味着 ZK-rollups 只需要提供有效性证明来在以太坊上完成交易,而不需要像乐观 rollups 那样将所有交易数据发布到链上。

ZK-rollups 将交易以 calldata 的形式写入以太坊。 calldata 是智能合约函数的外部调用中的数据存储的地方。在 calldata 中的信息会被发布到区块链上,允许任何人独立地重构 rollup 的状态。ZK-rollups 使用压缩技术来减少交易数据。链上数据发布对于 rollups 来说是一项重大的成本,因此数据压缩可以为用户减少费用。

zkrollup 与以太坊交互

ZK-rollup 链是一个在以太坊区块链之上运行的链下协议,由链上的以太坊智能合约进行管理。ZK-rollup 在主网之外执行交易,但会定期将离链交易批次提交给链上的 rollup 合约。这个交易记录是不可更改的,就像以太坊区块链一样,形成了 ZK-rollup 链。

ZK-rollup 的核心架构由以下组件构成:

  1. 链上合约:如前所述,ZK-rollup 协议由运行在以太坊上的智能合约控制。这包括:
    • 主合约:它存储 rollup 块,跟踪存款,并监控状态更新。
    • 验证者合约:验证由区块生产者提交的零知识证明。因此,以太坊作为 ZK-rollup 的基础层或“第一层”。
  2. 链下虚拟机(VM):尽管 ZK-rollup 协议存在于以太坊上,但交易执行和状态存储发生在一个独立于 EVM 的单独虚拟机上。这个链下虚拟机是 ZK-rollup 上交易的执行环境,并作为 ZK-rollup 协议的 layer2。 在以太坊主网上验证的有效性证明保证了链下虚拟机中状态转换的正确性。

ZK-rollups 是"混合扩展解决方案"——这些是独立运行的链下协议,但从以太坊获得安全性。具体来说,以太坊网络强制执行 ZK-rollup 状态更新的有效性,并保证每次更新 rollup 状态后的数据可用性。因此,ZK-rollups 比纯粹的链下扩展解决方案(如负责自身安全属性的侧链,或者也在以太坊上通过有效性证明验证交易但将交易数据存储在其他地方的 validiums)要安全得多。

ZK-rollups 依赖于以太坊主协议进行以下操作:

数据可用性

ZK-rollups将每个在链下处理的交易的状态数据发布到以太坊。有了这些数据,个人或企业可以复制rollup的状态并自行验证链。以太坊将这些数据作为 calldata提供给网络的所有参与者。

ZK-rollup不需要在链上发布大量交易数据,因为有效性证明已经验证了状态转换的真实性。然而,链上存储数据仍然很重要,因为它允许无需许可的、独立的验证L2链的状态,这反过来又允许任何人提交交易批次,防止恶意操作者审查或冻结区块链。

用户需要进行链上操作才能与rollup进行交互。如果无法访问状态数据,用户就无法查询他们的账户余额或启动依赖状态信息的交易(例如,提款)。

交易的最终性

以太坊充当了ZK-rollups的结算层:只有当L1合约接受有效性证明时,L2交易才会被最终确定。这消除了恶意操作者破坏链的风险(例如,窃取rollup资金),因为每一笔交易都必须在主网上得到批准。此外,以太坊保证用户操作一旦在L1上最终确定,就不能被逆转。

抗审查性

大多数ZK-rollup使用"超级节点"(运营商)来执行交易,生成批次,并向L1提交区块。虽然这确保了效率,但它增加了审查的风险:恶意的ZK-rollup运营商可以通过拒绝将用户的交易包含在批次中来审查用户。

作为一种安全措施,ZK-rollups允许用户在认为自己被运营商审查时,直接向主网的rollup合约提交交易。这使得用户可以强制从ZK-rollup退出到以太坊,而无需依赖运营商的许可。

延伸阅读