作者:北辰
原文:《账户抽象方案会重塑钱包赛道,就像移动支付取代现金和信用卡》
crypto行业在过去的大半年里很少冒出新事物,但最近一两个月以来,已经开始涌现一些值得讨论的新概念/技术了,它们将会共同塑造下一轮牛市的叙事。
ERC-4337标准定义的「账户抽象」绝对算是一个,未来的大部分交互场景也许是由智能合约钱包来完成,而不是今天的外部钱包。
由于「账户抽象」(Account Abstraction)是对以太坊上两种类型账户的改进方案,因此我们讨论「账户抽象」的优势,就必须先确定在此之前的不足。
以太坊有两种类型的账户——外部账户(externally-owned account,EOA)和合约账户,二者在功能上都可以接收、持有和发送token,以及和智能合约交互,但形态不同。
外部账户就是我们现在常见的钱包所提供的账户。创建外部账户时,会生成公钥和私钥的密钥对,然后该账户在链上的每一步交互都需要用私钥从外部来签名。也就是说,谁控制了私钥,谁就控制了这个账户。
所以外部账户的操作就很麻烦,而且还不能离线授权,限制了很多应用场景(比如止盈止损,除非是把资产打给协议的账户才可以代劳)。毫不夸张地说,限制Web2用户迁移到Web3最大的也是第一个拦路虎就是外部账户。
以太坊上还有另一种形态的账户,那就是存储在链上并由代码自动执行的合约账户,理论上就不用再每一步都签名确认了,可实际上它的执行逻辑决定了它不能在链上发起交易(只能响应)……除非以太坊改动共识层。
所以以太坊社区用合约账户取代外部账户的想法一直搁置到今年,直到ERC-4337标准的推出。
ERC-4337标准并没有改变以太坊的共识层,但可以让合约账户像外部账户那样发起交易,而且由于是账户本身就是一个智能合约,因此还有很多可自定义的权限,例如项目方空投时直接给用户付Gas费,甚至Gas费本身也可以支持各种token。
很难用三言两语介绍清楚ERC-4337标准是怎么做到的,所以这里就用比喻来形象(但不够准确)地加以说明——让合约账户伪装外部账户去发起交易。
我们现在所使用的外部账户发起交易的流程是:
先向节点发送一组指令(主要是描述这比交易的接收者、数量、允许最大Gas、签名等),节点收到指令后会判定该指令是否有效(余额够不够,签名对不对),如有效就添加到区块链上。
有时指令太多,节点处理不过来,就把它们放到内存池排队等候(基本是按Gas费多少来安排顺序的)。
ERC-4337标准就是把内存池这个底层功能给复制到合约上,这样就可以跟外部账户一样发起交易了。当然这个内存池是另外的内存池,节点运行的是专用代码,有专用的接口。
那么可以发起交易的合约账户,跟本来就可以发起交易的外部账户相比有什么优势呢?
Vitalik Buterin总结的优势有可以添加任意签名和随机数验证逻辑、可以更改公钥或升级代码、可以为执行步骤添加自定义逻辑等。这里再用一个形象(但不够准确)的比喻来加以说明——让管理账户就跟管理DeFi协议一样灵活。
对普通用户而言,终于可以像使用支付宝、微信钱包那样去使用链上钱包了,包括且不限于免密支付、社交恢复、代付、挂失冻结等。
可以预见,账户抽象方案未来会取代外部账户方案成为钱包赛道主流,就像移动支付取代现金和信用卡那样不可阻挡。只是「未来」会有多久?
这个问题背后是一系列具体的问题,例如如何兼容现有的dApp、合约推进难度如何等等,不出意外的话一定会出意外。
推荐阅读:《“卷上加卷”:Rollup时代的账户抽象解决方案》、《账户抽象与EIP-4337 :如何改善以太坊的用户体验?》