可变PTC截止时间与统一calldata定价方案

本文探讨在ePBS框架下,采用可变PTC截止时间与统一calldata定价(affine metering)的方案,通过线性关系将calldata使用与截止时间绑定,释放更多执行时间,使以太坊吞吐量和gas限制大致翻倍。文章建立数学模型,对比EIP-7976和EIP-7623,指出后两者因定价不均导致缩放增益有限,并讨论与多维费用市场的兼容性。结论:该方案能显著提升扩容效果且实现简单。

通用模型

在 ePBS 的约束下,应如何处理 calldata 以实现最大规模的扩展?设 $T_1$ 为认证截止时间,$T_2$ 为最晚可能的 PTC 截止时间,$T_3$ 为Slot结束时间,$c$ 为固定的传播开销。已有更精细的计时模型用于衡量传播时间,但此处一个简单模型足以说明问题。令 $g_c$ 表示有效载荷所使用的 calldata gas,$G_c$ 表示对应于最大数据密集型有效载荷的 calldata-gas 预算,即刚好允许在 $T_2$ 之前到达的有效载荷。总体 gas 上限记为 $G$;可以将 $G_c = G$,但更可取的是对 calldata 施加更严格的限制,即 $G_c < G$,如下文所示。令 $t_b$ 为每 calldata 字节的传播时间,$B$ 为最大 calldata 字节预算。同样的方法也可扩展到其他字节,例如 BAL 字节或任何受区块大小限制(如 EIP-7934)所覆盖的字节。纳入这些考虑很重要,但并非本文重点,本文侧重于基础建模。

为确保有效载荷能在 $T_2$ 前完全传播,最大字节预算必须满足

$$T_1 + c + t_b B = T_2.$$

因此,对 calldata 字节大小的约束为

$$B = \frac{T_2 - T_1 - c}{t_b}.$$

如果 calldata 具有单一价格,并且按每字节 $g_b$ gas 线性定价,则 calldata gas 预算为

$$G_c = g_b B,$$

从而所需的 calldata gas 价格为

$$g_b = \frac{G_c}{B} = \frac{t_b G_c}{T_2 - T_1 - c}.$$

等价地,对于使用 $g_c$ calldata gas 的有效载荷,可变的 PTC 截止时间可以直接写为

$$T_{\mathrm{PTC}}(g_c) = T_1 + c + \frac{g_c}{G_c}(T_2 - T_1 - c).$$

为方便起见,定义 calldata 比例 $p = \frac{g_c}{G_c}$。由于在此模型中 calldata 是线性定价的,$p$ 也是最大字节预算所占的比例。前一个表达式变为

$$T_{\mathrm{PTC}}(p) = T_1 + c + p(T_2 - T_1 - c).$$

这清晰地展示了依赖关系:随着 calldata 用量从 $0$ 变化到 $G_c$,截止时间从 $T_1+c$ 线性移动到 $T_2$。PTC 截止时间之后剩余的执行窗口为

$$W_e(p) = T_3 - T_{\mathrm{PTC}}(p).$$

代入得到

$$W_e(p) = (T_3-T_2) + (1-p)(T_2-T_1-c).$$

因此,随着 calldata 用量的减少,未使用的传播时间变成了额外的执行窗口。图 1 展示了在示例条件下,定价和计量如何影响扩展:

$$T_1 = 3\mathrm{s}, \qquad T_2 = 9\mathrm{s}, \qquad T_3 = 12\mathrm{s}, \qquad c = 2\mathrm{s}.$$

为了更容易看清扩展效果,两个轴都进行了归一化。纵轴是字节份额 $b$,即 calldata 字节除以字节上限 $B$,在线性定价下 $b=p=g_c/G_c$。横轴是相对于原始全执行区块的执行量,

$$e = \frac{W_e(p)}{T_3-T_2}.$$

在这些归一化示例中,$e$ 的一个单位是填满原始 $T_3-T_2$ 执行窗口的执行工作。

图 1 图 1

图 1. 在简化定价和仿射计量下,采用可变 PTC 截止时间时的扩展增益图示。蓝色线所示的提案下,gas 上限相对于固定 PTC 截止时间可以增加 $s = 7/3$ 倍。红色线所示的 EIP-7976 下,余量仅为 $1/16$,即倍数为 $17/16$。橙色线所示的当前 EIP-7623 下,可变 PTC 截止时间可能比 EIP-7976 带来更大的增益,但该 EIP 允许随着 gas 上限的增加而过大的有效载荷。对于细虚线所示的典型区块组成,采用提议的设计所获得的吞吐量约为 EIP-7976 的两倍(比较蓝色和红色圆圈)。

