# ExNew Insight | 最近突然大火的「账户抽象」和「EIP-4337」到底是什么？

By [ExNew Labs](https://paragraph.com/@exnew-labs) · 2022-11-16

---

账户抽象，顾名思义与链上账户有关。在本质上讲，账户抽象是实现原生的链上合约钱包的一种方式。那么到底什么是账户抽象和合约钱包，与我们大多数人用的钱包Metamask，Coinbase wallet等有什么区别和优势呢？下面我们详细聊聊。

一、以太坊链上钱包分类
-----------

根据钱包的直接控制方式可以分别EOA (Externally Owned Account) 即外部账户和CA (Contract Account) 合约账户，此外还有冷钱包、硬件钱包等，这些不在此文的讨论范围内。

![来源：Twiter](https://storage.googleapis.com/papyrus_images/7390ea306e9047b076c617951f002c98e10e606e1e67ee74c64f54bde2312fb3.png)

来源：Twiter

EOA外部账户，就是通过私钥来控制区块链上地址发起签名、转账、交易等操作，私钥、公钥、链上地址，通过非对称加密的方式生成，由私钥可以生成公钥和链上地址，但这个过程不可逆，所以在EOA中，拥有了私钥就是拥有了整个账户的控制权。

如果受到攻击，私钥被窃取，或私钥遗忘了，怎么办？其实是没办法。从分类上讲，EOA外部账户属于非托管或是自托管式钱包，用户自己负责保管私钥并拥有100%资产掌控权，比如Metamask，相对应的还有托管式钱包，比如大多CEX中的账户等。

CA合约账户，则是由一组智能合约来直接控制，用户可以不用私钥，只要通过密码学的身份验证，就可以通过账户App发起指令，通过智能合约账户和区块链交互，完成转账等交易动作。

不难看出，相比web2的账户体系，EOA外部账户，实现了web3里账户私钥及账户资产拥有自主权（Metamask其实也有风险），但缺点很明显，

1）私钥丢失或被盗取将无法找回

2）账户不支持复杂的账户设计，无法编程

3）账户本身无法升级，私钥泄露只能创建新账户并转移资产

4）因为有私钥和助记词，Web2用户使用门槛高。

相比EOA，CA合约钱包可以解决以上问题。

二、前钱包的事务流程和解决方案
---------------

### a. 当下EOA钱包方案，如图：

![来源：Medium@Ismael Darwish](https://storage.googleapis.com/papyrus_images/4d495812b4900ce88b7e6b563bfcb8b5e817926d8aca9ee4f77b6b179881aa2c.png)

来源：Medium@Ismael Darwish

EOA事务流中，用户首先用私钥进行ECDSA算法验证，签名并发起交易，签名交易被发送到Mempool中，之后验证者经过一系列验证（签名、nonce值和chainID）后存储在链上。

过程相对简洁、清晰，但仍有些重要甚至致命的问题有待解决，1）私钥保管问题 2）仅限于ECDSA算法的风险 3）交易无法批量处理等。

### b. 改进版的CA合约账户方案，如图：

![来源：Medium@Ismael Darwish](https://storage.googleapis.com/papyrus_images/6a459ad5c2b39f29223331648ca3417d6045631d0d8a787c230dd5131a5dd5a7.png)

来源：Medium@Ismael Darwish

改进版的合约账户事务流中，用户使用私钥和任意自定义的算法进行验证和消息签名，把签名后的消息发送给Relayer中继器，在Relayer内，签名消息和中继器私钥进行ECDSA算法验证签名，后将包含签名消息的签名交易发送给中继器EOA，最终完成用户交易上链。

相比EOA方案，并不是由单一的EOA直接发起签名交易指令，改进版方案在多个方面有了提升，

1）私钥的社交恢复，可预先设定多个账户可触达钱包

2）多签交易

3）批量交易

4）定制化的认证逻辑。

目前一些项目，如Argent, Gnosis 和 Loopring wallets采用了改进版方案开发各种应用场景下的合约钱包。

改进版方案依靠Relayer中继器或其他中间机制来完成，中间机制是否值得信任仍是个问号。因此仍需要进一步探索区块链原生的合约钱包解决方案。由此诞生了账户抽象概念下以太坊EIP-4337方案。

三、账户抽象及相关EIP发展
--------------

AA (Account Abstract) 账户抽象，在计算机技术中属于数据抽象，本质上是将上文提到的EOA和CA的数据和事务流抽象并统一成一种CA合约账户，用户无需了解底层原理，可以自定义账户认证算法来发起交易、支付费用和需求定制，以此拓展以太坊和促进用户大规模使用。

![来源：AstroX Network](https://storage.googleapis.com/papyrus_images/fe1379ca917a5e53fe7843392c8fac5e4f430a92987fbaab79b05471dc534bf1.png)

来源：AstroX Network

有了账户抽象的概念和愿景，与此相关的以太坊方案EIP（Ethereum Improvement Proposal）也是经历多年发展：

![来源：Ethereum Blog](https://storage.googleapis.com/papyrus_images/8342518f0425deec0469acea1f1d394c0f7a1ac79a37d53348daa6bd11c6ccc5.png)

来源：Ethereum Blog

2016年

基于在2015年，Vitalik对Serenity中的账户体系的设计方案基础上，首次提出账户抽象的安全模型，其中所有账户是智能合约账户，拥有自己的智能合约，用户可自定义账户安全模式和gas支付方式等等。

2017年：EIP-86

Vitalik提出了事务来源和签名的抽象EIP-86，具体来说说抽象出了签名验证和nonce检查机制，通过合约账户就可以实现以上两个验证，摆脱传统的硬编码事务处理的机制，帮助了多签钱包等场景的实现。

2020年：EIP-2938

EIP-2938的提出进一步实现了账户抽象，允许合约账户为“顶级账户”，来支付gas和执行事务，从根本上突破了传统的事务有效性认证。传统模型中，ECDSA、nonce值和账户余额可以非常简单的定义账户，同时也会有很多限制。EIP-2938则可以实现：

1.  多重签名钱包和社交恢复账户
    
2.  Gas支付的多种场景
    
3.  非公链原生token支付gas
    
4.  可以使用ECDSA以外的算法验证方案
    
5.  隐私保护
    

通过EIP-2938方案，以上场景均可以间接实现，但实现效率并不高，同时需要公链的共识层协议变更（硬分叉来实现），所以EIP-2938并没有真正的实施。

2021年：EIP-4337

Vitalik和社区提出的EIP-4337，提供了一种既不需要共识协议层更改，还能达到EIP-2938一样效果的解决方案。

四、EIP-4337方案如何实现账户抽象
--------------------

EIP-4337技术文档中有提到：“账户抽象化的关键目标是，允许用户使用包含任意验证逻辑的合约账户，而不是使用EOA作为主要账户。完全消除用户使用EOA的任何需要。“ 目前从应用的角度来看，账户的改进方向分为：完全摆脱EOA和EOA授权。EIP-4337理想是实现前者。

账户抽象CA合约账户的事务流程展示，如图：

![来源：Vitalik‘s Medium](https://storage.googleapis.com/papyrus_images/2be8a72a488cf09150323bcf02cb0319b6ebc7489411ee1360b340367b6df6ec.png)

来源：Vitalik‘s Medium

账户抽象CA全生命周期的事务流程，如图：

![来源：web3 edge](https://storage.googleapis.com/papyrus_images/c1ee8377b8e0172144db3066a5ff8f32c98886b33f990308ccf00061794175e0.png)

来源：web3 edge

符合EIP-4337的CA账户事务流中，用户无需记住私钥，直接通过App签名一系列的“用户操作”UO（UserOperation）并存入UserOperation Mempool中，打包者Bundler在Mempool中挑选“用户操作”UO打包，形成多个组合Bundle transaction，Bundlers调用入口点合约Entry Point Contract 进行循环验证，完成验证后发起交易并上链，完成执行。

此处的Bundler类似于公链中的排序器 (sequencers) 的角色。可以看出相比EOA账户，CA流程复杂但可操作性、自定义、安全等特性较高。

抽象账户CA方案优势明显，但同样面临一些问题，最突出的是gas成本比EOA方案更高，在当下还未完成Sharding的以太坊layer1中很难实施。

其主要原因是储读、写成、合约执行、日志费用等需要消耗更多的资源，支付更多的gas fee，因此在layer2上CA方案具有规模化应用的转机，Rollup会对数据进行压缩处理，降低资源占用。

五、EIP-4337应用场景实例
----------------

*   用EOA发起签名的“用户操作”UO，进行接下来的智能合约钱包的交易操作，其中用户签名UO无需支付gas，gas fee通过入口点合约的合约钱包收取，并返给打包者bundler。
    

![来源：Twitter](https://storage.googleapis.com/papyrus_images/258a089b409b2b1d9bc7a7273f3926625bc3001cd2c31f35b8ce11abeab7640c.png)

来源：Twitter

*   通过Paymaster合约实现代付gas fee。入口点合约的验证中包括Paymaster同意代付和足量支付的ETH质押，在执行Paymaster支付流程后，用户的合约钱包可给paymaster支付等额的其他代币，一次实现用户完成交易但账户中没有公链原生代币的情景。
    

![来源：Twitter](https://storage.googleapis.com/papyrus_images/27b49dc4f59bb8abc3b7c130ff925e03ad95992ef0550d36ed38e9d2db822e05.png)

来源：Twitter

*   上文有提到合约账户可以使用ECDSA以外的算法验证，比如在多个签名者的场景下，钱包App使用聚合签名算法（BLS）来签名“用户操作”UO，在入口点合约中用聚合签名来验证，最终完成聚合合约钱包的交易执行和上链。
    

六、总结
----

作为用户进入Web3的入口，钱包一直是许多加密领域创业团队想要攻占的桥头堡。

面对拥有巨量用户的EOA钱包巨头们，创业者们如何开辟新路，Unipass的做法可以给我们一些启示，Unipass 知县认为：“\*\*合约钱包和 EOA 钱包不是竞争更倾向于合作、共存的关系，\*\*比如我们可以嵌在 EOA 钱包里面，如果新进来的用户注册钱包到私钥这一步的时候感觉麻烦不想做了，这时候就可以通过我们提供的电子邮件方式挽留用户，另外现存的用户也可以使用智能钱包的功能，用现在的地址一键控制智能钱包，能让流程更加顺畅“。

个人畅想未来账户抽象的CA在应用层，更像是一个app store应用商店，用户在商店选择不同功能的app或插件来实现合约账户需求的定制化，这样我们的应用层钱包，就像从基础功能机飞跃成了智能机一样。当然，其中的创业机会也非常多！

* * *

**_Author: StevenZhang （ ExNew Labs Co-Founder）_**

**_Wechat: tao107242810_**

**_Twitter: Stecoin@StecoinZhang_**

> Web3 波澜壮阔，至今仍是序幕。剧本怎么演，我们既是演员也是编剧。一份工作，不止是一份薪水。一位人才，不止是一个生产力。纵情向前，添砖加瓦，我们才能真正迎来下一代更高效、更透明、更民主的互联网时代，并且属于你我！
> 
> ExNew Labs，是由社区驱动的去中心化的职业成长社区，通过社区和产品，促进 Buidler 之间的互相发现与高效协作。正式成立于 2022 年 9 月，我们正在构建全新的产品形态和服务内容，即将推出新产品 FindingX。
> 
> 🌍 求职招聘 Website：[https://exnew.finding3.io](https://exnew.finding3.io/) 🔥 订阅 JD 更新：Telegram channel：[https://t.me/+3QlRs\_fZwWNlYjM1](https://t.me/+3QlRs_fZwWNlYjM1) 🌊 Twitter：@ExNew2050 🎫 即刻： [https://okjk.co/4VlwLd](https://okjk.co/4VlwLd)

![直接入群来聊](https://storage.googleapis.com/papyrus_images/ec720653e810c00af4869116630f815312ca5d5c0cab883aaff66d3e2b01c511.jpg)

直接入群来聊

`本文参考资料：`

[https://academy.binance.com/zh/articles/custodial-vs-non-custodial-nfts-what-s-the-difference](https://academy.binance.com/zh/articles/custodial-vs-non-custodial-nfts-what-s-the-difference)

[https://web3edge.io/newsletter/unleashing-account-abstraction-with-eip-4337/#](https://web3edge.io/newsletter/unleashing-account-abstraction-with-eip-4337/#)

[https://mirror.xyz/zhunianpan.eth/dzwYBD1MB-Noswz0DATjREtTRCkzCD0cwalZySxmxV4](https://mirror.xyz/zhunianpan.eth/dzwYBD1MB-Noswz0DATjREtTRCkzCD0cwalZySxmxV4)

[https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8](https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8)

[https://mp.weixin.qq.com/s/ZGzw3VE-8KEQE5xu7Jw\_8A](https://mp.weixin.qq.com/s/ZGzw3VE-8KEQE5xu7Jw_8A)

[https://foresightnews.pro/article/detail/17412](https://foresightnews.pro/article/detail/17412)

[https://www.theblockbeats.info/news/32268](https://www.theblockbeats.info/news/32268)

[https://web3caff.com/zh/archives/26165](https://web3caff.com/zh/archives/26165)

---

*Originally published on [ExNew Labs](https://paragraph.com/@exnew-labs/exnew-insight-eip-4337)*
