GAS:Rollup不完全指南

总的来说我自己的观点是,短期内OptimisitcRollup很可能在实现具有通用性的EVM中胜出,ZKRollup很可能在简单的支付、转账和其他特定应用中胜出。但从中长期来看,随着ZK-SNARK技术的改进,ZKRollup将在所有应用场景中胜出。剖析欺诈证明

OptimisticRollup的安全性取决于这样的想法:如果有人将一个无效的批处理发布到Rollup中,任何同步了该链的人只要发现欺诈行为便可以向主链上的合约发布欺诈证明,证明该批处理是无效的,应该被回滚”到底是指主链,还是指Rollup,虽然都是对的)。

一个断言某个批处理无效的欺诈证明需要包括上图中以绿色标识的数据:该批处理本身以及证明该批处理读取或修改了特定账户的默克尔树路径。黄色的节点可以通过绿色的节点重建,所以无需包含在证明中。这些数据足以执行批处理并计算新的状态根。如果计算出的新状态根和批处理中提供的新状态根不一样,那么就证明了该批处理是欺诈的。可以确保的是,如果一个批处理中存在错误,而在此之前的所有批处理都是正确的,那么就可以创建一个欺诈证明,证明该批处理的构造是错误的。注意如果在Rollup中有多个无效的批处理,那么最好尽量证明最早的那个批处理无效。当然可以确保的是,如果一个批处理是正确的,那么永远不可能创建一个欺诈证明,证明该批处理是无效的。压缩是如何实现的?

deBridge已在zkEVM rollup Linea上线:金色财经报道,deBridge宣布在基于Consensys的zkEVM rollup Linea上线,Linea 已集成到 deBridge和 DLN中,无需流动性池即可实现高性能互操作性。[2023/8/8 21:30:37]

一笔最简单的以太坊转账大约需要110字节,但是在Rollup中实现ETH转账只需要大约12字节:

这其中的部分原因是Rollup可以采用更简单的高级编码技巧,而目前以太坊的RLP在每个值的长度上浪费了1个字节。同时Rollup还运用了一些非常聪明的压缩技巧。Nonce:这个参数的目的是为了防止重放。如果一个账户状态当前的nonce是5,那么该账户的下一笔交易的nonce参数必须是5,但是一旦交易被处理,账户状态中的nonce就会被递增为6,这样nonce为5的交易就不会再被打包。在Rollup中,我们可以完全省略nonce,因为我们只需要从更新前状态中恢复nonce;如果有人试图用较早的nonce重放交易,签名将无法通过验证,因为签名校验将使用nonce更大的数据。GasPrice:我们可以允许用户使用固定范围的Gas价格进行支付,例如范围是0-2的16次幂。另外,我们也可以只为每个批处理收取固定的费用,甚至可以将gas支付完全移到Rollup之外,让交易者通过特定渠道向批处理创建者支付费用。Gas:我们同样可以只是将Gas总量范围选择为2的幂。另外,我们也可以只在批处理层面设置Gas限制。To:我们可以用索引代替20字节的地址。Value:我们可以用科学计数法来存储Value。在大多数情况下,转账只需要1-3个有效位。Signature:我们可以使用BLS聚合签名,使许多签名聚合成一个约32-96字节的签名。然后,这个签名可以一次性对整个消息集和发送者进行批处理的签名校验。表中的~0.5表示在一个主链区块中可以验证的聚合签名数量是有限的,因此如果批处理中的交易较多,需要约每100笔交易生成一次聚合签名。ZKRollup有一个特殊的重要压缩技巧:如果交易的一部分只用于验证,与计算状态更新无关,那么这部分数据可以不存储在主链上。这在OptimisitcRollup中是做不到的,因为该数据仍然需要存储在链上,以备后续欺诈证明校验的不时之需,而在ZKRollup中,证明某批处理数据正确性的SNARK证明,已经证明了相关方提供了所有验证所需的数据。一个重要的例子是实现具有隐私保护性质的Rollup:在OptimisitcRollup中实现隐私保护,每笔交易中用于保护隐私的约500字节的ZK-SNARK需要上链,而在ZKRollup中实现隐私保护,覆盖整个批处理的ZK-SNARK已经可以证明"内部"的ZK-SNARK是有效的。这些压缩技巧是Rollup实现扩容的关键,如果没有这些技巧,Rollup或许只能在主链的扩容基础上实现大约10倍的扩容,但在使用了压缩技巧之后,几乎所有应用的扩容系数都可以超过100倍。谁可以提交批处理?

