嵌入式费用市场和 ERC-4337(第二部分)

本文为机器翻译
展示原文

作者:Davide Rezzoli ( @DavideRezzoli ) 和 Barnabé Monnot ( @barnabe )

非常感谢 Yoav Weiss ( @yoavw ) 向我们介绍了这个问题,Dror Tirosh ( @drortirosh ) 对草稿的有益评论,以及 4337 团队的支持。评论≠认可;所有错误均由作者自己承担。

这项工作是为ROP-7完成的。


介绍

在我们之前的文章中,我们介绍了 ERC-4337 模型。该模型概述了打包商的费用市场结构,并详细说明了与捆绑的链上发布成本和链下(聚合成本)相关的成本函数。

我们还引入了“打包者游戏”的概念。这个游戏将是第二部分的主要焦点。给定一组交易,打包者可以选择将哪些交易包含在他们的打包中。这造成了打包者之间的信息不对称。打包者和用户之间是相互的,因为用户不知道打包中会包含多少笔交易。这导致了一场零和博弈,用户处于明显的劣势。

本研究旨在探索改善用户体验的方法,确保用户无需为加入下一个捆绑包而支付过高的费用。相反,用户应该能够根据实际的市场需求支付费用。

ERC-4337 的当前状态

在当今市场,P2P 内存池尚未在主网,而是在 Sepolia 测试网上进行测试。基于 ERC-4337 构建的公司目前以私有模式运营,用户通过 RPC 连接到私有捆绑器,然后该捆绑器将与一个构建器,用于在链上发布您的用户操作。由 Kofi 开发的Bundle Bear 应用程序提供了一些有关 ERC-4337 当前状态的有趣统计数据。

“每周 % 多用户操作捆绑包”指标中,我们观察到捆绑器创建包含多个用户操作的捆绑包的百分比。从 2024 年初到 2024 年 6 月,这一比例从未超过 6.6%。考虑到许多捆绑商有自己的付款人,即代表用户赞助交易的实体。值得注意的是,就发布的用户操作而言,两个最大的捆绑商也充当付款人,它们赞助了 97%使用其服务的用户操作。付款人支付一部分由用户操作,其余部分由 dapps 或其他实体支付。

问题是,为什么付费者、dAppETC要为用户操作付费。用户将来会偿还他们吗?我们无法确定会发生什么,但我个人猜测,目前,dApp 正在支付费用以增加其应用程序的使用和采用。一旦采用率很高,用户很可能必须自己支付交易费用。值得一提的是,在当前模式下,用户为用户操作付费并不是最好的选择,因为一个基本的 ERC-4337 操作需要花费~42,000 gas,而一个正常的交易需要花费~21,000 gas。

ERC-4337 的变体

ERC-4337 概述

内存池在 Sepolia 上仍处于测试阶段,尚未在主网。没有内存池,用户使用帐户抽象的选项有限。用户与 RPC 进行交互,这可能由捆绑 UserOps 的捆绑器提供,或者与一种不捆绑的 RPC 服务,类似于 Alchemy 或 Infura 等服务,它们接收交易并将其传播到其他捆绑器。

在没有内存池的情况下 ERC-4337 中的高级别交易

一旦内存池上线,交易流程将类似于下图,与当前的交易流程类似。内存池增强了用户的审查抵抗力,因为与 RPC 模型不同,它降低了交易被排除的可能性。然而,即使有了内存池,仍然存在 RPC 提供商可能不会转发交易的风险,但内存池模型对于喜欢运行自己的节点的用户特别有益,因为它可以减轻这种风险。

使用 EOA 的正常交易的高级别

高级用户操作类型事务

虽然打包商有可能充当建筑商,但由于竞争环境,我们更愿意将这两个角色分开。打包商将面临来自现有成熟建筑商的激烈竞争,使得建筑吸引力下降,利润也可能下降。因此,打包商更有动力与成熟的建筑商合作,而不是独立建设并承担损失的风险。