在该提案下,归一化的执行前沿变为

$$e = 1 + \frac{T_2-T_1-c}{T_3-T_2}(1-b).$$

对于建议的条件,我们有 $T_2-T_1-c = 4\mathrm{s}$,以及 $T_3-T_2 = 3\mathrm{s}$。因此提案前沿变为

$$e = 1 + \frac{4}{3}(1-b).$$

这是图 1 中的实心蓝线。分数 $4/7$ 来自时间分割:可变传播间隔为 $4\mathrm{s}$,从 $T_1+c$ 到 $T_3$ 的完整后开销间隔为 $7\mathrm{s}$。它对应于 calldata 上限 $G_c=\frac{4}{7}G$,因此最大数据密集型区块($b=1$)仍为一个完整执行区块($e=1$)留出空间。在另一个极端,当 $b=0$ 时,从 $T_1+c$ 到 $T_3$ 的整个间隔都可用于执行,得到 $e=\frac{7}{3}$。具体来说,当 $G=300\mathrm{M}$ 且 $G_c=4G/7$ 时,统一的 calldata 价格为 $32$ gas/字节时最大为 $5.36$ MB calldata,$48$ gas/字节时给出 $3.57$ MB。

虚线蓝线则展示了 $G_c=G$ 的情况。在这种情况下,字节和执行在相同的 gas 预算下完全权衡,因此最大数据密集型区块可以消耗全部 gas 上限,在 gas 核算中不留下执行。图 1 还包含一条灰色基线 $e+b=1$,其中执行和字节简单地进行一对一替换,正如 EIP-7623 之前的情况。

橙色和红色线假设字节侧在原始最大 calldata 区块处单独设限。如果没有这样的上限,在 EIP-7976 下将 gas 上限从 $G$ 提高到 $G'$ 只会使全底价最大字节区块从 $G/64$ 增长到 $G'/64$,因此该区块将超出传播预算。有了字节上限,额外的 gas 只能以执行的形式出现,而每个单位的字节份额仅按零字节/底价比率取代执行:对于 EIP-7976 为 $4/64=1/16$,对于 EIP-7623 为 $4/10=0.4$。因此红色线随着字节份额从 $0$ 变为 $1$ 仅下降 $1/16$,使其几乎垂直。下一节将提供更全面的分析。较浅的红色和橙色线段显示了原始 gas 上限($s=1$)下相应的固定截止时间前沿。可变 PTC 截止时间将这些前沿向右移动。

圆圈标记了与示例组成 $b=e/9$ 的交点,对应归一化的 $9:1$ 执行与字节混合,即 $9/10$ 执行和 $1/10$ 字节。对于 EIP-7623 和 EIP-7976,该点根据假设的交易组成而偏移,其中 $5/6$ 的字节以低价购买,$1/6$ 以底价购买。

可变 PTC 截止时间下 EIP-7623 和 EIP-7976 定价的局限性

(此处可提供侧重点略有不同的单独说明(1, 2)。)

图 1 中的提案直接将 calldata 定价与其造成的传播负担成比例。在这种情况下,减少 calldata 总会释放传播时间,这些时间可转而用作额外的执行时间。在 EIP-7976 和 EIP-7623 下,calldata 具有两个有效价格。一些 calldata 可以与执行一起廉价携带,而剩余的 calldata 则以较高的底价购买。

假设固定截止时间的 gas 上限已经提高,直到纯计算区块刚好填满执行窗口,最大字节区块刚好填满传播窗口。在 EIP-7976 下,全底价最大字节区块的大小为 $B = G/64$。如果我们现在将 gas 上限提高到 $G' > G$,则该最坏情况的全底价区块增长到 $B' = G'/64$。由于旧的最大字节区块刚好在 $T_2$ 之前合适,新的则不合适。在这种框架下,可变 PTC 截止时间本身并不能证明任何 gas 上限的增加是合理的。

然而,如果字节大小也固定为 $B$(例如通过单独的字节大小上限),那么将 gas 上限提高到 $G'$ 就成为可能。仅包含执行的区块可以被分配更早的截止时间。一旦区块开始携带一些廉价字节以及执行,截止时间必须推迟,直到最终在 $T_2$ 处达到其原始起点。

