您的位置 主页 > 新手百科 >

TokenPocket冷钱包APP|AA产品三部曲:AA技术介绍

AA技术介绍

Account Abstraction(AA)抽象帐户是基于ERC-4337的合约钱包新范式,它以一种应用层的方式来实现合约账户的链上交互。AA 无需修改ETH节点共识,通过操作链上合约账户,能做到比目前EOA外部账户(如Metamask的账户)更多可编程和合约可组合性。

AA 使用Bundler代付的方式来激活和操作合约钱包,可编程其安全验证和恢复机制(比如MPC恢复,社交恢复,生物信息恢复等)。AA 可以实现无需记录私钥,无需预先购买以太坊进行合约交易,能让新用户或Web2用户更无感进入Web3,使Web3大规模使用(Mass Adoption)变成可能,通过合约可编程安全特性可使钱包免去私钥被盗的风险。

AA技术特性

AA 架构是多个模块的互相组合:

UserOperation(UserOp)是ERC-4337统一的交易格式,它记录了sender合约账户地址,nonce交易唯一值,calldata交易数据等类似ETH交易的基础内容。在合约账户未初始化会添加initcode生成合约钱包字段,paymaster是可选值,可使用哪个paymaster合约gas代付。UserOp有好几个计算gas费的字段,计算前置Gas,优先Gas和执行Gas等。还有最重要signature字段,对整个UserOp计算的hash进行签名,钱包会判断签名合法性,一般指签名是否属于Owner,或者更多签名方式如zk验证和Session key的扩展。

EntryPoint(EP)是所有UserOp的交易入口,EP合约是通用的,一个网络可以只使用一个EP合约,会根据UserOp的sender对交易进行转发到特定账户地址执行。Bundler通过handleOps方法可以发起批量交易,单个交易打包到EP会比EOA直接交易Gas费更多,但聚合交易能较好减少Gas费。EP也提供simulateValidation的一些方法给Bundler做模拟交易检验合法性。

Bundler是一个后端服务器,它就像ETH的geth客户端或者更像Mev的proposer交易发起者,也是AA用作代付和聚合交易的核心模块。Bundler帮你收集UserOp交易到mempool,特定时间打包交易(比如5s),然后批量打包发到EP。Bundler对收集的交易,会进行模拟,审查,限流或者排序,以便交易的合法和正常执行。通用Bundler会对一些OPCODE进行限制防止批量失败(比如call外部合约),也会对交易负载均衡,模拟审查交易合法性等操作。Bundler一直是ERC4337研究的重点,如何节点去中心化,与ETH tx mempool平行的alt userop mempool,如何抗审查和防止Mev等。目前官方支持多种Bundler实现,比如官方和Pimlico的js-bundler,Stackup的go-bundler和Alchemy的Rundler等。

Paymaster是可选模块,个人来看也是最有商业价值的模块。通过UserOp里设置的Paymaster,你可以使用ETH之外的任何支付手段支付Gas,比如使用一些常见Token(WETH,USDT),或使用自定义Token。Paymaster 通过预言机确定价格或者自定义价格代付Gas费,Paymaster可以自定义佣金或者通过dex直接swap成ETH。官方代码提供了免Gas的VerifyingPaymaster,在UserOp的Paymaster字段里加入验证账户d1签名(为什么免Gas需要加入签名,因为无成本会加剧薅羊毛),Biconomy等很多项目通过无Gas交易的API返回签名给你代付,这样使用线下法币支付链上免Gas,其他人代付免Gas等更多可能组合性出现。

Account钱包账户合约,个人觉得是最有可定制性化的模块,合约天然具有可编程和链上可组合性。账户合约一般拥有自己owner(一个外部随机EOA,开始用于计算钱包地址,只需要签名认证,钱包激活后恢复可以随时转移)EP收到交易后,会下发到各个账户合约执行,账户通过owner签名认证后,就是直接透传交易call其他合约。Owner的轮换是通过恢复机制来去做,账户可编程定义邮件恢复,社交恢复,生物恢复等,恢复用户体验可做到更好。Account合约的模块化实现后,只需要部署最基础的账户合约,可自定义认证,恢复,安全,执行层插件,还可以形成强大的钱包生态OS,可做到更多组合性。

