在这篇文章中我们将得到一个关于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