- 批处理:允许同一用户在一个原子交易中执行多个操作。一个常见的例子就是ERC-20获批准之后被再次花费,这在如今要求两笔交易的去中心化交易所中是一个常见的workflow(工作流程)。批处理的高级用例偶尔还会涉及到依赖关系:第一个操作的输出是第二个操作的输入的一部分。
- 赞助:账户X代表账户Y支付交易费。账户X可以通过其他ERC-20支付此项服务,或者它还可以是一个应用程序运营商,免费包含其用户的交易。
- 特权降级:用户可以签署子密钥,并赋予它们特定权限,这些特定权限要比帐户全局访问权限弱得多。例如,你可以设想一下这个权限是使用ERC-20代币支付而非ETH,或者每天支出总余额1%,再或者是仅与特定应用程序交互。
- 它引入了AUTH和AUTHCALL两个操作码,这在最终所有用户都使用智能合约钱包的“账户抽象终局”的世界里毫无用处(似乎最终必将是这样一个世界,最起码因为最终量子计算机将终止EOA使用的ECDSA)。
- 它将导致“invoker contract(调用者合约)”生态系统的发展,该生态系统将独立于“智能合约钱包”生态系统,从而导致付出的努力处于分散状态,形不成合力。
- FORK_BLKNUM = TBD
- TX_TYPE = TBD
- MAGIC = TBD
- PER_CONTRACT_CODE_BASE_COST = 5000
- 设置signer = ecrecover(keccak(MAGIC + contract_code), y_parity, r, s]
- 验证signer的合约代码为空
- 设置signer的合约代码为contract_code
- AUTH将被一个verify代码取代,该代码将使用TSTORE在本地设置authorized[msg.sender, ...] = True
- AUTHCALL将被一个execute调用所取代,该调用将使用TLOAD来验证authorized[msg.sender, ...],然后从那里开始执行。
- 用户需要签署的合约代码可以是现有的ERC-4337钱包代码。
- 所使用的“code pathways”是在许多情况下(尽管可能并非全部)在纯智能合约钱包领域里继续“行得通”的代码路径。
- 因此,它避免了“创建两个独立的代码生态”的问题,因为在很大程度上它们将是同一个生态系统。在这个解决方案下,可能会有一些需要组合的工作流程,在“账户抽象终局”下的各种“更加原生的”环境中可能会做得更好,但这只是相对较小的一部分。
- 它不需要添加任何操作码,将在后EOA世界变得无用。
- 它允许EOA以一种与现有EntryPoint兼容的方式,将自己临时转换为合约,以包含在ERC-4337交易包中。
- 一旦部署完成,EIP-5003将“只有一行代码”:只需添加一个flag,在交易结束时不将代码设置为空。