为了使应用更好接入,客户端SDK,前端接口也尤为重要,前端主要工作为组装发起UserOp到Bundler,作为重要的基础设施。目前开发者工具类项目仍然不多,钱包仍难接入大部分的Dapp。但大部分都是在做基础设施在完善接入层和bundler/paymaster服务。除了官方的SDK简单之外,做的比较早的有Unipass有一套多功能的接入机制,支持邮箱登录,ZeroDev对官方的SDK上层进行的封装,也有部署bundler等服务。Accountjs的愿景也是用开源公共层的方式,对这现有机制进行封装和整合,统一接入格式和Account标准。

如今ERC-4337仍在Draft阶段,很多模块仍不够稳定,很多钱包安全性也未经考验,需要社区共创之。ERC-4337仍遵循个人主权和去中心化理念,没有记录私钥中心化保管的危险步奏,没有MPC单点故障的缺陷。虽然要经过Bundler代付,但所有Bundler,Paymaster,Account,甚至Recovery和Intent都可以做到去中心化,账户Owner主权在自己手里,可以自己选择想要的服务商。而且现有账户已经有多宗实现和模块化,但都是自称体系,仍缺少互通标准和广泛接入。

AA产品属性

ERC4337已经研究快一年,应用场景是我最开始就构思的话题。以上ERC4337特性我们听过很多,还是回归聚焦于AA能做的产品方面。目前基于ERC-4337构建的钱包和基础设施都很多,占据了先发优势,前几月带来一波用户Onboarding,但大部分是老用户,还形成不了自己优势和护城河,没有生态繁荣和激励手段,心理预期不稳定之下,很难放大资金进入合约钱包。技术只是手段,合约代付,批量交易,恢复机制能让用户很好地使用,技术很酷炫然后呢?

真正能形成产品护城河是切中真实需求,用户能自发使用,并且能让用户长期驻留,一切的门槛只有用户。

我为什么看好AA,因为AA具有很好的产品潜力,没有特别晦涩的技术,也是产品最擅长的。AA已经成为ETH路线图一部分,虽然还在升级,在安全验证的前提下,至少可以占据目前ETH生态的几分之一。(当然不考虑以后zk技术路线全变了,可能solidity已经落后情况出现,可能更有例如wasm新范式出现) 为什么使用AA?能改变现有EOA主导的现状,绝对不是EOA已有优势的产品。Defi的组合性和有利可图在ETH老用户已经牢不可破,虽然学习使用成本仍然很高。

AA而应该另辟蹊径,去做适合更大众的产品,去吸引圈外新用户。

在现有钱包操作晦涩难懂的入门门槛下,你先要记下私钥/助记词(不妥善保存还可能被盗风险)填入密码,然后转入ETH,然后才可以合约操作。Web3老用户已经习惯了,但外行用户却难,就算新入门互联网用户也面对提示,战战兢兢保管私钥,查看两遍。

AA的优势在于新用户Onboarding,包括Web2用户体验,或者5岁到95老人都能懂的用户产品。

AA不用部署账户就可以做到游戏的游客登录,先进来玩体验,体验完付费或者走人,除了消费时间外没有任何门槛。AA产品可以不设门槛,让用户先进来玩,直接代付gas费,可以很简单获客。AA产品可以像Web2邮箱,Oauth登录,直接映射到合约钱包,和Web2体验保持一致。在沉淀一定时间成本,钱包有了一定价值,可以引导用户激活钱包,上传个人恢复信息,然后用户就可以执行Web3交易。AA目标用户不仅仅是传统Web3用户,AA钱包的优势是在吸引新的用户,门槛更低效率更快。传统Web3用户更多是利益驱逐型,所以你会在各个公链,空投,收益看到同一批用户,最终就导致行业内卷互割。

随着区块链更多L2层普及,交易更多,更多应用形态将会是趋势。AA钱包的出现,会使Web3用户体验更多样化,AA钱包将会是公链以上的入口层,直接嵌到产品和移动端,让更多以前没法实现的应用成为可能。

AA钱包应用,让用户在更温和(而不是悬崖式)的门槛进入,使用更友好的应用和体验,可以使Web3用户更加扩大几倍。DefiSummer燃起了新用户,激活了老用户,NFT名人效应带来了新人,AA的用户体验可能也是下一轮牛市的发动机。

在Safe验证大资金需要多签合约安全特性,AA钱包的可编程安全性,让大资金进入Web3或者RWA应用成为可能。

