Account abstraction: Ethereum as a crypto infrastructure
5年前,差点在一个雨天露宿街头,幸亏哥们帮订了旅馆,还秉烛夜谈区块链,给我印象最深的话题就是以太坊。
那时候,我主要研究方向还是区块链的应用场景,那时候,ERC20还没有被广泛采用。当我从聊天中得知有一种能够简单地代替彩色币功能的方案、还可以通过分片将区块链拆分成多组平行的链来提高TPS,已经令我眼界大开。然而,令我最不可思议的讨论是,交易手续费还可以用各自的“彩币”来支付。直到最近,拜读了《ERC 4337: 不需要改变以太坊协议层的账户抽象化》一文,才发现当年不能理解的想法正在逐渐明晰。
本文作者:litianc
发布日期:2021.10.11
阅读时长:5分钟
1 什么是账户抽象化?
熟悉以太坊的人都知道,在以太坊网络上,目前有两种类型的账户。
- 外部帐户:指EVM(以太坊虚拟机)之外存在的发送和接收功能中进行加密货币交易的钱包。其中,“外部”是相对 EVM而言的,实质还是以太坊网络上的账户。
- 合约账户是存在于 EVM 中的“智能合约”。
简而言之,账户抽象化就是将两类账户合并成一类,实现了账户抽象化之后,合约账户也可以支付交易费和执行交易。
账户抽象化的好处之一是让钱包具备更好的用户体验。如今大多数以太坊钱包都是采用外部账户,即我们常见的助记词钱包。但随着智能合约的成熟和DApp生态的完善,还出现了一种智能合约钱包,具有更好的用户体验功能,如多签、基于社交或时间的钱包恢复、无需gas费用的交易等。账户抽象化能够让统一的账户继承合约钱包的功能,同时使得用户资产更加安全。
但硬币具有两面,账户抽象化也具有诸多挑战。
2 账户抽象化的挑战
账户抽象化的主要挑战是账户转发策略的灵活性与交易处理和传输的安全性之间的权衡。
例如:矿工或中继节点会因为验证交易合法性产生大量的额外的处理成本,由于转成合约账户后,可能需要在完全执行交易的情况下才知道用户自愿发送的手续费是否充足。
因此,有人提出需要增加一笔交易保证款来避免大量的手续费不足的恶意交易。但这样仍然会因为交易的常见情况,如:支付更高的gas-price来替换已有交易,导致节点的负担明显增加,进而不可避免地降低了在一个区块中处理多笔来自同一账户的不同交易的能力。
3 账户抽象化的历史演进
2016 年:以太坊社区提出了初始抽象变化的想法,通过合约的余额支付手续费。讨论中提出了PAYGAS的操作码的建议。
2017 年: Vitalik提出EIP-86用于抽象交易来源和签名。目标是抽象出签名验证和随机数检查,并允许用户建立账户合约来进行任何所需的签名/随机数检查。
2020 年: Vitalik 等人提出EIP-2938用于帐户抽象。目标是让合约成为可以支付费用并成为交易执行的统一账户。
2021 年: Vitalik 等人通过入口点合约规范提出了EIP-4337用于帐户抽象,提供了一种无需更改共识层协议即可获得相同效果的方法。
4 账户抽象化的实践简析
EIP-2938和EIP-4337从不同角度设计了账户抽象化的实现,这里作简要分析,详细可参考Ethfans的译文和Vitalik的博客。
4.1 EIP-2938
在 EIP-2938 中提出的账户抽象化,接纳合约作为顶层账户,使之可以支付交易费以及启动交易的执行过程。实现账户抽象化需要变更协议以增加新的抽象账户交易类型、修改内存池规则以及引入扩展功能以支持高级用法。抽象账户交易需要增加两个新的操作码:NONCE 和 PAYGAS。账户类型仍然保持现有的两种(外部账户和合约账户),所有的变更都向后兼容以支持当前的交易、智能合约和协议。
4.2 EIP-4337
EIP-4337实现了账户抽象化,对bundler的去中心化,不需要修改现有共识层,并且借鉴EIP-3074的赞助交易能够支持支付ERC20代币支付交易费用。这个提案需要增加的是一个类layer2的mempool,用以为bundler提供一个合法交易的消息池,由于这些“交易”区别于传统以太坊交易,所以需要一个不同于以太坊节点的消息网络(可复用以太坊的P2P节点)。再由Bundler将许多交易消息打包到一笔链上交易中。因此,可以不改变现有共识层协议。
EIP-4337的出现是在MEV广泛讨论和实现的基础上提出的,它的设计哲学是基于flashbots(一个高效的通用和去中心化中继器协议, https://github.com/flashbots/pm/issues/24)基础之上的。
5 总结
按照Vitalik在博客中的规划,开发者将会很快看到支持账户抽象化的钱包。这真是一个奇妙的过程,原本就只是社区的一场讨论,在不同方案的取舍后,最终被认可的方案的来源却是来自备受争议的MEV。可以预见,即使账户抽象化的钱包上线后,仍会有许多待改进的需求。但这正是区块链有趣的点放,不是么?期待在不远的将来,5年前那晚聊到的场景都能实现。
后记:
- EIP-4337的实现,对于以太坊成为加密基础设施的愿望又更近了一步。
- 原本不少靠密码学差异化立足的区块链,可能会面临不小的挑战。
- 对于应用开发者,有更多理由将以太坊作为统一账户的锚点。