技术之旅: Metis 上的低燃料成本和存储层(MEMO)

为什么交易费用还不是以美分计算的?
一个乐观的第二层网络所产生的大部分天然气成本是用来抵消汇总事务到以太坊 L1 的成本。以太坊 main net 是昂贵的。比如说
https://etherscan.io/tx/0x801b65cfd1f0de5a184f42bab7d74e41234d2f8837fc5efae9506dadbd78ba15
上述交易累计成交 107 笔。在写这篇文章的时候,这笔交易的成本是 100 美元。如果我们考虑提交状态批处理的交易成本,则每个交易的成本已经超过了 1 美元。这是当天然气价格仅为 75 G WEI 。以太坊主网络繁忙时可以有高达 200G WEI 的天然气价格(或更多,当大型空投正在发生)每个事务的汇总成本很容易超过 3 美元,使得第二层事务成本对许多用户来说仍然有点高。
说到这里,有人可能会问:那么如果大部分的成本来自事务汇总,我们为什么还要汇总那么昂贵的 blob 数据呢?
为什么需要汇总事务数据?
答案是网络安全。事务数据是保证乐观第二层网络数据完整性的关键。当 Met is 生产区块时,没有区块生产共识。该区块由当前区块生产者当班制作。Met is 的安全性是通过延迟验证共识来保证的,也就是说,当发现欺诈行为时,验证者会不断地检查块生产者和测序者是否诚实并具有挑战性。
Met is 的验证共识是通过两个独立的机制完成的。第一种机制确保块生产的正确性在近实时。基本上,当一个区块由当前的区块生产者产生时,对等网络会立即验证这个区块。如果值班的区块生产者不诚实,同行会在第一个区块立即发现,并停止网络。选举一个新的区块生产者之后,将回滚一个区块。对等网络要求块生产者负责并最大限度地减少所需的回滚。然而,这个机制并不能防止序列器提交不正确的状态根,这可能会导致欺诈性的退出层 2 。
第二个机制是任何乐观滚动的核心:防欺诈。防欺诈是一种签名机制,只要至少有一个诚实的参与者,网络就能得到保护。然而,防欺诈需要两种类型的输入链上才能工作,状态根和交易信息。Met is 目前正在实施的欺诈验证的核心是能够确定地计算给定起始状态和交易数据的结果状态。交易数据需要包含所有必要的信息来支持智能合约中的链计算。支持这种计算的信息需求是不平凡的。例如, Met is 的正在进行的防欺诈工作需要压缩状态转换操作码,当将其卷到 L1 时,很容易花费超过一美元。防欺诈确保对等网络始终是诚实的,也保护用户免受欺诈取款。
所以我们绝对需要数据来保证安全,没有希望了吧?
希望在哪里?
在上一节中,我们有意省略了一些细节。最重要的一点是,我们并不需要任何时候的交易数据。
首先,网络本身并不依赖于提交的交易数据。该块是通过正常的 EVM 执行产生的,相应地计算状态根并提交给 L1 。如果状态根批次中包含任何跨域消息,事务中继器将能够将事务中继到 L1 。只有当需要链上防欺诈时才需要交易数据。例如,当验证器质疑序列器提交的状态时。如果定序器是诚实的,提交的事务数据除了作为链副本在整个 L2 网络数据丢失时从 L1 恢复链之外,大部分是浪费的。在 Met is 庞大的对等网络中,需要网络恢复的可能性微乎其微。因此。对 Met is 而言,只有当挑战被启动时,交易数据才需要处于链中。
其次,为了防欺诈,交易数据只需要在质疑窗口的持续时间内处于链上。Met is 目前有一个 7 天的窗口,供验证者质疑提交。因此,只需要 7 天的交易数据即可。
显然,我们会对自己说,为了那些大多数时候没有实际用途的数据块,花费所有的计算能力去达成共识,这是多么的浪费。所有这些能源和二氧化碳排放量都是为了覆盖一种罕见的情况。肯定有更好的办法,对吧?肯定有。我们只需要减少我们需要提交到以太坊 main net 的数据大小。
切线:另一种解决方案
在继续讨论 Met is 如何减少数据大小之前,我想先讨论一些替代方案。当我写这篇论文的时候,我注意到了另一个有趣的发展,它分叉了以太坊主网来支持临时 blob 。数据(https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4844.md)这项工作实际上是基于一个类似的想法 Met is 的解决方案。然而,需要注意的是,这需要改变方案。我们不知道这需要多长时间,也不知道能节省多少钱,因为 blob 数据的天然气价格还没有确定。我们 Met is 希望尽快加快第二层的采用。因此,我们不打算依靠这个分叉来降低交易成本。然而, Met is 将继续关注这一进展。如果将来有意义的话,切换到这种解决方案是相当容易的。当 EIP 被实现时,我们的解决方案也将受益匪浅,因为它降低了事务数据的存储成本。
Met is 减少汇总提交中事务数据大小的方法&存储层
我们方法的关键思想是只在需要的时候提交需要的东西。状态根提交是不变的,因为我们已经可以在一个状态批量提交中滚上千个事务。每笔交易的成本已经非常低了。我们将关注的是交易数据的提交。这是它的工作原理。
首先,序列器将抓取链上最新的交易批次,并编译所需的交易数据,以支持防欺诈。然后,序列器将计算已编译事务数据的 merkle 树根。接下来,序列器将基于 merkle 树根计算一个标识符,然后使用该标识符将数据提交给我们的分布式存储合作伙伴 Memolab 。Memolab 之所以被选为存储合作伙伴,是因为其先进的技术和友好的激励机制,支持高数据可用性和数据安全性。一旦数据在分散存储中可用, merkle 树节点作为汇总的一部分提交到以太坊主网。这样,批处理的事务数据汇总就完成了。
当验证者看到提交时,基于提交的哈希,验证者将能够从分散存储中定位并下载事务数据,以便计算状态根并与提交的状态根进行比较。如果验证者对提交满意,就不需要别的了,
然而,当一个挑战被启动时,验证者可以支付序列器将选择的实际事务数据写回以太坊或将事务数据提交给以太坊本身。当写入事务数据时,智能合约确保在完成汇总时数据包含在 merkle 树根中。一旦交易数据在链上,验证器就可以执行欺诈验证,从而可能削减序列器。
有了上述机制,我们可以避免提交大部分的交易数据到以太坊 main net ,同时仍然支持防欺诈,以保护网络。由于汇总成本可以忽略不计, Met is 今后将不再收取汇总成本,这实际上使交易成本在美分范围内。
猫捉老鼠的游戏
一些有安全意识的观众可能已经开始怀疑系统是否可攻击了。答案是肯定的,它是可攻击的。因此,我将列举可能的情况,并介绍一些额外的机制。
一个闪烁其词的测序仪
实际上,一个不诚实的测序者有可能故意将一个无效的哈希值提交到以太坊。序列器之所以能这样做,是因为只有当完整的交易数据处于链中时,才能对欺诈进行验证。但只有当哈希值与提交的哈希值匹配时,才能将事务数据写入链。当序列器为事务数据提交无效的哈希时,序列器有效地避开了防欺诈挑战。这次攻击会使整个机制失效。因此,我们添加了一个有趣的机制来解决这个问题。以下是它的工作原理。白名单验证器可以存放一些 ETH 来请求测序器将事务数据写入以太坊 main net 。如果序列器未能满足请求,同一个验证器就可以写入事务数据,而不需要匹配哈希。交易数据随后将用于防欺诈。
这样,如果一个定序器试图通过提交无效的哈希来逃避欺诈证明,定序程序将无法提交交易数据本身,一旦验证器将正确的交易数据写入,最终将被验证器砍光。
有人可能会问,如果白名单验证器提交了一个无效的事务数据怎么办。在这种情况下,验证器将不能成功地完成交互式欺诈验证过程。因此,验证者没有动机这么做。
农业测序仪
一个有利润意识的序列器也可以保留一个正确的事务数据的副本,但将无效事务数据提交到分散存储器。当白名单验证器请求事务数据时,序列器总是能够写入正确的数据,因为序列器有一个副本。有两个细节来解决这个场景。
首先,验证器所支付的费用必须足够高,以阻止不必要的请求,但又必须足够低,以便序列器不会从此类事务中获利。聪明的承包商将依靠天然气价格的预言来计算适当的数量。
第二,交易数据在 Met is 网络上一应俱全。任何人都可以编译和计算正确的交易数据,并提交给以太坊用于防欺诈。因此,即使分散存储中的副本从一开始就是无效的,验证器仍然可以验证状态根并发起质疑。
社区治理作为最后一道防线
当序列发生器是一个受信任的实体时,上述情况就不太可能发生。但是,当 Met is 完全去中心化测序仪和区块生产者时,即使这意味着他们在这个过程中会损失很多钱,也无法保证不会有恶意用户试图伤害生态系统。Met is 有一个管理验证器和测序器白名单的治理智能合约。如果需要,社区可以投票将恶意用户赶出白名单,以此作为最后一道防线,确保生态系统的稳定。请注意,验证器需要被列入白名单,以便请求序列器写入事务数据。防欺诈可以由任何人发起。
结论
延迟加载事务数据的想法在内部讨论了很长时间。我很高兴这已成为现实。我希望这篇文章给大家一个很好的想法,当我们试图通过进一步降低交易成本来促进第二层采用时,我们的思维过程。制度并不完美。但我们相信,它在降低交易成本的同时,又有足够的安全性,达到了完美的平衡。这种方法的美妙之处在于,我们不需要分叉链条,并且仍然通过防欺诈措施得到以太坊的安全支持。现在,让我们一起享受 Met is Layer 2 的全部潜力,直到下一篇文章介绍我们的分散化之旅。

猜你喜欢

转载自blog.csdn.net/weixin_47385419/article/details/124161780
今日推荐