Rollup 方案的核心在于,将链下大量的交易进行打包压缩(批处理),然后将压缩的数据发布到主链,发布到主链的压缩数据中包含了每笔交易的基本信息,这就保证了数据的可用性(可验证性),进而可以实现对操作者的免信任。 下文具体阐述 Rollup 方案的运行方式。 首先,在主链上存在 Rollup 智能合约,里面存有状态根,即表征 Rollup 状态的 Merkle 根,Rollup 状态包含 Rollup 中的账户余额、合约代码等。 操作者在收集到大量链下交易数据后,会在主链上向 Rollup 智能合约发起批处理操作(可以理解为生成一个 Rollup 区块),里面包含打包压缩的交易数据,以及旧的状态根(执行批处理前的状态根)和新的状态根(执行批处理后的状态根),智能合约会检验新旧状态根是否匹配(即新的状态根是否可以由这批交易触发状态转换生成),如果检验通过,旧状态根会更新为新状态根。 ![]() 批处理中的交易的输入方或输出方可以是来自 Rollup 外部的,这就可以实现用户在 Rollup 中的资金存取。例如用户从以太坊主链转移资产到 Rollup 合约,那么这笔交易就是从 Rollup 外部的以太坊主链输入资产至 Rollup 内部,同理,如果是从 Rollup 内提取资产返回以太坊主链,就是从 Rollup 内部输出资产至 Rollup 外部。 Rollup 方案中有一个核心的安全问题:如何保证批处理执行后的新的状态根是正确的?即如何防范操作者伪造交易或状态根、确保状态转换的有效性。针对该问题,出现了两种 Rollup 方案,分别是基于「有效性证明」的 zkRollup 和基于「欺诈证明」的 Optimistic Rollup。
zkRollup 采用 zk-SNARK(零知识简洁无交互证明)技术。零知识证明是指证明者(操作者)能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。在 zkRollup 方案中,操作者在发起批处理时,除了提交压缩的交易数据和新旧状态根外,还需要提交 zk-SNARK 有效性证明,主链上的 Rollup 智能合约会据此检验状态根转换是否有效,这一过程相当于让操作者「自证清白」。 zkRollup 方案通过零知识证明消除了状态转换过程中的有效性疑虑,本质上是通过密码学组件的加持来取代可信方(即取代对于操作者的信任),可以实现无交互、免信任的高安全性,也更加符合加密世界的基本理念,而且能够免除类似于 Plasma 的挑战期设定,发出资产提取申请后,下次批处理即可到账。zkRollup 的缺点在于,零知识证明生成过程复杂、计算成本高、耗费时间长,所以对通用型的智能合约(例如 DeFi 应用)支持不友好,当前更适用于普通转账交易等应用场景。 (责任编辑:admin) |