其他
万物研究院:Web3的下一个十亿级用户市场?全面解读账户抽象与EIP4337的技术和应用
简介
第一部分:EIP 4337的全面技术分析
首先来简要回顾一下基础知识,以太坊有两种类型的账户:外部拥有的账户(externally owned accounts,即EOA)和合约账户。
EOA是用户控制的账户,可以发送交易。EOA通过其私钥控制账户的所有权,可以通过签名执行交易,从而改变EOA的内部状态或外部合约账户的状态。由于私钥(或种子短语)是EOA所有权的唯一代表,EOA不适合定义复杂的所有权或交易逻辑,如使用社交媒体账户登录(social login)和多方签名(multisig)的交易。EOA的局限性导致用户体验不佳:一些冗杂的步骤,如私钥和种子短语管理,更是直接阻碍了Web2用户进入Web3。大多数最受欢迎的钱包,如MetaMask,都是基于EOA的账户模型。 合约账户可以托管任意的Solidity代码,因此可以发挥EVM全部的图灵完备特性。遗憾的是,合约账户不能发送交易,因此它们的功能必须由EOA触发。智能合约钱包是一种合约账户,通过钱包提供商的EOA网络间接地被其用户触发,无论是通过中继器(relayer)还是打包器(Bundler)。
总体而言,所有的技术实现都在顶层(智能合约层),从而避免触及共识层和执行层等底层基础设施。账号模型这种基本设计如果在底层改动会成为像以太坊PoS主网合并一样的重要升级。因为开发人员的精力有限,只能采用合约层实现的轻量级技术路线。 协议接口的设计应该是模块化的,这样用户可以自定义选项,包括交易打包处理(Bundler)、gas代付(Paymaster)和签名聚合(Aggregator)。 理想情况下,上述每项服务都将成为一个具有竞争性的开放市场。用户可以根据提供商的价格和声誉选择最佳的服务。
首先,智能合约钱包本身,会通过打包器触发入口合约来间接触发,在链下验证交易,然后在链上执行。 其次,打包器(Bundler),用于批量验证和执行用户操作( UserOperation
,即EIP 4337定义的智能合约钱包的交易类型)。第三,入口合约(Entry Point Contract)是在以太坊只存在一份的全局合约,用于标准化交易执行并防止打包器受到恶意交易的DoS攻击。 第四,代付合约(Paymaster),用于代表钱包用户处理gas支付。 第五,合约工厂(Wallet Factory),用于标准化钱包创建的参数和流程。 第六,签名聚合器(Signature Aggregator),用于将多个交易的签名聚合为字节,以便更快地验证和执行交易。
UserOperation
)和上述的六个合约接口,是对官方EIP 4337文档和David Philipson@Alchemy账户抽象系列的解读。1. 账户操作(UserOperation)
UserOperation
本质上和普通交易相同,只是基于EIP 4337的合约接口定义了额外的参数。这里回顾一下,一个EOA触发的普通以太坊交易有交易目标地址、转账以太坊数量、gas数量和gas价格等参数。UserOperation
包括以下主要参数用于定义接口的触发:calldata
:定义要在智能合约钱包上调用的函数签名(function signature)和输入参数,calldata
在普通交易中也有signature
:验证交易确实来自某智能合约钱包地址,signature
在普通交易中也有nonce
:防止重放攻击,在普通交易中也有sender
:指定执行UserOperation
的智能合约钱包地址paymasterAndData
:用于交易手续费抽象(gas abstraction),包含代付合约(Paymaster)地址和gas支付的具体参数initCode
:用于钱包创建,包含钱包工厂(Wallet Factory)合约地址和创建智能合约钱包的参数,如钱包的合约代码
UserOperation
的工作流程与普通交易类似:它们都被广播到mempool中进行验证、执行并最终完成出块。UserOperation
的验证和执行由打包器(Bundlers)触发,我将在下文中解释。UserOperation
参数的定义2. 打包器(Bundler)
UserOperation
交易,因为在以太坊上,所有交易都必须由EOA触发。Bundler使用户不用创建和记忆EOA的私钥就可以触发智能合约钱包交易,这也是智能合约钱包存在的初衷。Bundler可以在执行 UserOperation
后将最大优先gas费(maximum priority fee)与实际gas花费之间的差额收入囊中与普通交易的中继器(Relayer)类似,Bundler可以通过排序捆绑交易(bundle)中的 UserOperation
来获取MEV
UserOperation
,从而节省gas成本。此外,在同一笔交易中多次修改storage,每次额外操作的gas费都会边际递减。UserOperations
可以放在一个捆绑交易里执行,因为Bundlers可以设置同一智能合约钱包地址最多包含一个UserOperation
,这样捆绑交易在修改状态时不会相互冲突。UserOperation
广播到公共或私有的mempool中。接下来,我们将介绍入口点合约(Entry Point Contract),Bundler需要与之交互来执行UserOperation
。3. 入口点合约(Entry Point Contract)
UserOperation
。它充当了Bundler与智能合约钱包之间的中间人:一方面,Bundlers调用入口点合约的 handleOp
函数,该函数接受一个UserOperation
作为输入参数。handleOp
负责根据UserOperation
的calldata
验证并执行智能合约钱包的函数handleOp
首先在链上验证UserOperation
,检查它是否由指定的智能合约钱包地址签名,以及钱包是否拥有足够的gas来补偿Bundler如果验证成功, handleOp
将根据UserOperation
的calldata
中定义的函数签名和输入参数执行智能合约钱包函数另一方面,智能合约钱包需要向入口点合约存入代币用于支付gas费用给Bundlers。当Bundler使用EOA触发 handleOp
函数时,会产生gas费用。除此之外,智能合约钱包也可以用自己的账户余额支付gas费用给Bundler,也可以请求代付合约(Paymaster)代为支付,我们稍后会详细解释 没有足够gas的 UserOperation
在目标智能合约钱包中无法通过验证步骤,因此在执行之前就会失败即使有足够的gas, UserOperation
在执行步骤中仍可能失败,例如runtime error无论执行是否成功,入口点合约都将支付gas费用给Bundler触发 handleOp
函数入口点合约提供了智能合约钱包添加或提取代币抵押的函数
4. 智能合约钱包主合约
UserOperation
的验证和执行步骤分开:验证步骤在 validateOp
函数中定义。此函数会被调用两次:第一次是Bundler在链下模拟验证,验签UserOperation
中的签名,并确保智能合约钱包有足够的gas余额;第二次是入口点合约在执行UserOperation
之前进行链上验证执行步骤在 UserOperation
的calldata
中定义,用于指定智能合约钱包函数的签名和输入参数
UserOperation
的验证和执行,Bundler可以在链下验证UserOperation
,从而不需支付gas就可以过滤掉恶意交易。 因此validateOp
函数也起到了链下debug API的作用。5. 代付合约(Paymaster)
UserOperation
通过paymasterAndData
参数指定任意的Paymaster地址和输入参数。Paymaster具有以下功能和要求:本质上,Paymaster是由dApp部署的智能合约,可以通过Bundler触发Paymaster的 validatePaymasterOp
函数以任意逻辑有选择性地为合约指定的UserOperation
支付gasPaymaster需要在入口点合约上存入以太坊用于支付 UserOperation
的gas除了存入gas外,Paymaster还需要在入口点合约上额外质押以太坊。这个质押不会被slash,但可以防止机器人恶意批量创建Paymaster
UserOperation
提供可靠的服务。validatePaymasterOp
:定义gas抽象逻辑。例如,在一个智能合约钱包以ERC20代币支付gas的场景中,此函数将确保钱包具有足够的余额。validatePaymasterOp
在执行UserOperation
之前被调用,符合将验证步骤和执行步骤分开的设计逻辑postOp
:在智能合约钱包执行某一函数的最后一步被调用。如果钱包没有足够的ERC20余额来支付gas费给Paymaster,postOp
会取消函数执行。即使在此步骤中函数执行因为runtime error失败,gas仍然会被扣除。
6. 钱包工厂(Wallet Factory)
UserOperation
有一个可选的initCode
字段。当initCode
为空时,UserOperation
只是触发智能合约钱包的功能。当initCode
填充了Wallet Factory地址和新智能合约钱包的参数时,Bundler将触发相应的Wallet Factory使用指定参数创建智能合约。用户可以通过提交填充了 initCode
的UserOperation
来请求Bundler创建智能合约钱包,而无需拥有EOA来自行创建用户可以通过选择具有特定定制选项的Wallet Factory并传入自己的参数来定制智能合约钱包。此外,因为Wallet Factory合约是公开的,而且受欢迎的Wallet Factory会经过全面的代码审计,所以使用Wallet Factory创建新钱包对用户更安全 用户可以选择让Paymaster代付创建钱包的gas或者用任意ERC20代币支付gas,无需拥有以太坊。此外,Paymaster可以选择只为其信赖的Wallet Factory部署的智能合约钱包支付gas 用户可以在创建钱包之前通过调用 CREATE2
函数获取他们的智能合约钱包地址。该函数使用触发智能合约钱包创建的EOA地址、一个salt和initCode
确定性地生成智能合约地址。用户在创建钱包时不需要支付gas,只需要在用钱包进行第一笔交易时同时支付创建钱包和交易的gas,从而提高用户体验。
UserOperations
提供良好的服务,以便从Bundler那里获得更多流量。7. 签名聚合器(Signature Aggregator)
UserOperations
聚合起来,然后分别进行验证。此外,由于链上密码学计算会消耗大量gas,支持聚合的签名方案(如BLS)可以在链上验证过程中节省gas。因此我们需要一个名为签名聚合器(Signature Aggregator)的EIP 4337智能合约接口。它可以通过实现以下两个函数来支持特定的签名算法:aggregateSignatures
:输入参数为一个UserOperations
数组,并使用特定的签名算法输出一个聚合签名validateSignatures
:输入参数为一个UserOperations
数组和一个聚合签名,用于对数组里的所有UserOperation
进行验签
UserOperation
,Bundler首先会使用多个签名聚合器合约(每个签名算法使用一个)生成多个聚合签名(每个签名算法生成一个)。之后,Bundler将UserOperation
数组、聚合签名和聚合器地址传递给入口点合约,每个UserOperation
数组会调用其对应的签名聚合器的validateSignature
函数。验证通过后,Bundler就会在智能合约钱包上执行这组UserOperations
。UserOperations
提供良好服务的记录。8. 整体工作流程总结
用户向Bundler发送 UserOperation
如果 UserOperation
填写了initCode
参数,Bundler会触发Wallet Factory来创建有确定地址的新钱包如果 UserOperation
填写了paymasterAndData
参数,Bundler会收取Paymaster在入口点合约上质押的以太坊来支付gas。如果没有填写paymasterAndData
,Bundler会收取智能合约钱包在入口点合约上质押的以太坊来支付gasBundler可以选择性地使用签名聚合器 Bundler会使用 validateOp
、validatePaymasterOp
和validateSignatures
函数在链下模拟验证UserOperation
,确保签名正确且UserOperation
有足够的gas如果链下模拟验证通过,Bundler将使用上述函数在链上验证 UserOperation
如果链上验证通过,Bundler将在链上执行 UserOperation
,无论执行是否成功,都会扣除gas
9. 其他注意事项
UserOperation
在链下和链上都会触发validateOp
等函数进行交易验证。为了防止智能钱包合约外部的状态变化(state change)导致链下和链上的验证结果不一致,EIP 4337禁止验证函数使用读取合约外部storage和读取全局状态(如时间戳)的OpCodes。这种禁止适用于validateOp
、validatePaymasterOp
和validateSignatures
这些验证函数。第二部分:账户抽象市场参与者
1. 智能合约钱包及配套SDK
a. 社交登录(social login)和社交恢复(social recovery)
Web2服务提供商:例如钱包用户的社交媒体帐户,通常通过实施OAuth(Open Authorization,即开放授权)标准来实现。该标准允许钱包获取用户授权来访问由另一个Web2应用托管的用户账号信息 用户设备:例如浏览器存储和移动端存储 电子邮件:例如通过点击可以发送签名的电子邮件链接进行授权 多签名:用户可以设置多个个人拥有的EOA或智能合约钱包作为守护者 MPC:用户可以将私钥分割成多个份额,每个份额由MPC网络中的一个节点控制,且不会泄露完整的密钥 SWIE(sign in with Ethereum,即用以太坊登录)
Web3Auth是许多高流量智能合约钱包使用的社交登录和MPC服务,这些钱包包括Biconomy、Etherspot和0xPass。Web3Auth把用户密钥分割成多份给社交登录、用户设备和其MPC节点网络等守护者。产品逻辑实现完全在链下,且没有任何一个守护者会存储完整的私钥。(请参见下图。) BLS Wallet和Argent使用多签技术(multisig)通过用户指定的多个EOA地址进行密钥恢复。 UniPass实现了一种创新的方法,通过电子邮件进行社交恢复。用户在链上提交守护者的邮箱,并通过智能合约在链上验证邮箱的DKIM签名。DKIM(Domain Keys Identified Mail,即域名密钥识别邮件)是一种电子邮件身份验证协议,用于创建数字签名。邮箱供应商可以使用该数字签名验证邮件发送者的身份。UniPass还使用零知识证明对链上的用户信息进行脱敏处理。UniPass也支持邮件之外的社交恢复方法。 Soul Wallet在链上验证守护者的邮箱地址以进行社交恢复。
b. Gas Abstraction(gas抽象,gas即交易手续费)
除了支付gas外,Relayer还会对交易进行签名,类似于EIP 4337中的Bundler所做的事情 Relayer不只处理 UserOperations
类型的交易Relayer不在入口点合约上质押gas
Biconomy不仅自行实现了与EIP 4337兼容的Paymaster,还有一个支持任意ERC20代币支付gas的Relayer网络。 Argent使用第三方Relayer以元交易的形式支付gas。 Candide自行实现了Paymaster。 UniPass使用自己的Relayer节点支付gas,计划在未来添加“观看广告免gas交易”模式并支持使用跨链桥(bridge)支付gas。
c. 法币出入金通道(ramps)和跨链桥(bridges)
Biconomy和0xPass与Transak合作提供法币通道。Biconomy还提供跨链桥和跨链通信服务。 Argent Vault与Moonpay、Transak和Wyre合作提供法币通道,并具有内置的DeFi协议聚合器。 Etherspot、UniPass和Braavos支持法币通道、swap和跨链桥。
d. 交易批处理(transaction batching)
multiCall
函数,它接受两个参数:一个calldata
数组(每个calldata
定义一个函数调用)和一个合约地址数组(每个函数调用的合约地址)。multiCall
函数中有一个循环(loop)并在每次循环里执行一个函数调用。交易批处理可以使多个交易分摊一个以太坊交易的固定gas费,从而减少成本。UserOperations
数组作为输入参数并输出一个聚合签名字节以加快多个签名验证的速度。而这个数组中的每个UserOperation
都可以调用一个multiCall
来执行交易批处理。handleOp
函数,然后该函数再调用智能合约钱包主合约内定义的multiCall
函数。Biconomy设置了一个 MultiCall
合约,智能合约钱包可以调用这个合约来批量执行交易。Argent通过名为Transaction Manager的智能合约模块来批量执行交易,该模块支持 multiCall
和用户会话密钥(session key)。Etherspot、Candide、Openfort和0xpass都支持交易批处理。
e. 智能合约钱包的模块化设计(modular design)
支出限制:限制有签名权限的帐户可以从钱包中提取的金额。 定期打款:根据自定义时间自动打款。 角色和授权:为钱包不同的交易和行为定义所需的角色和授权。 组织权限:基于组织内不同角色的权限设置。 白名单和黑名单
2. 基础设施提供商
a. Layer 2上的账户抽象
upgrade
函数升级合约代码。所有Starknet智能合约账户都必须包含 validate
和execution
函数。validate
是必需的函数,通过验证签名确保只有账户所有者才能发起交易,同时保证交易执行者可以获得足够的gas费。用户可以在validate
和execute
函数中实现任意逻辑,从而灵活扩展账户的各种功能。例如,用户可以在validate
函数中实现不同的验签算法。为了防止交易通过验证但无法执行,Starknet禁止 validate
函数调用外部合约的状态(state)。
Starknet不区分常规交易和 UserOperations
,因为所有交易都是由合约账户触发的。在以太坊中,Bundlers执行UserOperation
交易,而在Starknet中,序列器(Sequencer)执行所有交易。Starknet尚未实现类似Paymaster的交易手续费抽象协议。 Starknet要求有代币余额的账户通过调用一个专门的 deploy_account
函数来创建新的合约账户。而在EIP 4337中,Bundler通过执行initCode
参数不为空的UserOperation
交易来部署合约账户,部署过程不必须有代币余额的账户,因为gas费可以由Paymaster代付。如果通过验证的交易在执行步骤失败,Starknet的序列器将无法抽取任何gas费,而以太坊没有这个问题。
账户(智能合约钱包)接口也将 validateTransaction
和executeTransaction
函数分开。代付合约(Paymaster)接口也包括 validateAndPayForPaymasterTransaction
和postOp
函数。前者定义了Paymaster代付交易的逻辑。后者可以确保在交易执行后,Paymaster能够抽取gas费补偿,尽管这部分功能尚未实现。用户也通过填写交易中的 paymaster
地址和paymasterInput
两个参数来调用Paymaster,类似于EIP 4337中的UserOperation
。
zkSync允许 validateTransaction
函数调用已部署的外部合约,因为已部署的合约在zkSync中是不可更改的(immutable)。 以太坊禁止验证函数调用外部合约,以防止状态更改(state change)造成交易验证通过而交易执行失败。zkSync允许 validateTransaction
调用发出此交易合约账户的外部存储,例如合约账户在外部合约上的代币余额,理由同上。在交易验证期间,Paymaster可以调用外部存储,理由同上。
b. 第三方基础设施提供商(非智能合约钱包)
UserOperations
的客户端SDK、打包器(Bundlers)、代付合约(Paymasters)和签名聚合器(Signature Aggregator)。这些基础设施通常由智能合约钱包自身实现,从而更好地整合产业上下游,但是大多数都不是为第三方使用而设计的。因此市场上需要第三方基础设施提供商来提供模块化和可定制的Bundler和Paymaster服务。一些知名的基础设施玩家比如Alchemy也进入了这个市场。本节会深入探讨这些第三方基础设施提供商。私有模式(private mode): UserOperations
进入一个私有内存池(mempool),以更慢的交易执行速度换取更好的隐私。UserOperation
不会显示在公共内存池中,从而避免了MEV攻击。搜索模式(searcher mode):由以太坊生态的机器人运营者(即bot operator,也称为searcher,例如DeFi套利机器人)使用,并与诸如Flashbot之类的区块构建者(block builder)集成,通过MEV-Boost发送 UserOperations
,允许searcher为特定的交易排序出价,以供block builder选取MEV最大的交易排序构建区块。
Verification Paymaster:提供需要链下交易(如法币出入金)的gas抽象。例如,用户可以选择使用信用卡订阅Paymaster服务来支付gas费。用户也可以定制gas代付的逻辑。Stackup将通过“按需付费”(pay as you go)模式向用户收费。 Deposit Paymaster:允许用户用ERC20代币支付gas费。
使用EIP 4337交易浏览器(EIP 4337 UserOps Explorer)可视化内存池中 UserOperations
的状态,方便钱包和dApp实时监控交易的状态Blocknative的核心产品内存池浏览器也可以监听入口点合约中待处理和已确认的Bundler交易
第三部分:账户抽象的未来之路
1. 归根结底,账户抽象市场的生死存亡取决于生态对EIP 4337的采用,而这个市场还非常早期
from
参数)去重后的总数约为1.5亿。然而,智能合约钱包的总数,以Gnosis Safe和Argent账户的总和来估算(这两个产品的用户最多),仅为15万。UserOperation
仍然不是dApps广泛使用的主流交易类型。虽然如此,我依旧对智能合约钱包市场保持乐观态度,也可以预见到智能合约钱包对用户体验的大幅改善会为账户抽象市场带来的指数级的增长,尽管这种爆发可能还需要一两年才发生。2. EIP 4337尚未完成,同志仍需努力
目前Bundler主要在私有内存池(private mempool)广播交易, UserOperation
被直接发送给指定的区块构建者(block builder)。Bundler网络是否有可能使用公共内存池(public mempool)?Bundler能否通过对 UserOperations
进行排序来抽取MEV?区块构建者能否通过对捆绑交易(bundle)进行排序来抽取MEV?MEV将如何在Bundler和区块构建者之间分配?我们是否应该将Bundler和区块构建者分开?考虑到Bundler需要完成大量的链下模拟和链上验证,它们能否同时作为可靠的区块构建者? UserOperation
的内存池和常规交易的内存池应该如何协调以避免状态冲突?
3. L2采用EIP 4337的速度各异
UserOperation
。4. 抛开技术细节,一个优秀的智能合约钱包需要有哪些特点?
与dApps合作:与每个L1或L2链的流量入口级dApps合作,尤其是基础设施类的dApps(如稳定币或DeFi协议),是吸引用户的主要途径 实用功能:如钱包内部集成的NFT市场、launchpad或快速集合新的交易对 外部支持:如来自VC或以太坊基金会的官方支持,这些支持可以帮助钱包找到第一批用户
5. 一个优秀的打包器(Bundler)需要有哪些特点?
UserOperation
的验证和执行需要尽可能多的Bundler参与从而更好地去中心化。因为Stackup和eth-infinitism是目前唯二可用的第三方Bundler服务提供商,所以我们肯定需要更多这样的Bundler服务提供商。对链下和链上的多个验证步骤进行深入研究,从而确保 UserOperation
可以成功执行。技术难点包括理解多个UserOperations
之间可能出现的状态冲突(state conflict)。理解验证函数对某些OpCode的禁用: 由于读取可变的外部状态(external state)可能导致交易验证成功但执行失败,因此EIP 4337禁止验证函数调用读取外部状态的OpCodes。 不同的L2对读取外部状态的OpCode有略微不同的禁用,会对多链开发造成挑战。 正在构建Bundler的项目方需要通过 traceCall
函数来获取每个函数调用的OpCodes。然而,大多数第三方RPC节点都不支持traceCall
,因此Bundler项目方可能需要运行自己的节点,这也存在技术壁垒。目前大多数Bundler项目方的开发重点都在L2,需要分别计算L1和L2的gas费。 实现私有和公共内存池的P2P network。私有内存池需要为searcher和dApps提供定制化的服务,例如白名单。公共 UserOperation
内存池的行业标准尚未完成。
Bundler服务是专为钱包构建的,还是第三方基础设施提供商构建的? Bundler只是钱包项目方需要构建的众多事物之一,因此他们更可能专注于为钱包构建一个最基础的可用的Bundler。 第三方基础设施提供商需要构建无需许可和模块化的Bundler,并为不同的场景提供优质的服务。 类似于以太坊节点,Bundler服务采用不同的语言实现。这种语言多样性可以防止单点故障,对以太坊生态有益。 对私有和公共内存池的支持以及对私有内存池进行定制的选项。 对L1和不同L2链的支持,每个链在接口实现上略有不同。
6. 让我们聊聊创新
许多打包器(Bundler)、代付合约(Paymaster)和签名聚合器(Signature Aggregator)提供商会在一个开放市场上竞争。用户可以用最低费用获取高质量服务 市场上既存在无需许可的Bundler、Paymaster和Signature Aggregator公共端点,也存在专门为某个智能合约钱包或dApp部署的端点 智能合约钱包、dApp和个人用户可以以无需许可(permissionless)、模块化(modular)和用户友好的方式部署上述的基础设施。换句话说,第三方基础设施提供商允许从任意地址快速且可定制地部署Bundler、Paymaster和Signature Aggregator
UserOperation
交易量依旧较低,启用了签名聚合的钱包(如BLS Wallet)仍然不是主流。支持账户抽象功能的类似于ether.js的dApp开发标准库,比如对如下功能的封装: 使用Web2社交媒体账户和电子邮件创建钱包和恢复钱包地址 UserOperations
的创建、签名、发送以及的事件监听快速部署Paymaster和Signature Aggregator 聚合所有主要智能合约钱包的SDK和UI工具 用于快速前端部署的脚手架工具,以便dApp开发人员可以专注于他们产品的业务逻辑 由账户抽象赋能的新型dApp的模板,例如支持gas抽象的游戏
validateOp
函数,将所有的核心业务逻辑,如用户注册、权限控制和社交恢复等,留给钱包开发者自由决定。虽然这提供了更多的灵活性,但不同的智能合约钱包会更加割裂以太坊生态,因为一个钱包中的数据不能轻易地转移到另一个钱包。dApp也可能通过支持某些智能合约钱包而不支持其他钱包加剧这种分裂。IAccountMetadata
的账号接口,使用户可以自定义自己账号的认证方法(如Web2社交媒体账号),从而将认证逻辑从钱包主合约转移到单独的账户接口。支持此接口的智能合约钱包可以允许用户将其账户数据转移到另一个钱包。支持此接口的dApp可以允许用户使用账户接口中定义的Web2认证方法登录他们的Web3账户。dApp可以验证来自Web2认证方法的签名,以此查询Web3账户地址,向Web2账户推送通知,并连接到Web3账户。用户不需要为不同的dApp创建其支持的不同的钱包。相反,dApp会自动连接到与用户Web2认证方式关联的Web3账户。用户账户和钱包不再是一体也不再受制于钱包,钱包本质上成为了用户可以登录账户来进行资产管理的dApp。结论
EIP 4337将智能合约钱包及其相关基础设施标准化为六个合约接口:智能合约钱包主合约、打包器(Bundler)、入口点合约(Entry Point Contract)、代付合约(Paymaster)、钱包工厂(Wallet Factory)和签名聚合器(Signature Aggregator)。 UserOperation
是EIP 4337支持的新交易类型。账户抽象市场有两类参与者: 具有社交登录、社交恢复、gas抽象、交易批处理,以及集成和聚合第三方服务(如法币出入金和DeFi协议)等功能的智能合约钱包。 基础设施(如Bundler或Paymaster)的第三方提供商,专注于模块化设计。 我对账户抽象市场有如下预测: 智能合约钱包市场竞争激烈,因为竞品的功能类似,技术壁垒也较低。 Bundler是一种盈利较难但是生态十分需要的公共物品。 账户抽象仍然是一个非常早期的市场,因为采用率仍然很低,EIP 4337尚未完成,许多L2尚未实现对账户抽象的支持。 账户抽象市场需要许多创新,如:无需许可的模块化基础设施、与现有法币和DeFi服务的集成、dApp SDK以及潜在的独立帐户层。