DAT:Vitalik提出多维EIP1559方案,优化gas模型并增加DoS保护_DAOstack

原文作者:VitalikButerin

以太坊虚拟机中的许多资源都具有以下属性:它们对突增容量和持续容量有非常不同的限制。举一些例子:

EVM使用量:区块处理时间偶尔在2秒可能没问题,但是每个区块都花费这么长时间则会使保持节点同步变得非常困难区块数据:客户端有足够的带宽来处理2MB的区块,但没有足够的磁盘空间来存储它们见证数据:与数据相同的问题-客户端有足够的带宽来处理中大型见证,但没有足够的磁盘空间来存储它们填充的状态大小:基本上没有限制让状态在单个区块中增加多少只要见证人可以处理它,但我们不能在每个区块中都出现快速的状态增长我们当前使用的方案是将所有资源组合成一个单一的多维资源,在处理这些差异方面做得很差。例如,平均而言,交易数据加上调用数据会消耗区块中约3%的gas。因此,最坏情况区块包含的数据比平均情况多约67倍数据。见证的大小是相似的:平均情况下的见证只有几百kB,但最坏的情况下,即使进行了Verklegas改革,见证的大小也有几兆字节,增加了10-20倍。

将所有资源硬塞到单个虚拟资源中会迫使最坏情况/平均情况比率变成基于使用情况,当基于使用情况的比率以及我们知道客户端可以处理的突发限制和持续限制的比率非常不一致时,会导致非常不理想的gas成本。

本文为这个问题提出了一个替代解决方案:多维EIP1559。

假设有n个资源,每个资源都有一个突增限制bi和一个持续目标Si。我们希望任何单个区块中的资源i的数量永远不会超过bi,并且资源i的长期平均消耗等于Si。

解决方案很简单:我们为每个资源维护一个单独的EIP1559目标方案!我们维护一个基本费用向量f1...fn,其中fi是一个单位资源i的基本费用。我们设计一个硬性规则,即每个块消耗的资源i不能超过bi单位。fi由一个targeting规则调整:

为了在以太坊环境中完成这项工作,其中只有一种资源从父调用传递到子调用,我们仍然以gas收取所有费用。

选项1:我们保持执行gas成本固定,保持当前的EIP1559;让f1成为基本费用。所有“特殊”资源的gas价格变为fi/f1。区块既有当前的gas限制,也有每个资源的限制b1...bn。优先费用的运作方式与今天相同。

选项2:gasbasefee固定为1wei。使用每种资源的gas价格变为fi。没有区块gas限制;每个资源只有b1...bn的限制。在这个模型中,“gas”和“ETH”成为真正的同义词。优先费用通过指定百分比来运作;支付给区块生产者的优先费用等于basefee乘以该百分比。

多维定价与背包问题异议

历史上对多维定价模型的主要反对观点是,它们对区块构建者强加了一个困难的优化问题:区块构建者不能简单地按照每gas费用从高到低接受交易,他们必须不同维度之间平衡,并解决多维背包问题。这将为性能明显优于库存算法的专有优化矿工创造空间,从而导致中心化。

这个问题在两个关键方面已经比以前弱得多:

矿工可提取价值(MEV)已经为经过优化的矿工创造了机会,因此stock算法的“船已经出港”以有意义的方式被优化。提议者/建造者分离(PBS)解决了这个问题,将区块生产的规模经济从共识层隔离开来。EIP1559意味着任何达到限制的资源都属于边缘情况而不是平均情况,因此朴素的算法只会在少数异常区块中表现不佳。要了解为什么(2)是这种情况,我们需要注意一个非常重要的事实:在多维EIP1559中,每个资源的“松弛”参数可能远高于2x。这是因为今天的2xSlack参数创建了一个突增/持续差距,该差距叠加在来自不可预测使用的爆发/持续差距之上,而在多维EIP1559中,松弛参数代表整个突发/持续差距。例如,我们可以将calldata使用量瞄准为~256kB,在此之上有一个8倍的Slack参数,并且仍然具有与今天相当的突增限制。如果见证gas成本不变,我们可以将见证大小绑定为又一约2MB,并且见证大小的Slack参数为约6倍。对240个最新区块的调查表明,即使在4倍的calldataSlack参数下,这些区块中只有1个会达到限制!

这显示了多维EIP1559的一个很好的效果:它会使优先费用拍卖的边缘情况更加罕见,并且更快地清除突增交易。

哪些资源可以多维定价?

我们可以从基础开始:

EVM执行发送calldata见证数据存储大小增长有了分片之后,也可以将分片数据添加到此列表中。这已经给我们带来了很多好处,能够支持更多的可扩展性,同时降低突增使用带来的风险。

从长远来看,我们甚至可以使定价更加精细:

通过读取与写入拆分见证按分支与块分割见证单独定价每个单独的预编译调用每个单独的操作码这样做的主要价值在于它会增加另一层DoS保护:如果每个操作码仅被分配,例如100毫秒的最大预期执行时间,那么如果攻击者发现一个操作码或预编译的速度降低了10倍,他们只能将900毫秒的预期执行时间添加到块中。这与今天形成鲜明对比的是,他们可以使用该操作码或预编译填充整个区块,因此任何单个操作码或预编译减速10倍都可能使攻击者创建无法在单个间隔及时处理的区块。

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

大币网

[0:15ms0-2:487ms