科普 | 一文了解EIP-4337提案的工作原理和优缺点

原标题:《账户抽象:EIP-4337》

在这篇文章中我们将得到一个关于EIP-4337在帐户抽象中的角色的完整概念。


介绍


该提案包括一些更改,以避免对共识层协议的更改,而不是依赖于更高层的基础设施。它旨在实现以下目标:

  • 帐户抽象:允许用户使用包含任意验证逻辑的智能合约钱包,而不是EOA作为他们的主要帐户。
  • 去中心化:允许任何绑定者参与包含帐户抽象用户活动的过程。用户不需要知道任何参与者的直接通信地址,就可以处理跨公共内存池发生的任何活动。
  • 无共识更改:为了更快的采用,这个提议避免了共识变更。
  • 支付交易费用:使用ERC-20代币支付交易费用,使开发人员能够为他们的用户支付费用,以及类似EIP -3074的赞助交易用例。

以下是该提案中的一些新特性。所有操作都在对等内存池中进行。用户不必担心他们的钱包合约已经发布,因为钱包存在于确定性的CREATE2地址,如果钱包不存在,UserOperation会自动创建它。用户现在将能够设置一个固定的费用溢价和最大总费用,并期望它能够快速包含在内并合理收费。通过模拟检查的UserOperation被保证是可包含的,直到发送者有另一个状态改变,这将要求攻击者为每个发送者支付7500+ gas。


工作


用户发送UserOperation对象,该对象封装了用户的目的以及用于验证的签名和其他数据。利用Flashbots等服务的矿工或绑定者可以将UserOperation对象组合成单个捆绑交易,然后将其包含在以太坊区块中。绑定者为ETH中的捆绑交易支付成本,并通过每个单独执行UserOperation所支付的费用进行补偿。绑定者将使用费用优先级逻辑选择包含哪些UserOperation对象。

为了简化钱包的逻辑,维护安全所需的大多数复杂智能合约逻辑都在钱包之外执行,在一个称为入口点的全局合约中执行。validateUserOp和执行功能预计将与 门控require(msg.sender == ENTRY POINT),这样只有可信的入口点才能触发钱包进行操作或支付费用。在使用有calldata的UserOperation验证userop成功之后,入口点对钱包进行任意调用,这样做是为了保护钱包免受攻击。

如果成功模拟了UserOperation的验证,则保证UserOperation在发送方帐户的内部状态更改之前是可包含的。


发起交易


我们可以允许应用开发者代用户支付费用,并允许用户用ERC20代币支付费用,通过合约作为中介收取ERC20代币并使用ETH支付。

该提案可以通过付款主管机制支持上面的用例。

  • 对于用例1:Paymaster验证发起人的签名包含在paymasterData中,表明发起人已经准备好为UserOperation付费。如果签名有效, Paymaster接受,UserOperation费用从发起人的份额中扣除。
  • 对于用例2:Paymaster检查发起人钱包是否有足够的ERC20余额来支付UserOperation。如果是,Paymaster接受并支付ETH费用,然后在postOp中申领ERC20代币。


优势


  • 验证逻辑灵活性:validateUserOp函数添加了任意签名和随机数验证逻辑。
  • 执行逻辑灵活性:钱包将能够为执行步骤添加自定义逻辑。
  • 钱包可升级性:钱包将能够更改其公钥或升级其代码。


缺点


  • 增加DoS漏洞:验证逻辑比单个ECDSA验证更复杂。
  • 一次一个交易:帐户不能排队并将多个交易发送到Mempool。
  • Gas开销:与正常交易相比,更多的gas开销。

Source:https://medium.datadriveninvestor.com/account-abstraction-eip-4337-40a94d5b6d2c