EOA的私钥具有太大权利,私钥有门槛和安全问题屡见不鲜。为了用户体验,有的项目选择使用托管和MPC钱包,虽然具有很好体验,但都是具有中心化结构,会有些结构性风险。AA可以使用模块化去中心方式,统一交易格式可去中心的节点接入,可兼顾个人主权钱包和避免单点故障,所以会是未来钱包的新形式。

在下一波叙事浪潮中,收益是Web3必要但不是必然属性,NFT和StepN看到很多新用户仍然是抱有对优质应用的信仰。优秀的应用和体验是必然趋势,AA钱包只不过是优质体验上的一个桥梁。

在Web3走向大众之前,新用户进来的第一个钱包是AA,就好像看到新生的雏鸭效应,会对产品更有粘性。现有项目一味通过高利润追寻新用户,也需要通过刚需,好玩等属性留住用户,持续性是行业的发展动力。

所以用户才是产品的护城河,而面对用户的只有是杀手应用,AA具有更低门槛更有优势。用户凭兴趣进来使用应用,钱包附加的数据和资产不断累积,通过AA钱包进入Web3新世界,真正无感实现价值互联。 AA钱包具备商业属性吗?首先AA对新Token支持很好(下面文章我可以详细说说),同时复杂机制里有详细记录分配规则,通过Bundler和Paymaster自定义的代付规则,也具有很好商业化场景。 对于应用和场景,仍然有很多可说的。现在EOA能做的,AA可以重新实现或者更好,在现有EOA不能做的,在AA也能很好实现,在下一篇再一一列举出来。 写AA产品文章在于抛转引玉,打开思路,欢迎更多项目方交流,或者开发者加入同行,一起研究技术和体验,在Web3新大陆建设新场景和创造新趋势。

先睹为快,我先举一个最初设想的场景。

PlayOnboard

第一个是 Free2Play 的链游新概念,但总是觉得Free表述不当,没有任何东西是Free的,人的时间也是价值,注意力是有限的。所以改名为 PlayOnboard 机制,游戏化去使用AA产品。刚才说AA对Token机制天然是友好的,Token是项目的储备价值,是实用性在价值的体现。

我这里就举Token直接使用在AA的场景,在Web2产品的一个量化:

Web2中,用户流量就是其虚拟价值,流量或注意力可以变现或者引流推广,其实就是以广告或者付费形式。互联网公司通常会使用触达率,留存率,变现率,推广分享,日活,月活,在线时长等很多指标数据,Web2很多是隐性价值,Web3是直接通过价格表现。其中很大评判标准用户DAU(日活率),产品可通过日活量估算广告价值,用户价值和产品属性,有些甚至为了提高日活甚至有刷量赚钱,类似抖音快速版。

AA把用户入门门槛变低,用户无成本进入可使用流量这种新的玩法,就是免去记录私钥步奏,先提供核心场景,促活用户。这可以很好跟游戏化产品结合。

设想是Step2Earn的Stepn场景,之前还需要先创建钱包并收取原生代币,本身就是挺大门槛。使用AA之后,用户进来直接就可以开始跑了,跑步就能生息。有人为了好玩进来零成本,有人会为了激活并使用AA新钱包,提前激活钱包并购买道具商品,前提是提供游戏的平衡性。你甚至可以使用任何代币甚至项目方代币支付,就算用户量活跃度很高,批量交易也能为你节省gas费用。

这样,项目上线时代币直接可以就有使用场景了。用户进来,可以氪金立刻激活账户,也可以无成本进来,当钱包有资产(比如跑步15天以上)可以引导激活钱包并上传资料进行恢复,可用时间流量换取价值。新用户会拥有第一个Web3钱包,也能通过钱包去操作更多Web3应用,而项目则收获第一批用户,用户群可以是任何人。

还有原神,游客模式下钱包就能提前固定,提前就能收取游戏资产了,如果需要提前激活钱包或者购买资产和加速,从链上swap也能提供很好的流动性。用户最终会为链上的真实价值付费,还有类似流量广告的玩法使用AA钱包也是可行的。

使用AA的合约钱包,能让用户进入Web3门槛大大降低,高频和无感应用变得可能。账户合约可编程并可记录信息,会有更多想象空间,比如链上身份,资产互通,Token也有更多场景进行使用,这个会在下篇文章具体再列举场景使用。

PlayOnboard只是其中一种流量转换成价值的场景,在AA的机制里面还有更多相应模块,可以hack和生成新的产品形式,第二篇会列举更多场景出现。

热门文章