ERC-4337:探索账户抽象的五个主要技术组件

2023-05-19 19:55 栏目:行业动态 来源:网络整理 查看()

作者:伊甸园网络,翻译:金色财经小邹

2023年3月1日,ERC-4337在以太坊主网上线,增强了智能合约代表用户执行交易的能力。但实际上改变了什么?

ERC-4337:探索账户抽象的五个主要技术组件

ERC-4337 没有触及以太坊所依赖的核心共识层,而是增加了一个层,使开发人员有机会从根本上改变用户在链上交互和交易的方式。

本文探讨了ERC-4337 引入的五个主要技术组件,以及它们如何协同工作以执行用户交易。

ERC-4337:探索账户抽象的五个主要技术组件

ERC-4337标准有五个值得注意的关键组成部分:UserOperation、Bundler、EntryPoint、Aggregator和Paymaster

1UserOperation

简单来说:UserOperation 捕获用户意图和操作,包括与发送者、有效负载和gas 费率相关的信息。为了避免改变共识,以太坊团队选择创建一个全新的结构来捕获代表用户发送的交易中涉及的所有必要元素。

为了避免混淆,他们故意不称其为“交易”。

更具体地说:智能合约钱包现在可以创建一个名为UserOperation (userOp) 的伪交易对象。它在不发起传统交易的情况下表达了用户期望的交易意图。

UserOperations 无权访问可能在模拟之间发生变化的信息,例如当前区块时间、哈希值、区块编号等。这是为了确保它是有效的并且可以为执行链上交易支付。

UserOperation 只允许访问与发件人地址相关的数据。

与交易类似:UserOperation包括sender、to、calldata、maxFeePerGas、maxPriorityFee、signature、nonce字段。

与交易不同:nonce 和签名字段的使用不是由协议定义的,而是由个人帐户实现定义的。

UserOperation内存池

简单来说:UserOperation内存池是等待网络处理的未完成UserOperations的池。 UserOperations 被发送到UserOperation 内存池,而不是传统的公共内存池。

ERC-4337:探索账户抽象的五个主要技术组件

更具体地说:UserOperation内存池是UserOperation作为实际交易上链前的最后“一站”。之后,一个称为捆绑器的新质押器(稍后会详细介绍)取消每个UserOperation 并表现如下: EOA 支付gas 费用,并将UserOperations 作为交易执行提交给共识层。

这是专用的高级UserOperation 内存池,仅供UserOperations 使用,也称为常规内存池。内存池根据ERC-4337 规则严格执行。 ERC 还允许UserOperations 提供不遵循常规内存池规则的备用内存池(alt-mempool)。

符合ERC 规则的UserOperations 被发送到常规内存池。任何不遵循ERC 规则的东西都可能被发送到具有不同规则的备用内存池。这些备用内存池的UserOperations 仅发送给该池中的参与者。

捆绑器可以通过将常规内存池列入白名单或添加具有不同ID 的备用内存池来应对常规内存池中的故障。 Bundlers 可以自由加入常规内存池(必须无一例外地遵循ERC 规则)和备用池。

注:UserOperations 内存池的最终版本还没有完全定义,所以期待进一步的进展

一步的变化。然而,一个完全去中心化的内存池对于协议的采用和健康来说是必不可少的。

2Bundler

简单来说: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成本。

注意:在ERC-4337框架中,区块建设者也可以充当Bundlers角色,以提供更强大的执行保证,但这并不是必需的。如果没有这种更强大的执行保证,交易包将被发送到公共池,并且有可能发生抢先交易,导致交易包交易失败。

3Paymaster

简单来说:Paymaster是一个可选的质押者,可以为其他用户的交易支付费用。为什么?Paymaster可以为以太坊交易带来许多有趣的新功能,例如:

应用开发者可以很容易地为他们的用户补贴费用,例如作为一种获客手段。

用户可以使用ERC-20代币或信用卡或其他订阅服务等链下支付方式轻松支付gas费。

更具体地说:ERC-4337流程并没有强制要求必须使用paymaster。UserOperation使用paymaster通常有以下两种选择:

