Rollup可以说是根据Plasma的方案升级而来:在主链上部署Rollup合约记录链下状态并且负责验证提交的链下状态,Rollup链上的运营商则是负责维护好链下的状态。对于Rollup用户而言,其与主链的交互在两个时候:进入(将L1的资产存入L2)与退出(从L2中取出资
Rollup 可以说是根据 Plasma 的方案升级而来:在主链上部署 Rollup 合约记录链下状态并且负责验证提交的链下状态,Rollup 链上的运营商则是负责维护好链下的状态。
对于 Rollup 用户而言,其与主链的交互在两个时候:进入(将 L1 的资产存入 L2)与退出(从 L2 中取出资产到 L1 中),其余时候是在 Rollup 上进行的,而在 Rollup 上进行交易的花费小于直接在主链上进行交易的花费,同时也能减轻主链的负担(Rollup 会将多个 Rollup 的交易打包一起交给主链,相当于 N 个交易合并为 1 个交易)。
其总体流程就是:用户在 Rollup 上产生交易(这会修改账户的状态,例如余额减少),Rollup 上的运营商将交易纳入区块,最终生成对应的默克尔树,并将汇总交易(batch,压缩后的交易集合)与交易后的状态(state root,默克尔树根)记录在链上(即主链上预先部署好的智能合约),并由链上负责验证。
其中如何实现验证根据不同的思路有了不同的方向:ZK Rollup(提交状态时验证)、Optimistic Rollup(提交状态后验证)。
前者的思路是有效证明(证明区块是有效的),通过名为零知识证明的方法提交一个区块的证明,这个证明可以在不泄露交易内容的情况下证明交易的状态变更的正确,链上的合约在通过默克尔树、证明进行验证,通过验证就固定了链下的状态变更(这就表示 ZK Rollup 的上主链时间需要看 ZK 证明的生成速度)。
后者的思路是欺诈证明,其假设区块是 Optimistic(乐观)的,即假设区块中没有欺诈区块,然后设置一个争议期,在争议期内任何用户都可以对这个区块发起挑战(认为这个区块有问题),提交自己的欺诈证明。如果争议期内没有人提出挑战,那么区块则会通过状态变更(这就表示交易真正的上链时间就是争议期时间长度)。
OR 并没有节省交易的存储消耗,因为其将交易和交易结果一并上传到链上,这正是为了保证数据可用性的问题(Plasma 放弃的原因正是因为交易全部存储在链下,导致了数据可用性问题)。
目前 Optimistic Rollup 的方案的落地并不只一个,而是有着众多的 OR 项目,主要是因为各个项目对于方案里面的部分偏具体的部分有不同的实现思路,因此产生了不同的项目。
目前主要的 Optimistic Rollup 项目有:Arbitrum、Optimism、opBNB 和 COMBO 这几个项目。
Optimism 是一个 EVM 等效的 Optimism Rollup 链(简称 OP)。其中主要包含两类节点:sequencer(排序器)和 verifier(验证器)。
两者负责不同的任务:sequencer 负责将用户提交的交易进行处理,排序,然后提交给 L1 ,verifier 负责对于提交到 L1 上的状态根,汇总交易进行验证,如果验证为有问题则会提交对应的欺诈证明,sequencer 会因此需要重新计算对应的状态根。
Optimism 和 Arbitrum 的区别主要提现在对争议(挑战的验证方法不同)
对于争议的处理,Optimism 主要依靠欺诈证明,需要证明就需要重新执行该交易以证明交易结果的正确,为了实现这个重放 Optimism 实现了 OVM 来处理,在 OVM 1.0 中 采用的是非交互式欺诈证明,而 OVM 2.0 中采用的是交互式欺诈证明(Arbitrum 也式非交互式)。
Arbitrum 与 Optimism很相似,主要区别在于争议处理(就是上面的那个证明挑战方式,Arbitrum 采用了交互式的方法)。
在这个交互式证明挑战中,将整个块上的交易分为 k 个部分(每个部分都有一个起点与端点),然后挑战者与被挑战者相互交流这 k 个部分确认争议点在哪个部分,然后继续缩小,直到确认具体的哪一条指令是两者的争议,然后交由 L1 合约判定。
目前 Arbitrum 项目包含了几个具体的项目:
前面讲过了,ZK Rollup 是通过零知识证明的方式进行打包验证的,其与 Optimistic Rollup 的不同点是这个验证,在 ZKR 中,提交到链上的信息有:状态A和B、零知识证明、汇总交易,这些信息表示:状态A在经过这些汇总交易之后会变成状态B,你可以通过验证零知识证明来证实。因此在 ZKR 中没有等待时间(Optimistic Rollup 有等待时间),ZKR 现在没有完全击败 OR 的原因在于生成 ZK 证明的时间。
目前主流的零知识证明算法有:Bullet proof、zk-SNARK、zk-STARK
而主要的 ZKR 的项目有:zkSync、StarkWare 、Polygon(zkEVM)、Scroll、Aztec
在介绍各个项目前,先了解下目前对于以太坊兼容性 zkEVM(可以执行与以太坊虚拟机 (EVM) 相同的高级编程语言或低级字节码的虚拟机,并使用零知识证明 ZKP 证明此代码,这些类型的虚拟机更准确的名称是有效性证明生成 EVM)的类型。
下面是由 Vitalik 提出的分类方法
第一类:完全等同于以太坊的 ZKR
第二类:完全等同于 EVM 的 ZKR
第三类:几乎等同于 EVM 的 ZKR
第四类:高级语言等效
zkSync 有两个版本:zkSync 1.0 (zkSync Lite)和 zkSync 2.0 (zkSync Era)。在 zkSync 1.0 中其只支持简单交易,zkSync 2.0 则在外观与使用都类似于以太坊,其智能合约采用 Solidity/Vyper 编写的,并且可以使用与其他 EVM 兼容链相同的客户端来调用,采用的零知识证明算法是:zk-SNARK。
zkSync 2.0 有以下特点:
StarkNet 则是前面第四类 ZK Rollup,其采用的是 zk-STARK 的零知识证明算法,被认为比 SNARK(zkSync 采用的) 更有效和可扩展,但可能需要更复杂的技术设置。
StarkNet 中支持智能合约,但需要采用 Cairo 语言编写,作为第四类 ZK Rollup,其并不会在 EVM 中执行,而是在自己建立的 VM 中执行,使用自定义的字节码。
Scroll 是实现了与 EVM 等效的 ZK Rollup,这意味着我们可以很轻松的将以太坊上的程序迁移到 Scroll 中(即不需要更改太多的代码)。其计划通过构建 1:1 opcode 映射来实现支持 EVM opcode 从而直接接受 EVM opcode 而无需编译器。
Scroll 的架构包括一个集中式序列化节点和一个分散的证明网络。
集中式序列化节点负责对交易进行排序、创建区块,并将交易数据作为 calldata 提交到以太坊上的 Rollup 合约以供数据可用性。Scroll 计划逐步去中心化序列化节点。
同时,一个名为 Roller 的分散式证明生成器会产生证明并将其发布到 L1 网络上,利用分布式计算能力。Rollers 是随机选择的,可以在不同的 Rollers 上并行生成不同块的多个证明以增加速度。
Polygon zkEVM 是 Polygon 收购了 Hermez Network 开始开发一个结合了 STARK 和 SNARK 的安全性和效率的 EVM 等效系统。其使用自定义的语言 zkASM 来解释 zkEVM 代码。
Layer2赛道分析:Optimistic Rollup技术为基础的项目探讨与市场对比
第十四章:Optimistic Rollup 代表项目 arbitrum
第十五章:Optimistic Rollup 代表项目 optimistim(Boba, Metis
zkEVM 方案一览:简析zkSync、StarkNet、Polygon zkEVM 、Scroll
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!