跨链互操作协议Celer已支持 Rollup_Finance:5月11日消息,跨链互操作协议 Celer Network 宣布其用于资产桥接的 cBridge 已集成 Rollup_Finance,用户现在可以获得快速、简单、低成本的桥接,将资产从其他链路转移到 zksync。[2023/5/11 14:56:32]

对于哪些人可以在OptimisticRollup或ZKRollup中提交批处理这个问题,已经存在许多流派。一般来说,大家都认为提交批处理的用户必须质押一大笔押金,如果某用户曾经提交过一个具有欺诈性的批处理,那么这笔押金的一部分将被燃烧销毁,另一部分奖励给提交欺诈证明的用户。但除此之外,还存在许多可能:,该术语得名原因是该角色需要对批处理中的交易进行排序)完全无许可的排序者:任何人都可以在任何时候提交批处理。这个方法最简单,但有一些严重的缺点,比如存在这样的问题:多个参与者同时生成并试图提交批处理,而其中仅有一个批处理可以成功被收录。这将导致在生成证明的计算开销或提交证明时的Gas开销有大量被浪费。中心化的排序者:通过排序者这样的角色提交批处理。这种方法“效率”最高,但需要依赖一个中心化的角色。排序者拍卖:通过拍卖来决定谁有权利成为第二天的排序者。这种方案的优点是可以筹集资金,而这些资金可以通过Rollup的DAO来分配。从PoS集合中随机选择:任何人都可以将ETH存入Rollup合约中,每一个批处理的排序者都会在这些存款人中随机选取,被选中的概率与存款金额成正比。这种方案的主要缺点是需要锁定大量资产。DPoS投票:某些排序者通过拍卖选取后执行批处理,但如果他们表现不佳,那么代币持有者可以投票将其踢出,并举行新的拍卖来替代他们。将批处理和状态根提交分开目前正在开发的一些Rollup采用的是“分割-批处理”模式,即提交一批二层交易批处理的行为和提交一个状态根的行为是分开进行的。这其中有一些关键的优势。你可以允许许多排序者并行发布批次,以提高抗审查能力,减轻对于某些批处理会因为其他一些批处理提前打包而无效的担心。如果一个状态根存在欺诈,无需回滚整个批处理,可以只回滚状态根,并等待有人为同一批处理提供新的状态根。这样可以更好地确保交易发送者的交易不会被还回滚。总的来说,这是一个相当复杂的技术组合,还在涉及效率,简单性,抗审查性和其他目标的复杂权衡中找到平衡。现在说这哪种组合最有效还为时过早,时间会证明一切。Rollup会带来多大的扩容?

Cardano生态项目dcSpark联创:今年将推出ZK-Rollup L2:金色财经报道,Cardano生态项目dcSpark联合创始人兼首席技术官Sebastien Guillemot在社交媒体发布2023年计划,包括推出零知识证明Rollup Layer 2、和Paima Studios合作推出一个Layer2GameFi项目、以及实现EVM侧链Milkomeda的去中心化等。

据此前报道,EVM侧链Milkomeda在今年八月交易量突破了750万笔。dcSpark去年还推出了首版Flint钱包并在Plutus平台上创建并运行了5个智能合约。[2023/1/2 22:20:49]

在现有的以太坊主链上,每个区块的Gas上线是1250万,而交易的每个字节存储在链上花费16Gas。这意味着,如果一个区块中只包含一个批处理,那么这个批处理可以包含1200万/16=75万字节的数据。而如上文所述,Rollup中的每一笔ETH转账只需要12字节的存储空间,这意味着每个批处理中可以包含62500笔交易。目前以太坊主链的区块间隔是13秒,也就是说实现的TPS约为4807。下表中包含了其他一些应用场景的扩容效率。

以太坊ZK Rollup扩容方案Hermez上线USDT:Hermez Network上线USDT稳定币。通过在Hermez上推出USDT,以太坊上的Gas费压力有望减轻。此前消息,以太坊ZK Rollup扩容方案Hermez Network正式上线。这意味着Hermez的主网已经启动,用户现在可以以更低的Gas成本转账。(Cointelegraph)[2021/4/19 20:36:52]

