其有2?自由度来设置2?参数,并根据对网络安全的情况调整每一项。 更复杂的情况,例如两个资源具有部分累加的安全考虑,可以通过使操作码或资源花费一定数量的多种类型的gas来处理(例如,零到非零SSTORE可能花费 5000 无状态客户端证明的gas和20000存储膨胀的gas)。 每笔交易取最大值:获取多维Gas的较弱但更简单的方法 让x1是数据的 Gas 成本,x2是计算的 Gas 成本,因此在一维 Gas 系统中我们可以写出一笔交易的 Gas 成本gas=x1*data+x2*computation 在新方案中,我们将交易的 Gas 成本定义为:gas=max(x1*data,x2*computation) 也就是说,交易不是根据数据加计算来收费,而是根据它消耗的两种资源中哪一种资源更多来收费。这可以很容易地扩展到覆盖更多维度(例如max(…,x3*storage_access))。 应该很容易看出这如何在保证安全性的同时提高吞吐量。理论上一个区块中的最大数据量仍然是GASLIMIT/x1,与一维Gas方案完全相同。同理,理论最大计算量为GASLIMI/x2,再次与一维Gas方案完全相同。然而,任何消耗数据和计算的交易的 Gas 成本都会降低。 这大约是提议的EIP-7623中采用的方案,以减少最大区块大小,同时进一步增加 blob 计数。 EIP-7623 中的精确机制稍微复杂一些:它保持当前的 calldata 价格为每字节 16 Gas,但增加了每字节 48 Gas 的“底价”;交易支付 ( 16 * bytes + execution_gas) 和 ( 48 * bytes) 中较高者。因此,EIP-7623 将区块中理论最大交易调用数据从约 1.9 MB 减少到约 0.6 MB,同时保持大多数应用程序的成本不变。这种方法的好处是它与当前的一维gas方案相比变化非常小,因此非常容易实现。 它有两个缺点: 1、即使区块中的所有其他交易只使用很少的该资源,但大量占用一种资源的交易仍然会不必要地收取大量费用。 2、它激励数据密集型和计算密集型交易合并到一个捆绑包中以节省成本。 我认为,EIP-7623 风格的规则,无论是对于交易调用数据还是其他资源,都可以带来足够大的好处,即使存在这些缺点,也是值得的。然而,如果我们愿意投入(显著更高的)开发努力,就有一种更理想的方法。 多维 EIP-1559:更困难但理想的策略 让我们首先回顾一下“常规”EIP-1559 的工作原理。我们将重点关注 EIP-4844 中针对 blob 引入的版本,因为它在数学上更加优雅。 我们跟踪一个参数,excess_blobs。在每个块期间,我们设置: excess_blobs <-- max(excess_blobs + len(block.blobs) - TARGET, 0) 这里TARGET = 3。也就是说,如果一个区块的blob 数量多于目标,excess_blobs则增加,如果区块的 blob 数量少于目标,则减少。然后我们设置blob_basefee = exp(excess_blobs / 25.47),其中exp是指数函数的近似值exp(x)。 也就是说,每当excess_blobs增加约 25 倍时,blob 基本费用就会增加约 2.7 倍。如果 blob 变得太贵,平均使用量就会下降,然后excess_blobs开始下降,从而自动再次降低价格。 Blob 的价格不断调整,以确保平均而言,区块是半满的 - 也就是说,每个区块平均包含 3 个 Blob。 如果使用量出现短期峰值,则会出现限制:每个区块最多只能包含 6 个 blob,在这种情况下,交易可以通过提高优先费来相互竞争。然而,在正常情况下,每个 blob 只需要支付blob_basefee加一点额外的优先权费用,作为被纳入的激励。 这种 Gas 定价在以太坊中已经存在多年:早在 2020 年,EIP-1559就引入了非常相似的机制。通过 EIP-4844,我们现在有两个单独的 Gas 和 Blob 浮动价格。 2024 年 5 月 8 日一小时内的 Gas 基本费用,单位为 gwei。来源:ultrasonic.money 原则上,我们可以为存储读取和其他类型的操作添加更多单独浮动的费用,但有一个警告,我将在下一节中详细说明。 对于用户来说,这种体验与今天非常相似:你不再支付一笔基本费用,而是支付两项基本费用,但你的钱包可以将其从你那里抽象出来,只向你显示你可以预期支付的预期费用和最高费用。 对于区块构建者来说,大多数时候最佳策略与今天相同:包括任何有效的内容。大多数区块都未满——无论是gas还是blob。一个具有挑战性的情况是,当有足够的gas或足够的blob超过区块限制时,构建者需要潜在地解决多维knapsack问题以最大化其利润。然而,即使存在相当好的近似算法,在这种情况下,通过制定专有算法来优化利润所获得的收益也比使用 MEV 进行相同操作所获得的收益要小得多。 对于开发者来说,主要挑战是需要重新设计 EVM 及其周边基础设施的功能,这些基础设施目前是围绕一个价格和一个限制设计的,而设计为适应多个价格和多个限制的设计。应用程序开发人员面临的一个问题是优化变得稍微困难 :在某些情况下,你不能再明确地说 A 比 B 更高效,因为如果 A 使用更多的 calldata 而 B 使用更多的执行,那么当 calldata 为便宜,当 calldata 昂贵时则更昂贵。然而,开发者仍然能够通过根据长期历史平均价格进行优化来获得相当好的结果。 多维定价、EVM 和子调用(sub-calls) 有一个问题不会出现在 blob 中,也不会出现在 EIP-7623 中,甚至不会出现在 calldata 的“完整”多维定价实现中,但如果我们尝试单独对状态访问或任何其他资源进行定价,则会出现这个问题:子调用中的gas 限制。 EVM 中的 Gas 限制存在于两个地方。首先,每笔交易都会设置一个 Gas 限制,该限制限制了该交易中可以使用的 Gas 总量。其次,当一个合约调用另一个合约时,该调用可以设置自己的gas limit。这允许合约调用他们不信任的其他合约,并且仍然保证他们在调用后仍有剩余的gas来执行其他计算。 帐户抽象交易的踪迹,其中一个帐户调用另一个帐户,并且仅向被调用者提供有限数量的gas,以确保即使被调用者消耗了分配给它的全部gas,外部调用也可以继续运行。 挑战在于:在不同类型的执行之间使 Gas 成为多维的,似乎需要子调用来为每种类型的 Gas 提供多个限制,这将需要对 EVM 进行真正深入的更改,并且与现有应用程序不兼容。 这就是多维gas提案通常停留在两个维度的原因之一:数据和执行。数据(无论是交易 calldata 还是 blob)仅在 EVM 外部分配,因此 EVM 内部无需更改任何内容即可使 calldata 或 blob 单独定价。 我们可以想出一个“EIP-7623式的解决方案”来解决这个问题。这是一种简单的实现:在执行期间,对存储操作收取 4 倍的费用;为了简化分析,我们假设每个存储操作为10000 gas。交易结束,退款min(7500 * storage_operations, execution_gas)。结果是,在扣除退款后,用户需要支付以下费用: execution_gas + 10000 * storage_operations - min(7500 * storage_operations, execution_gas) 这等于: max(execution_gas + 2500 * storage_operations, 10000 * storage_operations) 这反映了 EIP-7623 的结构。另一种方法是实时跟踪storage_operations和execution_gas,并根据调用操作码时上涨的金额max(execution_gas + 2500 * storage_operations, 10000 * storage_operations)多少收取 2500 或 10000 gas。这避免了交易需要过度分配天gas,而这些gas主要通过退款来收回。 我们没有获得子调用的细粒度许可:子调用可能会消耗交易的所有“津贴”以进行廉价的存储操作。但我们确实得到了足够好的东西,其中进行子调用的合约可以设置限制,并确保一旦子调用完成执行,主调用仍然有足够的gas来执行它需要执行的任何后处理。 我能想到的最简单的“完整的多维定价解决方案”是:我们将子调用gas限制视为成比例。也就是说,假设有 ?个不同类型的执行,每笔交易设置多维度限制?1…??。假设在当前执行点,剩余gas 为?1…??。假设CALL调用了一个操作码,带有子调用gas limit S。让s1=S, 进而s2=s1/g1*g2,s3=s1/g1*g3, 等等。 也就是说,我们将第一种类型的gas(实际上是虚拟机执行)视为一种特权“帐户单位”,然后分配其他类型的gas,以便子调用在每种类型建获得相同百分比的可用gas。这有点难看,但它最大限度地提高了向后兼容性。如果我们想让方案在不同类型的gas之间更加“中立”,以牺牲向后兼容性为代价,我们可以简单地让子调用gas limit参数代表剩余gas的一小部分(例如[1...63] / 64)。 然而,无论哪种情况,值得强调的是,一旦开始引入多维执行gas,固有的丑陋程度就会增加,这似乎很难避免。 因此,我们的任务是做出一个复杂的权衡:我们是否接受 EVM 级别的一些更丑陋的东西,以便安全地释放显著的 L1 可扩展性收益,如果是这样,哪种具体建议最适合协议经济学和应用程序开发人员? 很可能,它不是我上面提到的任何一个,并且仍然有空间想出更优雅、更好的东西。 特别感谢Ansgar Dietrichs、Barnabe Monoton 和 Davide Crapis的反馈和审查。 来源:金色财经lg...