当区块在执行上花费 $G$ gas,在廉价字节上花费 $G'-G$ gas 时,这种情况就会发生。已建立的最大字节数量为 $B = G/64$。由于廉价字节的成本可以是 $4$ gas/字节,以该价格购买相同字节数量只需 $4B = 4(G/64) = G/16$。因此,$G'-G = G/16$,所以 $G' = (17/16)G$。在所求的区块组成中,用于廉价 calldata gas 的比例为 $(G/16)/(17G/16) = 1/17$,而剩余的 $16/17$ 用于执行 gas。

图 2 展示了在先前使用的时间条件下该计算。x 轴是最优 PTC 截止时间,y 轴是相对于原始固定截止时间 gas 上限的 gas 上限乘数 $s=G'/G$。每个标记固定一个区块组成:标签给出了提高后的 gas 上限中用于廉价字节的比例,其余部分用于执行。

截止时间 vs 扩展 截止时间_vs_扩展

图 2. 在 EIP-7976 下,假设字节上限保持在原始最大 calldata 区块固定,随着用于廉价 calldata 的 gas 份额增加,安全的 gas 上限乘数。每个标记标注了廉价字节的 gas 份额;其余为执行。曲线从 $T_1+c=5\mathrm{s}$ 处的纯执行上限 $7/3$ 下降到 $T_2=9\mathrm{s}$ 处的关键点 $1/17$,此时乘数为 $17/16$。虚线延续到 $1/16$ 展示了旧的以最大字节廉价组成,该组成已在原始 gas 上限处填满字节上限,因此没有扩展增益。

在纯执行(0)下,PTC 截止时间可以一直移动到 $T_1+c$,产生最大的执行窗口。随着廉价字节份额的增加,必须传播更多字节,因此最优截止时间移动得更晚,安全 gas 上限乘数下降。关键点是 $1/17$ 标记。在此组成下,区块包含原始最大字节数量 $B$ 和原始完整执行 gas $G$。两个约束在旧的固定截止时间处都达到边界,因此最优截止时间又是 $T_2 = 9\mathrm{s}$,gas 上限乘数为 $17/16$。虚线延续到 $1/16$ 仅为视觉辅助:该组成在原始 gas 上限处已经填满字节上限,因此不提供扩展增益。

要在 EIP-7976 下恢复更大的可变 PTC 扩展增益,需要截止时间随原始 calldata 字节变化,而不是随 EIP-7976 calldata gas 变化。然而,如果原始字节是稀缺的时序资源,那么两个价格水平消耗相同的传播预算,但它们支付不同的 gas。廉价 calldata 随后可能需要通过优先费竞争原始字节容量,这将是一个严重的用户体验问题。

多维费用市场下的仿射计量

本提案的仿射计量方法也可以应用于例如 EIP-7999 的多维费用市场。有两种自然的方式可以实现:

  1. 应用本文概述的基础提案,只要仍存在单一的 EVM-gas 资源,就不需要任何根本性的改变。如果执行被分解为多个资源,则必须考虑它们对处理时间的联合影响。

  2. 将 calldata 分解为单独的资源,但使用其原始字节消耗,或使用与原始字节成恒定倍数的 calldata-gas 单位,来定义可变 PTC 截止时间,就像之前一样。

我们在此关注选项 (2)。该方法唯一的根本区别在于 calldata 拥有自己的资源基础费用。仍然会有一个上限 $G_c$,决定了一个区块最多可以消耗多少 calldata,并且该上限可以像之前一样设置,使得典型区块远未达到该上限。在区块级别,calldata 字节仍将通过施加条件 $e + r b \le 1 + r$ 来约束可用的执行 gas 和 PTC 截止时间,其中 $r = (T_2 - T_1 - c) / (T_3 - T_2)$ 是传播与执行的时间比率。由于 calldata 大小可以预先静态确定,因此实现起来很简单。它不会产生那种在 EVM 运行时确定资源消耗时出现的复杂情况。

为了连续性,calldata 字节消耗仍然可以用 gas 来计价,前提是该 gas 是原始字节消耗的固定倍数。然而,这并非必需条件,calldata 资源可以直接以字节计价。每字节的价格仍会进行调整,使得每个区块平均消耗目标数量的字节。

总之,通过对 EIP-7999 进行适度修改,本文概述的扩展增益也可以在多维费用市场下实现,从而改进这种费用市场已经实现的扩展增益。

  • 原文链接: ethresear.ch/t/the-case-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展