最大扩容倍数计算方法:以太坊主链对应操作的Gas消耗/(Rollup中对应操作需上链的字节数*16)*1200万/1250万需要说明的是,出于某些原因,这些数字其实是过于乐观的。最重要的原因是,一个区块中几乎不可能只包含一个批处理,因为到时会有多个不同的Rollup系统。第二个原因是,存款和提现操作始终将会存在。第三个原因是,短期内Rollup的使用量可能较低,因此固定成本的收费模式会占据主导。不过即使考虑了这些因素,超过100倍的扩容应该不难实现。那如果我们想要实现1000-4000TPS呢?这就需要eth2数据分片了。在这个提案中,每12秒开辟一个16MB的存储空间,这个存储空间可以被任何数据填满,系统将确保对这些数据的可用性达成共识。这个数据空间可以被Rollup使用。这个约1398kB/秒的数据吞吐量比当前以太坊主链的约60kB/秒提高了23倍,从长远来看,数据容量有望进一步增长。因此,使用eth2数据分片实现的Rollup的TPS可以高达10万,在未来甚至会更大。还有哪些尚未解决的挑战?

隐私网络Aztec发布 ZK2 rollup v0.1版:金色财经报道,Aztec发布ZK2 rollup v0.1版本代码,该代码可实现从一个SNARK之中有效地验证另一个 SNARK。[2020/4/26]

虽然现在Rollup的基本概念已经被人们所熟知,我们也很确定Rollup从本质上说上是可行的、安全的,而且已经有多个Rollup在以太坊主网部署,但Rollup在设计层面仍有许多地方没有被很好地探索,如果要将以太坊生态系统的大部分都完全引入Rollup从而利用其扩容性,这方面仍存在不少挑战。一些关键的挑战包括:用户和生态系统的入驻:目前使用Rollup的应用不多,用户对Rollup不熟悉,很少有钱包开始整合Rollup。商家和慈善机构还不接受它们用于支付。跨Rollup交易:有效地将资产和数据从一个Rollup转移到另一个Rollup中,而不需要通过主链中转并产生相应费用。审计激励:如何最大限度地提高至少有一个诚实节点会完全验证OptimisticRollup的概率,从而确保在出现问题时有人发布欺诈证明?对于小规模的Rollup来说,这不是一个重要的问题,可以简单地依靠利他主义实现,但对于更大规模的Rollup来说,需要把激励问题研究清楚。探索在Plasma和Rollup两者之间设计的可能性:是否有技术可以把部分与状态更新相关的数据放在链上,但不把全部数据放在链上?通过这种技术是否会诞生出新的有用的工具?最大限度地提高预确认的安全性:很多Rollup为了让用户体验更好,提供了一个“预确认”的概念,即在交易完成后,排序者即刻提供一个承诺:某笔交易将被包含在下一批处理中,如果排序者食言,他们的押金将被销毁。但是这种方案在经济层面的安全性是有限的,因为排序者可能同时向非常多的用户做出很多承诺。这个机制是否可以改进?提高对缺席排序器的响应速度:如果一个Rollup的排序者突然离线,那么如何最大限度地快速以及低成本地从这种情况中恢复,要么快速和低成本地大规模退出到另一个Rollup,要么更换排序者。快速响应这是非常有价值的。高效的ZK-VM:生成一个ZK-SNARK证明,证明具有通用性的EVM代码已经正确执行,并有一个确定的结果。总结

Rollup是一种新的强大的二层扩容范式,预计将成为以太坊未来短期和中期实现扩容的基石。以太坊社区对于Rollup非常兴奋,因为与之前的二层扩容尝试不同,Rollup可以支持通用的EVM代码,允许现有的应用程序轻松迁移过来。Rollup通过做出一个关键的妥协来实现这一目标:不试图完全搬到链下,而是将每笔交易的少量数据保留在链上。Rollup有很多种,设计上也有很多选择:使用欺诈证明的OptimisitcRollup,使用有效性证明的ZKRollup。排序者可以是一个中心化的角色,也可以是一个去中心化的自由角色,或者是介于两者之间的许多其他选择。Rollup仍然是一项早期阶段的技术,开发正在快速地继续,但它们是有效的,一些已经运行了几个月。期待在未来的几年里,Rollup领域会有更多令人兴奋的成果出现。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:0ms0-0:782ms