自从OK推出了AA钱包,CC升级兼容ERC-4337后,账户抽象、AA钱包的讨论络绎不绝,经过多次space和社区内部讨论,总结了关于AA钱包和
内容包括:
1. AA钱包和ERC-4337的技术实现
2. EOA钱包到AA钱包的迁移问题
3. EOA钱包到AA钱包到技术解决方案EIP-7377
AA钱包和ERC-4337的运作实现
ERC-4337 有五个主要组成部分:UserOperation、Bundler、EntryPoint Contract、Wallet
Contract、Paymaster Contract。
运行流程如下:
1、发起一个“用户操作”,包含它想要执行的交易。
2、将操作发送到P2P“用户操作内存池”。
3、操作由“Bundler”(打包者)负责,Bundler将所有的UserOperation打包成一笔交易提交上链。
UserOperation
4337引入了“user operations”(用户操作)的概念,UserOperations是用于让合约钱
包执行的伪交易对象。
“用户操作”代表用户的意图,像交易包含一些字段一样,它也有如右边所示字段。“nonce”和“signature”字段的使用不是由协议定义的,而是由每个钱包实现定义。signature可以是任意类型签名,为防止重放攻击(跨链和多个EntryPoint 实现),signature应该依赖于chainid 和EntryPoint地址。用户将他们希望钱包执行的操作打包在一个名为UserOperation 的 ABI 编码结构中
那么目前基本的共识都是AA钱包是web3钱包的未来,能够让加密钱包像电子邮件一样简单。
Bundler: 前面说了,因为是伪交易对象,所以没办法进入交易事务内存池,在不对共识层进行改造的基础下,ERC-4337引入了用户操作内存池(user operation mempool)
UserOP进入用户操作内存池后,bundlers(运行专用代码的矿工,或者可以将交易转交给矿工的用户)的参与者会一直监听UserOP mempool,Bundler打包前会做检查(是否已有合约,是否重复)、模拟,并将内存池中的UserOP进行打包处理成一个事物提交给入口点合约(EntryPoint Contract)。
EntryPoint Contract: EntryPoint是链上执行的入口,用户发送的UserOP经过bundler打包后,提交给Entry Point合约,入口点合约处理所有用户操作,包括验证钱包是否存在、要求钱包验证用户操作、将用户操作发送至智能合约钱包进行执行。
也就是在这里,执行合约实现之前所有的意图,可以实现之前想要的任何签名形式,包括邮箱登陆等,钱包开发者可以选择相应场景的签名形式去开发钱包产品,这一步也是“空调启动”的一步。
Paymaster Contract: 扩展了Entry Point逻辑以支持为用户支付交易Gas费的付款人。此功能可用于允许应用程序开发人员为其用户补贴费用,允许用户使用ERC-20 代币和许多其他用例支付费用。
设置了paymaster地址后,Entry Point会走不同的流程: 在循环中,除了验证UserOP外,还必须检查 paymaster 是否在Entry Point中有质押保证金并存有足够的ETH 来支付gas,然后调用validatePaymasterUserOp来验证 paymaster是否愿意支付gas费用,即代付gas。
Wallet Contract: 用户存储资产的合约钱包,可以高度定制钱包逻辑(如:多签,社交找回等)。钱包必须实现签名验证接口,用于验证操作是否为钱包控制人发起的。
EOA钱包的迁移问题及EIP-7377解决方案 虽然说AA钱包致力于降低互联网用户进入 Web3 门槛,但比较搞笑的是,降低了圈外用户进入web3,却增加了我们原生的web3用户的迁移成本,就好比对于一个没用过智能手机的人,对于他来说,选择用苹果手机和安卓手机,这个选择的成本是很小的。
而对于原本使用苹果手机的人来说,重新选择使用安卓手机的成本较大,因为IOS生态的很多东西都没办法直接迁移到安卓系统中,包括账号数据、图片等等。 我们大量的资产仍然存放在EOA钱包账户中,无法轻易将EOA账户中的所有资产手动迁移到新的智能合约地址,无论从成本还是操作流程来看都非常困难。
EIP-7377提案为此提供了一种可能的解决方案,通过在协议层面提供从EOA向智能合约钱包迁移的机制,来解决这一现实需求,实现平滑过渡。这或许将大大增加存量用户迁移的意愿,以及为增量用户进场时,在账户抽象尚未普及前,提供一种更加实用主义的EOA过渡方案。 提案原文:
该提案由Go Ethereum开发者Matt Garnett提出,其目的是添加一种新的交易类型,允许EOA账户通过一次性交易将账户永久迁移到智能合约钱包。这为推进以太坊账户抽象提供了一条可行路径。
那么,这个提案具体是如何实现EOA向智能合约钱包转移的呢? EIP-7377提出了一种新的交易类型0x04,专门用于"迁移交易"。原帖的技术语言描述的十分复杂,这里我尝试做一个通俗的解释:
那么,这个提案具体是如何实现EOA向智能合约钱包转移的呢? EIP-7377提出了一种新的交易类型0x04,专门用于"迁移交易"。原帖的技术语言描述的十分复杂,这里我尝试做一个通俗的解释:
EIP-7377提出了一种特殊的交易类型,这种交易的对象就是原EOA钱包里的一切数据,包括资产、链、交易数据等等,具体的信息如下图,把原EOA钱包的一切信息当作一个资产,Transfer到了AA钱包,我理解为是一种“四维搬家”。
然而,这个过程中很多可以想象的到的风险,将资产以交易对象的形式发出,很容易可以迁移过程中植入代码,以迁移的名义获取你钱包的所有权,轻松盗取资产。
目前来看EIP-7377虽然不是非常成熟,但对于EOA钱包过渡到AA钱包是一个重大的突破,这种在协议层面支持的平滑迁移方式,可以大大降低用户迁移到智能合约钱包的难度和路径依赖。