AA钱包的运作实现和解决EOA钱包迁移的方案EIP-7377
August 30th, 2023

自从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钱包是一个重大的突破,这种在协议层面支持的平滑迁移方式,可以大大降低用户迁移到智能合约钱包的难度和路径依赖。

Subscribe to Will
Receive the latest updates directly to your inbox.
Nft graphic
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from Will

Skeleton

Skeleton

Skeleton