津巴布韦央行探索使用黄
ERC-4337:探索账户抽象的五个主要技术组件
作者:Eden Network,翻译:金色财经xiaozou
2023年3月1日,ERC-4337上线以太坊主网,增强了智能合约代表用户进行交易的能力。但实际上,到底发生了什么变化?
ERC-4337并没有触及以太坊所依赖的核心共识层,而是添加了一个层,使开发人员有机会从根本上改变用户的链上交互和交易方式。
本文,我们将研究ERC-4337引入的五个主要技术组件,以及它们是如何协同工作执行用户交易的。
ERC-4337标准有五个关键组件值得关注:UserOperation、Bundler、EntryPoint、Aggregator和Paymaster。
1、UserOperation
简单来说:UserOperation捕捉用户的意图和操作,包括与发送方、有效负载和gas费相关的信息。由于它的设计是为了避免更改共识,以太坊团队选择创建一个全新的结构,以获取代表用户发送的交易所包含的全部必要元素。
为了避免混淆,他们特意没有将其称为“交易”。
更具体地说:智能合约钱包现在可以创建叫做UserOperation(userOp)的伪交易对象,代表用户所期望的交易意图,而无需初始化传统交易。
UserOperation不能访问任何在模拟和执行之间可能发生变化的信息,例如当前区块时间、哈希值、区块号等。这是为了确保它的有效性,并且能够为其链上交易执行支付费用。
UserOperation同样只允许访问与发送方地址相关的数据。
与交易类似:UserOperation包含sender、to、calldata、maxFeePerGas、maxPriorityFee、signature和nonce字段。
与交易不同:nonce和signature字段的使用不是由协议定义的,而是由各帐户实现定义的。
UserOperation内存池
简单来说:UserOperation内存池是一个等待网络处理的未执行UserOperations的池。UserOperations被发往UserOperation内存池,而非传统的公共内存池。
更具体地说:UserOperation内存池是任一个UserOperation作为真正交易上链之前的最后一个“停靠站”,然后,称为bundler(下文将详细介绍)的新质押者可以从该内存池里提取各UserOperation,充当了EOA角色,支付gas费并将UserOperations发送到共识层作为交易执行。
这是一个专用的高级UserOperation内存池,仅供UserOperations使用,也称为canonical内存池。该内存池遵循并严格执行ERC-4337规则。ERC也允许为UserOperations提供不遵循canonical内存池规则的替代内存池(alt-mempool)。
遵守ERC规则的UserOperations被发送到canonical内存池。那些不遵守ERC规则的可以被发送到其他规则不同的替代内存池。这些替代内存池中的UserOperations仅被发送给该池的参与者。
Bundlers可以通过加入白名单或加入另一个不同ID的替代内存池来应对canonical内存池的异常情况。Bundlers可以自由加入canonical内存池(他们必须无一例外地遵守ERC规则)及替代池。
注:UserOperations内存池的最终版本尚未完全定义,因此预计会有进一步的变化。然而,一个完全去中心化的内存池对于协议的采用和健康来说是必不可少的。
2、Bundler
简单来说:Bundler充当着它从canonical内存池和替代内存池中所提取的全部UserOperations的EOA的角色,Bundler将UserOperations发送到EntryPoint合约进行验证和完整性检查,然后,最后进入我们在ERC-4337出现之前的世界里所习惯的交易流程。
更具体地说:Bundler是一个专门的操作员,它监听UserOperation内存池和所有内存池,提取多个UserOperations,将它们打包在一起,并将交易包发送给EntryPoint合约执行。这看起来非常像从EOA到智能合约的交易,其中UserOperations的执行就如内部交易。“from”地址将是Bundler,“to”地址将是EntryPoint合约。
Bunders选择将哪些UserOperations对象包含在他们的打包交易中,基于与今天以太坊的区块建设者所使用的类似的价值最大化逻辑。
成为Bundler的经济模型/动机是什么?
交易上链时,Bundler充当“from”地址,正因如此,Bundler将使用ETH为交易包支付gas费。Bundler作为所有单个UserOperation执行的一部分,随后会获得费用补偿。
在接收UserOperation之前,Bundler将模拟它来验证签名,确保UserOperation可以支付费用,并确保UserOperation在模拟和执行时以相同的方式运行。要靠Bundler来避免包含验证失败的UserOperations,避免吸收那些无法支付的gas成本。