区块链概论
搜索
⌃K

4.10 EIP-2938:账户抽象化

账户的去中心化革命

账户抽象化的历史

账户抽象化这个概念是在 2017 年的 EIP-86 里首次提出的,其目的是实现 “交易来源和签名的抽象”。不过其动机和想法可以追溯到 2016 年年初 vitalik 提交的一个 issue, 文中建议 “与其将 ECDSA 签名算法和默认的 nonce 机制写死在协议内作为 ‘标准’ 的账户安全机制,不如初步建立一个(统一的)账户模型,在未来把所有的账户都变成合约,让合约可以支付 gas,让用户可以自由定义自己的安全模型。”
要实现最初的提议非常有挑战,因为不仅要大幅修改协议,还要满足系统的安全保证。最近,Vitalik 等人提出了 EIP-2938 草案,该草案概述了一个更简单的实现。这个实现对协议/共识的改动最小,并且通过设置节点的内存池规则来满足所需的安全保证。
前面有关章节已经介绍以太坊有两种类型的账户:
  • 外部账户(Externally Owned Account, EOA)
  • 合约账户(Contract Account, CA)。
前者由用户私钥控制,而后者由存储在智能合约账户(有时也被称为智能钱包)内的合约代码控制。
外部账户的权限要大于合约账户,因为只有外部账户可以通过支付 gas 启动交易的执行过程。
EIP-2938提出的账户抽象化(Account Abstraction, AA)是一个可以让合约账户成为和外部账户一样的 “顶层” 账户的提案。具体来说,这个方案要求对以太坊协议进行修改,并允许从合约(contract),而不仅仅是外部账户来发起以太坊交易。合约本身将具备验证和矿工需验证的gas费用支付逻辑。那么也就是说,实现了账户抽象化之后,合约账户也可以支付交易费和执行交易。
EIP-2938通过账户抽象化来为以太坊提供一个基础功能层(我认为它最终将签名验证、gas 支付和重放保护等功能从核心协议转移到以太坊虚拟机上,虽然V神觉得转移到Layer 2上也可以),以确定何时支付,谁来支付以及怎样支付 gas。
这样它可以让更多通用型钱包或者其它应用的智能合约执行复杂的逻辑。譬如没有EIP-2938,你想把所有代币都放到一个新钱包里,然后你一不小心先把所有 ETH 都发送到这个新钱包里了。马上,你会尴尬地发现你的旧钱包因为没有 ETH 而无法发送任何交易,剩下的代币无法转移到新钱包。账户抽象化能让你使用其它合约地址(如智能合约钱包)里的 ETH 支付 gas 费用(这种情况叫代付交易,Sponsored Transactions),甚至还可以让你使用旧钱包里的其它代币支付 gas 费用。

创新

账户抽象化为包括新型钱包在内的区块链dApp的创新设计打开了新的思路。有助于下列技术方案的实施:
  • 多签和账户的社交恢复
  • 验证逻辑灵活性——更高效和更简洁的签名算法(如:Schnorr, BLS)
  • 执行层量子安全与后量子安全签名算法(如:Lamport, Winternitz)
    如果这一提案得到普遍采用,则无需为量子安全在执行层做进一步的工作。用户可将钱包自行升级到量子安全的版本。甚至连封装交易(wrapper transaction)也是安全的。矿工可以为每个捆绑交易使用新创建的EOA,由于是新创建的,所以每个交易都受到哈希保护,更保证了安全性。并且,在矿工将交易添加到区块中之前不会发布该交易。
  • 钱包可升级性及其执行逻辑灵活性
    钱包验证逻辑可以是有状态的,因此钱包可以更改其公钥或(如果使用DELEGATECALL发布)完全升级其代码。
    钱包可以为执行步骤添加自定义逻辑,例如进行原子多操作(这是EIP 3074的一个关键目标)。
  • 状态通道
  • ZK-Snark、AZTEC protocol 等二层隐私性方案

动机

账户抽象化背后的动机很简单,但会带来根本性的改变:当前,以太坊交易具备 功能可编程性(通过调用智能合约实现),但是 交易的验证方式 却是固定的。只有持有有效的 ECDSA 签名、有效的 nonce 值以及足够的账户余额,一笔交易才算有效。账户抽象化引入了一种新的交易类型 —— 抽象账户交易(AA Transaction)。这种交易总是由一个特殊地址产生,协议不会检查其签名,nonce 和余额。通过引入这种交易,账户抽象化实现了从固定验证方式到可编程验证方式的转变。抽象账户交易的有效性由其 target 字段指定的智能合约验证,通过验证之后,合约可以自行为该交易支付手续费。

意义

账户抽象化的出发点,是想要在钱包、交易混淆器(mixer)、DeFi 等各种应用场景下,显著改善用户与以太坊链的交互体验。但它客观上去除了外部账户也就是人类的特权——考虑到合约运行的超过效率,我们甚至可以说它很可能让人类对以太坊应用的影响降低到极小化。并且,未来会不会进一步降级外部账户的权限,都是值得我们深思和慢慢观察的了。