Account Abstraction(AA) 抽象帐户是基于ERC-4337的合约钱包新范式,它以一种应用层的方式。AA实现了无需修改ETH节点,通过链上合约账户,能模仿目前外部账户(EOA如Metamask的账户)的操作来进行链上交互。
AA 使用Bundler代付的方式来激活和操作合约钱包,使用多种恢复机制(比如社交恢复,生物信息恢复,MPC恢复等),可以实现无需记录私钥,无需预先购买以太坊进行合约交易。这样省去复杂的记录私钥信息,转入以太坊的复杂操作,让用户更无感进入Web3,使大规模使用Web3应用变成可能,也通过合约的安全特性可使钱包免去私钥被盗的风险。
AA是多个模块的互相组合:
UserOp(OP)是ERC-4337统一的交易格式,它记录了sender钱包地址,nonce值,calldata交易的内容,在未初始化还会添加initcode帮助生成合约钱包,paymaster是可选但可确定使用哪个paymaster机制代付gas,有好几个计算gas费的字段,还有最重要signature字段,可以对整段数据hash进行签名,钱包会判断这段签名是否属于Owner,或者更多签名方式扩展
EntryPoint(EP)是所有UserOp的交易入口,它通用可以一个网络只使用一个EP合约,会根据OP的sender对交易进行转发。通过handleOps可以发起批量交易,或者通过聚合Ops发起,单个交易打包到EP会比EOA更多,但批量交易能较好减少gas费。也提供simulateValidation的一些方法给Bundler模拟交易。
Bundler是一个后端服务器,它就像ETH的geth或者更像Mev的Proposer,也是AA代付的核心模块。它帮你收集UserOp交易,一定时间打包交易,可以进行批量打包发到EP。它同时会对交易进行模拟,审查,限流或者排序。通用的Bundler可能会对一些OPCODE进行限制防止批量失败,也会进行一些负载均衡,审查交易合法性等操作。Bundler是目前ERC4337研究的重点,比如如何去中心化,与ETH mempool平行的userop mempool,如何交易排序和防止Mev等。目前官方支持多种Bundler实现,比如官方和Pimlico的js-Bundler,Stackup的go-Bundler等。
Paymaster是可选模块,个人来看也是最有商业价值的模块。通过Paymaster,你可以使用ETH之外的任何支付手段,比如支持常见Token(WETH,USDT),或者支持自定义Token,通过预言机或者自定义价格代付Gas费,甚至项目方可以加入佣金或者dex直接交换成USD。官方还提供了免Gas的VerifyingPaymaster,在userop的paymaster字段里加入验证的账户签名(为什么加入签名,直接gasless无成本会加剧薅羊毛),这是Biconomy或者很多项目无gas交易的API返回签名给你代付,通过这个能使用法币支付,其他成员给你代付等更多可能组合性。
Account钱包合约,个人觉得是最有可定制性的模块,钱包合约拥有自己owner(一个外部EOA,可随时轮换也不用放ETH,以后也可去掉EOA使用zk)通过owner签名的认证之后,就是直接call透传交易。Owner的轮换是通过恢复机制来去做,可合约定义社交恢复,生物恢复,还有常见第三方MPC恢复(目前UX折中方案)恢复做到全链上可以继续改进体验。通过Account合约的定制,我们可以定制多签,不同签名机制,不同恢复机制,还有一些特殊安全功能等。
客户端SDK,一个前端接入模块,主要组装发起UserOp的一个SDK层。目前对于开发者工具类仍然不多,钱包仍难接入大部分的Dapp。但大部分都是在做基础设施在完善接入层和bundler/paymaster服务。除了官方的SDK简单之外,做的比较早的有Unipass有一套多功能的接入机制,支持邮箱登录,ZeroDev对官方的SDK上层进行的封装,也有部署bundler等服务。Accountjs的愿景也是用开源公共层的方式,对这现有机制进行封装和整合,统一接入格式和Account标准。
如今ERC-4337仍在Draft阶段,很多模块仍不够稳定,需要社区共创之。ERC-4337仍遵循个人主权和去中心化理念,没有了MPC单点故障的缺陷,虽然要经过bundler代付,但所有Bundler,Paymaster,Account可以做到去中心化,Owner主动权在自己手里,你可以自己选择自己想要的服务商。而且现有模块已经支持无私钥,无gas的交易,批量和聚合交易,只是仍缺少互通标准和广泛性。
对于很早研究ERC4337的团队来说,场景是我最开始就构思的话题。ERC4337特性我们讲了很多,我们还是回归聚焦于AA能做的产品方面。目前基于ERC-4337构建的钱包很多,占据了先发,用户尝新,但都形成不了自己优势和护城河,没有生态繁荣和激励手段,心理预期不稳定之下,很难放大资金进入合约钱包。
技术只是手段,合约代付,批量交易,恢复机制能很容易让用户很好地使用,然后呢。但真正能形成产品护城河是切中真实需求,用户能自发使用,并且能让用户长期驻留,一切的门槛只有用户。
我为什么看好AA,因为AA具有很好的产品潜力,没有特别晦涩的技术,也是产品经理最擅长的。
AA已经成为ETH路线图一部分,虽然还在升级,在安全验证的前提下,至少可以占据目前ETH生态的几分之一。当然不考虑以后zk技术路线全变了,可能solidity已经落后情况出现,可能更有新范式出现。
为什么使用AA?能改变现有EOA主导的现状,绝对不是EOA擅长的产品,Defi的组合性已经牢不可破,但学习使用成本仍然很高。AA而应该另辟蹊径,去做适合更大众的产品。
AA的优势在于Onboarding,在现有钱包操作复杂晦涩的入门门槛下,你先记下私钥/助记词(不善保存还可能被盗风险),填入密码,然后打入ETH,然后才可以合约操作。Web3已经习惯了,但外行用户却难,就算新入门互联网用户也面对提示,战战兢兢保管私钥,查看两遍。
AA可以做到就像游戏游客登录,先进来玩体验,体验完付费或者走人,除了时间外没有任何门槛。
你可以不设门槛,让用户进来玩,直接代付gas费,可以很简单获客。
你可以像Web2邮箱,Oauth登录,映射到合约钱包,可以和Web2体验保持一致。
在使用一定时间,有了一定价值,你可以引导用户激活钱包,上传恢复信息,然后发起Web3交易。
AA钱包的优势是在吸引新的用户,效率更快,不仅仅是传统的Web3用户。传统Web3用户更多是利益驱逐型,所以你会在各个公链,空投,收益看到同一批用户,最终就导致内卷互割。使用AA钱包的应用,让用户在更温和(而不是悬崖式)的门槛进入,利用更友好的应用和体验,可以使Web3用户更加扩大几倍。DefiSummer燃起了新用户,激活了老用户,NFT名人效应带来了新人,AA的体验可能也是下一轮牛市的发动机。
EOA的私钥具有太大权利,私钥有门槛和安全问题屡见不鲜。为了用户体验,有的项目选择使用托管和MPC钱包,虽然具有很好体验,但都是具有中心化结构,会有些结构性风险。但是AA可以使用模块化去中心方式,统一交易格式可去中心的节点接入,可兼顾个人主权钱包和避免单点故障,所以是未来钱包的新形式。
在钱包走向大众之前,新用户进来的第一个钱包,就好像看到新生的雏鸭,会对产品更有粘性。现在项目一味通过高利润追寻新用户,也需要通过刚需,好玩等属性留住用户,持续性是行业的发展动力。所以用户才是产品的护城河,而面对用户的只有是杀手应用,AA具有更低门槛更有优势。而用户进来,又能更加探索更多Web3新世界,加强Crypto和现实世界的流动性。
AA钱包具备商业属性吗?首先AA对新Token支持很好(下面我可以详细说说),同时复杂机制里有详细记录分配规则,通过bundler和paymaster自定义的代付规则,也具有很好商业化场景。
对于应用和场景,仍然有很多可说的,现在EOA能做的,AA可以重新实现或者更好,在现有EOA不能做的,在AA也能很好实现,在下一篇再一一列举出来。写AA产品文章在于抛转引玉,打开思路,欢迎项目方交流,或者加入团队开发,共同研究技术实现,在新大陆建设新场景和创造新趋势。
现在先睹为快,我先举一个最初设想的场景。
最开始是Free2Play的新概念,但我总是觉得free表述不当,没有任何东西是free的,人的时间也是价值,注意力是有限的。所以我提出PlayOnboard的机制,让游戏化进入AA产品。
刚才说过AA对Token机制天然是友好的,Token是项目储备价值的机制,是实用性在价值的体现。我这里就举一个Token直接使用在AA的场景。
Web2中,用户流量就是虚拟价值,各种互联网公司估值是评判标准用户DAU,产品可通过日活量估算广告价值,用户价值和产品属性,有些甚至为了提高日活甚至有刷量赚钱,类似抖音快速版。AA把用户入门门槛变低,用户无成本进入可使用流量这种新的玩法,就是免去记录私钥步奏,先提供核心场景,促活用户。
这可以很好跟游戏化产品结合。
设想是Run2earn的Stepn场景,之前还需要先创建钱包并收取原生代币,但使用AA之后,用户进来直接就可以开始跑了,跑步生息。有人会无成本为了好玩进来,有人只为了使用并激活AA新钱包,代付帮你激活钱包并不会跟之前钱包产生关联。你可以使用任何代币甚至项目方代币支付,就算用户量活跃度很高,批量交易也能为你节省gas费用
由于用户的钱包可以提前确定,用户无需激活钱包也能收到资产和代币。如果需要提前激活钱包或者购买资产和加速,可以提前在Uniswap购买资产并激活钱包。
这样,项目上线时代币直接可以就有使用场景了。用户进来,可以氪金立刻激活账户,也可以无成本进来,当钱包有资产(比如跑步15天以上)可以引导激活钱包并上传资料进行恢复,可用时间流量换取价值。新用户会拥有第一个Web3钱包,也能通过钱包去操作更多Web3应用,而项目则收获第一批用户,用户可以是Web2互联网用户或Web3 Crypto Native的任何人。
使用AA的合约钱包,能让用户进入Web3门槛降低,可以有更多想象空间,比如链上身份,资产互通,Token也有更多场景进行使用,这个会在下篇文章具体再列举使用场景。
PlayOnboard是一种流量转换成价值的场景,在AA的机制里面还有更多模块,可以hack进去生成新的产品形式,第二篇会列举更多场景,如果感兴趣共建可以联系作者。。
Contact:
Wechat: skyhigh22
Twitter: @skyh20
Email: skyhighfeng@gmail.com
ENS: skyhighfeng.eth
GitHub: https://github.com/accountjs/aa-research
