# AA产品三部曲（一）

By [skyhighfeng.eth](https://paragraph.com/@skyhighfeng) · 2023-04-19

---

AA介绍：
-----

Account Abstraction(AA) 抽象帐户是基于ERC-4337的合约钱包新范式，它以一种应用层的方式。AA实现了无需修改ETH节点，通过链上合约账户，能模仿目前外部账户（EOA如Metamask的账户）的操作来进行链上交互。

AA 使用Bundler代付的方式来激活和操作合约钱包，使用多种恢复机制（比如社交恢复，生物信息恢复，MPC恢复等），可以实现无需记录私钥，无需预先购买以太坊进行合约交易。这样省去复杂的记录私钥信息，转入以太坊的复杂操作，让用户更无感进入Web3，使大规模使用Web3应用变成可能，也通过合约的安全特性可使钱包免去私钥被盗的风险。

AA技术特性：
-------

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的交易，批量和聚合交易，只是仍缺少互通标准和广泛性。

AA产品属性：
-------

对于很早研究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产品文章在于抛转引玉，打开思路，欢迎项目方交流，或者加入团队开发，共同研究技术实现，在新大陆建设新场景和创造新趋势。

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

PlayOnboard
-----------

最开始是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

---

*Originally published on [skyhighfeng.eth](https://paragraph.com/@skyhighfeng/aa)*
