0x01 账户抽象(AA)与智能合约钱包有啥不同?
最核心的差别在于是否可以直接从智能合约发送交易。对 “直接”这个词的理解很关键。
账户抽象的目标是让智能合约账户和 EOA 账户一样作为交易的发起方。在账户抽象实现前,这样是不可能的。目前智能合约钱包的实现基本上都需要依赖一个 EOA 账户:
- 当我们创建一个智能合约钱包时,仍然需要先创建一个 EOA 账户,通过 EOA 账户调用钱包智能合约。
- 为了达到屏蔽 EOA 账户的效果,就不能让 EOA 账户支付 gas 费,这样就依赖元交易(meta-transaction) 来达到这样的效果,而元交易往往依赖一个比较中心化的 relay 服务来转发交易。
而有了账户抽象,我们通过智能合约发送交易的过程就像现在 EOA 账户直接唤起 metamask 发送交易的过程类似,不再需要 meta-transaction 那一套了。
0x02 为啥使用账户抽象就不需要 EOA 账户了呢
- 首先,我们要明白:私钥≠EOA。虽然每个私钥都有一个相应的 EOA,但私钥本身就是一个可以签名的密钥。典型的账户抽象钱包会像 MetaMask 一样存储和保护私钥,并使用私钥为智能合约账户签署交易。这个私钥对应的 EOA,其存在的意义仅用作验证签名的公钥。
- 其次,由于账户抽象使交易能够通过智能合约进行验证,验证逻辑可以是任意的,技术上是有可能不用私钥而用其它的方式对交易进行验证的。
0x03 MPC 与账户抽象的关系
使用 MPC,你实际上拥有一个“虚拟私钥”,而无需将其存储在某个地方,这比必须写下 12 个单词的助记词的有了很大的改进。
账户抽象更多是关于当你发送交易时会发生什么—谁支付 gas?哪些代币用于支付 gas?谁签署交易?所有这些都可以用账户抽象给抽象掉,而带来更多样的实现和更丰富的体验。
所以,可以简单理解为:
- MPC 提升了私钥管理体验。
- 账户抽象提升交易体验。