验证Paymaster:这些paymaster提供与链下流程相关联的gas抽象。例如,它可以让用户用信用卡或订阅服务支付交易费用,而不会损害他们的账户托管。

存款Paymaster:这些paymaster提供与链上ERC-20代币相关联的gas抽象。

Paymaster要么必须限制其存储使用,要么必须进行质押。

注:为了防止滥用,系统将降低速度或暂时封禁提交大量无效UserOperations的Paymaster。为了防止实体的“女巫攻击”,全局实体需要在系统中进行质押,这使得拒绝服务(DoS)攻击的成本很高。该质押不会被罚没,可随时提取,但会受延迟限制。不访问全局存储的全局实体例外。

4Aggregator

简单来说:Aggregator是一类特殊的参与者,利用helper智能合约来处理批量UserOperation签名,并将它们转换成一个签名,也就是将其聚合。

更具体地说:Aggregator是一个受合约帐户信任的helper智能合约,用于验证聚合签名。UserOperations包由Aggregator在单个步骤中进行验证,而不是单独验证每个签名。Aggregator旨在提高大规模交易处理的效率和成本。

当前的现实:ERC-4337的交易量还不够高,不足以显现签名聚合的好处,但交易量正在快速增长,一旦达到临界值,Aggregator就会成为一个关键的利益相关者,促进大规模交易。

压缩的实现过程超出了本文的讨论范围。然而,它已经整合进ERC-4337的设计中。最流行的压缩方法就是使用BLS签名聚合。

从用户的角度来看,他们看不出有任何不同,但是开发人员需要在智能帐户中部署BLS签名逻辑。

5EntryPoint

简单来说:EntryPoint合约是一个单例合约,验证并执行发送给它的UserOperations包。它检查并确保由bundler发送的提交到链上的所有UserOperations都是真实有效的。

更具体地说:EntryPoint合约是所有符合ERC-4337标准的智能合约钱包必须使用的全局入口点,以便在EVM上进行交易。这一概念类似于单个质押存款合约。

EntryPoint的使用简化了智能合约钱包使用的逻辑,将确保安全所需的更复杂功能推至入口点,而不是钱包本身。其核心目的是防止钱包在进入网络之前进行不必要或未经授权的操作。

EntryPoint序列

下图展示了EntryPoint是如何管理Bundler发送的UserOperation包的。通常有两个阶段,但在使用aggregator的情况下,会增加一个阶段。

ERC-4337:探索账户抽象的五个主要技术组件EntryPoint序列相对简单,有两个阶段:

如果存在aggregator:

ERC-4337:探索账户抽象的五个主要技术组件如果没有aggregator:

ERC-4337:探索账户抽象的五个主要技术组件序列中的每个循环都有自己的角色,如下:

循环1:Aggregator循环

如果一个交易包使用了aggregator,那么EntryPoint会首先检查aggregator。由Entry Point来验证签名。

循环2:验证循环

首先,它会检查合约帐户是否存在。如果不存在,它就会创建一个。

如果没有定义paymaster序列验证Contract Account在EntryPoint中是否有足够的存款来支付gas费。如果存款充足,它就会为UserOperation付费。

如果定义了paymaster:序列验证paymaster在EntryPoint合约中是否有足够的存款。如果存款充足,那么合约将验证UserOperation。

循环3:执行循环

它使用callData调用合约帐户。

如果定义了paymaster,它将调用paymaster中的自定义费用逻辑。

只有在UserOperation通过序列循环的考验后,才能最终上链。

ERC-4337:探索账户抽象的五个主要技术组件结论:

虽然为了避免混淆,ERC-4337特意使用了不包含“交易”字眼的用语,但实际上,它可以被视为用户交易上链的替代流程。一旦把所有组成部分连接起来,协议就有能力向现有EOA交易流程引入新的用户意图层。

AA(账户抽象)钱包的用户将把他们的意图传递给UserOperations内存池。Bundlers将这些意图转换为网络可以像以前一样处理的签名交易。

虽然对于开发者来说,这看起来像是一个有额外步骤的“交易”,但对于用户来说,这就是手动输入用户名/密码并将其记在笔记本上以确保安全,或使用OAuth只点击几下就可访问web3应用程序之间的区别。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发