将打包者和构建者的角色合并为一个实体意味着对当前系统进行重大更改。打包者需要与现有的成熟构建者竞争,或者当前的构建者需要横向整合并承担打包者的角色。后一种情况虽然这种说法更加合理,但也引发了人们对市场集中度以及对抵制审查的潜在负面影响的担忧。

打包器和构建器是两个不同的实体

由于用户直接连接到 RPC,所以一切都在更私密的环境中运行,这不利于市场竞争。在不久的将来,内存池将进入主网,从而加剧竞争。

使用内存池,其中 userops 对不同的打包器公开,这会增加竞争,在非本机帐户抽象的情况下,需要在打包器和构建器之间进行分离,在本机帐户抽象的情况下,可能不需要分离,因为构建器可以将用户操作解释为正常交易。

对于我们的模型,我们认为将打包者和构建者分开也会带来一些优势,特别是在竞争和审查阻力方面。想象一下这样一个场景:所有打包者都为被纳入提供成本\textbf{v} v他们的捆绑包。会有一个捆绑商想要吸引更多用户以获得更高的利润,因此他们会提供一个成本\textbf{v'} v' ,其中\textbf{v'} < \textbf{v} v' < v如果打包者之间有足够的竞争,则\textbf{v'} v'将接近\omega ω ,即打包的聚合成本。在这种情况下,能够更高效地搜索并拥有更好硬件的打包者可以将更多交易纳入捆绑销售将赚取更高的费用,从而让用户的操作更便宜。

这可能导致以下结果:在竞争环境中,捆绑商将降低价格以供用户选择,而用户反过来会寻求以最低价格将其用户操作纳入捆绑包。这种竞争将创造一个系统中,提供最佳价格的打包商比那些只想通过创建较小捆绑包来最大化利润的打包商更常被选中。将打包商和构建商的角色分开也可以增强审查阻力。打包商可以创建一个捆绑包聚合用户操作并将其发送给不同的构建者。如果该捆绑包包含可能被审查的操作,则非审查构建者可以接受它并继续构建。但是,值得注意的是,从用户的角度来看,这种设置可能会增加成本,因为引入捆绑器会增加额外的参与方,从而导致更高的费用。

RIP-7560

原生账户抽象并不是一个新概念,人们已经对其进行了多年的研究。虽然 ERC-4337 正在获得关注,但它在协议之外的实现既有明显的优势,也有弊端。值得注意的是,现有的 EOA 无法无缝过渡到 SCW,并且各种类型的抗审查列表更难利用。如前所述,与普通交易相比,用户操作成本的 gas 开销显著增加。RIP -7560不会从本质上解决与链下成本有关的持续问题,但它大大降低了交易费用。从最初的~42000 gas,可以减少~20000 gas 的成本。

使用 RIP-7560 的 type4 事务的高级版本

Layer2s 账户抽象

账户抽象可用于第 2 层 (L2) 解决方案。一些 L2 已经原生实现了它,而其他 L2 则遵循 L1 方法并正在等待类似于 RIP-7560 的新提案。在 L2 中,L1 用于将数据提供给继承安全性,而大多数计算在 L2 的链下进行,从而提供更便宜的交易和可扩展性。

第 2 层中的高级帐户抽象

在 L2 上的计算成本明显低于主链上数据可用性 (DA) 的 calldata 成本的情况下,使用签名聚合被证明是非常有益的。例如,主网的 BLS 配对由来自EVM 大约需要花费 ~45000k gas。因此,在 L1 上使用 BLS 比传统交易更昂贵。

L2 上的压缩技术已经在使用中,例如 0 字节压缩,可将 ERC20 传输的成本从约 188 字节减少到约 154 字节。通过签名聚合,可以使用单个签名进一步提高压缩效率,将大小减小到~128 字节。

在第 2 层中,签名聚合是一项关键创新,可提高交易效率和成本效益。通过将多个签名组合成一个签名,可以显著减少整体数据负载,从而降低与第 1 层数据可用性相关的成本。这进步不仅提高了可扩展性,还降低了用户的交易成本,使系统更加经济、高效。

Layer2 中的签名聚合经济学

当使用 L2 服务时,用户会产生多项费用,包括 L2 运营商费用、基于网络拥塞的费用以及 L1 上数据可用性的费用。

从先前关于“ 从第一原理理解Rollup经济学”的研究中,我们可以概述用户在使用 L2 服务时面临的成本,如下所示:

当用户与第 2 层交互时,他会产生一些成本,我们可以定义如下:

  • 用户费用=L1数据发布费+L2运营商费+L2拥堵费
  • 运营商成本= L2 运营商成本 + L1 数据发布成本
  • 运营商收入=用户费用+MEV
  • 运营商利润=运营商收入-运营商成本=L2拥堵费+MEV

在非原生账户抽象的情况下,额外的实体(捆绑器)可能会对创建用户操作捆绑包收取费用。

考虑到打包商,成本和利润延伸如下:

  • 用户费用= L1 数据发布费用 + L2 运营商费用 + L2 拥堵费用 + 捆绑费
  • Bundler 成本= 报价(L1 数据发布费 + L2 运营商费 + L2 拥堵费)
  • 捆绑商收入=用户费用
  • 捆绑商利润= 捆绑商收入 - 捆绑商成本 = L1 和 L2 成本与捆绑商报价之间的差额 + 捆绑商费用
  • 运营商成本= L1数据发布费用 + L2运营商费用
  • 运营商利润=运营商收入-运营商成本=L2拥堵费+MEV

捆绑商从用户那里收取服务费,而用户支付的剩余部分则用于支付 L2 运营商的费用。如果用户不知道捆绑包的大小,则很难估算发送用户操作的实际成本,这可能会导致捆绑商收取的费用高于覆盖运营商成本所需的费用。

L2 中的激励协调

捆绑器和 L2 之间的交互有助于解决此问题,因为竞争会激励 L2 保持较低的用户成本。向用户收取过高的费用可能会促使他们转向提供更公平价格的其他 L2。

让我们通过引入运营商来重新定义我们的模型。用户通过出价 V打包者竞标,以纳入下一个 L2 区块。用户的目标是最小化数据发布费用,而打包者则寻求最大化他们的费用或获得L2 交互成本和用户费用的盈余。

创建捆绑包并将其发布到链上所涉及的成本可分为两部分:

链上成本函数:当基本费用r时,发行捆绑包\mathbf{B} B的捆绑器将花费以下成本:

C_\text{链上}(\mathbf{B}, r) = F \times r + n \times S \times r
C链上( B , r ) = F × r + n × S × r

聚合成本函数:打包器具有将n n 个交易聚合成单个打包\mathbf{B} B成本函数,基本费用为r r

C_\text{agg}(\mathbf{B}, r) = F' \times r + n \times S' \times r + n \times \omega
Cagg B r = F × r + n × S × r + n × ω

其中S' < S S < S表示交易的缩减大小,且预验证 gas 使用F' > F F > F ,其中包含单个链上聚合签名的发布和验证。

如果用户可以获得n n的可靠估计,他们可以使用大多数 L2 解决方案中提供的estimateGas函数计算其成本。有了良好的估计,用户就可以相应地出价,而不必高估他们的出价。此函数确定确保纳入所需的成本。对n nestimateGas函数有一个良好的估计可以避免用户支付更高的preVerificationGas 。在下一节中,我们将探索各种机制来确保对n n的可靠估计。

Layer2s 运行一个预言机

预言机的作用是监控内存池并估计存在的交易数量。该过程的工作原理如下:第 2 层部署预言机来检查内存池,然后通知用户内存池中的交易数量。这使用户能够估计他们对打包的出价。第 2 层可以要求打包者在打包中包含至少指定数量的交易( n n ),否则打包将被拒绝。一旦打包者收集到足够的交易来形成一个包,它会将包发送到第 2 层,然后将其作为调用数据转发到主网,以实现数据可用性。

观察者提案
观察者提案691×642 47.4 KB

具有共享序列器的 Layer2

一种有趣的方法是让多个第 2 层 (L2) 网络运行共享排序器。此设置可以更准确地估计内存池,因为排序器通过共享排序器促成的共识达成一致。

在此配置中,不同的 L2 网络独立运行,但共享一个公共排序器。这些网络会定期检查共享内存池中的用户操作 (userops) 数量。共享排序器有助于同步和聚合来自这些网络的数据。一旦它们达到根据协议,信息会传达给用户,允许他们根据现有的用户操作数量进行出价。

这种方法有几个优点。首先,它提供了一种去中心化的方法来确定内存池中的用户操作数,从而增强了对勾结的抵抗力。其次,它消除了如果只有一个系统管理用户操作之间的通信时可能发生的单点故障。用户和内存池。第三,共享排序器确保一致性并减少不同 L2 解决方案之间的差异。

通过利用共享排序器,该方法确保了一个强大而可靠的系统来评估和向用户传达内存池的状态,从而提高了整个过程的效率和安全性。

共享序列器
共享序列器764×785 66.3 KB

在使用预言机的两种方法中,存在一个潜在的攻击媒介,即攻击者可以在内存池中生成多个用户操作,并且知道如果将它们聚合在一起,它们将会被还原。因此,预言机看到有n交易并且需要较大的包,但打包器无法创建包。此问题可能会导致网络停滞很多块。

Layer2s 运行自己的捆绑器

在这个提案中,第 2 层本身承担了打包器的角色,而另一个实体负责处理签名的聚合(这可能是当前的打包器服务)。这个过程的工作原理如下:第 2 层运行自己的打包器,用户发送他们的操作(用户操作)到内存池。第 2 层从内存池中选择一些用户操作,并将它们“原始”发送到聚合器,以补偿聚合器聚合签名。聚合器生成捆绑包后,会将其发送到捆绑器,然后将其作为呼叫数据转发到主网以实现数据可用性。

其主要思想是第 2 层负责收集用户操作,然后将聚合工作外包给另一个实体。第 2 层负责支付聚合费用,并向用户收取服务费。

有两种不同的选择:

  1. 固定费用模型:打包器(序列器)选择一些交易并向用户收取固定费用。此固定费用的计算方式与当前的第 2 层交易类似,可预测未来第 1 层数据发布的成本。或者,第 2 层可以向用户收取基于捆绑n聚合用户操作的成本的固定费用,第 2 层仍然必须预测他将构建的捆绑中将存在多少笔交易才能正确引用用户,这可以用同样的方式进行,现在。由于现在 l2 向用户收取最有竞争力的价格,因此,对用户来说,保持价格尽可能有竞争力才符合第 2 层的最佳利益。

    固定费用
    固定费用671×702 22.1 KB
  2. 请求退款:如果第 2 层想要提高其可信度,它可以启用自动退款。这将涉及一种机制,该机制检查单个区块中发布了多少个用户操作以及交易是否可以聚合。如果一个用户操作可以如果没有聚合,也没有自动退款,用户可以请求退款。在这种情况下,Layer 2 可以质押一些资产,如果没有提供退款,用户可以强制退款,确保公平和责任。

    申请退款
    申请退款671×702 22.8 KB

结论

在这两篇不同的文章中,我们概述了用户在竞标加入下一个捆绑包时遇到的困难。在第一部分中,我们介绍了 ERC-4337 模型,解释了捆绑器在链上发布捆绑包时产生的成本以及相关的链下成本。我们还概述了打包器的费用市场,并开始讨论打包器的格式化问题。由于缺乏有关打包时内存池中交易数量的知识,用户在竞标时会遇到困难。

在第二部分中,我们解释了 ERC-4337 和 RIP-7560。然后,我们讨论了为什么签名聚合更有可能发生在第 2 层解决方案上,而不是直接发生在第 1 层。我们展示了第 2 层解决方案如何解决用户不同的方式可以实现不同的体验。第一种方法是使用预言机向用户发出信号,告知内存池中有多少交易,通过这种方法,用户知道他们应该出价多少,并且可以迫使打包者制作更大的打包。第三种方法最简单的就是L2作为一个捆绑器,把聚合工作外包给第三方,让用户支付费用。

来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
1
收藏
评论