以太坊区块链关于账户抽象的 EIP–4337 提案,是当前智能合约钱包热潮中的焦点。让用户在链上自行管理资产,是区块链技术给互联网带来的一个主要变革,而这也是所谓「可拥有」的 Web3.0 给出的最大承诺。但目前,对于用户来说,依赖于助记词、私钥的链上账户有着极高的使用门槛;而对开发者来说,当前的账户本身没有编程性可言。
EIP–4337 的「钱包合约账户」或将改变上述链上账户的尴尬状态,并成为众多 Web3.0 应用提供给用户自行保管资产的主要方式,且有可能会推动 Web3 的大规模采用。在这里,我将基于提案技术规格和项目组的官方代码实现,来探讨它带来的机遇及如何实际开发。
编者注:本份研究报告作者采用了与传统 Web2 解决方案对比介绍的撰写手法,通过掰开揉碎、深入浅出的方式,使得非技术背景人员也能够获益良多。
作者:方军,Web3Caff Research 特邀研究员
封面:Photo by Resource Database™ on Unsplash
字数:本份研报超 16000 字,预计阅读时长 33 分钟
目录
- 前言
- 一个使用场景
- EIP-4337 带来的六个变化
- EIP-4337 相关术语表
- 为什么需要 EIP-4337
- 以太坊账户:EOA 外部账户与合约账户
- 当前实践中的以太坊账户改进
- 现有改进之一: 多签钱包
- 现有改进之二: 无需燃料费的元交易
- EIP-4337 的三种场景
- 场景一: 用户的「钱包合约账户」自付燃料费
- 场景二: 由代付者(Paymaster)支付燃料费
- 场景三: 使用聚合签名
- EIP-4337 的原理与组件
- 运行 EIP-4337:通过运行理解
- 准备工作: 合约部署与运行打包者
- 创建账户: 首次操作钱包
- 资产转账: 转账 ETH 与 ERC20 Token
- 代付机制: 代付者支付燃料费
- EIP-4337 的组件详解
UserOperation
- 入口点合约 EntryPoint
- 打包者、打包者网络与 UO Mempool
- 运行 EIP-4337:通过运行理解
- 应用与钱包开发者的视⻆
- 钱包应用的两项关键任务
- 钱包合约与部署者合约
- 链外签名与链上签名验证
- 代付者合约
- 总结与展望
隐藏内容,Web3Caff Research 订阅会员可见
毫不夸张的说,Web3Caff Research 已经把 4337 研究透透的了!!前有「ERC-4337 标准研究报告:以太坊为钱包提供的局部最优解」「以太坊账户抽象万字研报:拆解 10 个相关 EIP 提案与冲击千万级日活用户瓶颈的七年之路」这两份研报,其次又带来这份极具深度的实现篇,感谢方军老师和十四君老师的辛苦撰写以及对行业布道的推动。
赞一个,全文读完受益颇多!4337 影响太大
您好,我有几个关于 bundler 的问题,我在看 alchemy 的文章时有句话是 “To be specific, the executor will reject the user op without ever putting it on chain unless validateOp satisfies the following restrictions:
1. It never uses opcodes from a certain banlist, which includes codes like TIMESTAMP, BLOCKHASH, etc.” 应该是指 bundler 最好在验证时别采用像 timestamp 这种的环境变量防止在 validateop 上白白浪费 gas(https://alchemy.com/blog/account-abstraction),但是 arbitrum 最近的 aa 部署允许用户指定 timestamp 跟 block number(https://www.theblockbeats.info/flash/161663?from=telegram),请问这是为什么
@Kevinzzz: 更正一下问题,bundler 可以拒绝采用环境变量的 userop,arbi 的这操作不会增加 bundler 拒绝率吗或是说已经可以处理带环境变量的 userop 同时 bundler 也可以不亏钱执行