以太坊的账户抽象以创建单一账户类型为目标,这种账户将包含所有相关方面,而且没有任何无关的方面,让开发人员的工作更加轻松。
原文标题:《以太坊区块链账户抽象概览》(An overview of Account Abstraction in Ethereum blockchain)
撰文:Yash Kamal Chaturvedi
编译:ETH 中文
译者注:账户抽象 (Account Abstraction, AA) 自 2015 年以来就一直被讨论,并提出了几个不同版本的 EIP (EIP-101、EIP-86、EIP-859、EIP-2938、EIP-4337)。最近,账户抽象的研发似乎又成为了社区的讨论热点,应用层面上也陆续推出账户抽象的解决方案。那么账户抽象究竟是什么?大家想要通过 AA 来解决什么?本文讲述了以太坊账户类型、账户抽象的 EIP、以及账户抽象的潜在用例。
推荐阅读下列文章,更好地理解账户抽象:
此外,普朗克社区和 ECN 社区合办的首期「他的名字叫小 V」活动对 EIP4337 合约钱包进行了分享。分享视频:EIP4337 合约钱包分享
计算机编程中的抽象和数据抽象指的是隐藏除了「对象」相关数据以外的所有数据的过程,目的是减少复杂性并提高有效性。它通过省略不必要细节的方式来表示对象。抽象是面向对象编程(object-oriented programming)的三大原理之一,它与封装和数据隐藏有关。这篇文章将为以下方面提供概览:
以太坊账户抽象
为账户抽象提议的 EIP
用例
以太坊的账户抽象以创建单一账户类型为目标,这种账户将包含所有相关方面,而且没有任何无关的方面,让开发人员的工作更加轻松。
目前,在以太坊区块链上有两种类型的账户:
用户账户是给一般人使用的(人类)。
合约是一组由代码控制的指令。
如果你发送 1 个 ETH 到由代码合约控制的账户,那就没有人可以再控制这个 ETH 了。唯一可以转移这个 ETH 的是合约的执行,即代码本身。
两种账户类型都具有接收、保留和发送 ETH 和代币的潜能,还有与部署在网络上的其他智能合约进行通信的潜能。
以太坊账户抽象 (AA) 是对这两种账户形式的加强,让它们更具有可比性,还使外部账户的管理逻辑像合约账户一样通用。
它的目的是将合约账户的两种形式减为一种形式。单个账户形式的用途包括铸币和合约转账。开发者和用户将不再需要区别账户类型,因为事务将完全转移到 EVM 上并脱离区块链协议。
以太坊开发者一直在寻找实现的方法,但一直没有达到 Final 状态的提案。在以下部分,我们将概述迄今为止提议账户抽象的三个以太坊改进提案 (EIP)。
2016:
2017:
2020:
2021:
根据其「摘要」,EIP-86 提议实现一系列改变,这些改变服务于「抽象出」签名验证和 nonce 检查的综合目的,允许用户创建用于执行任意所需签名 /nonce 检查的「账户合约」,而不是依赖于使用目前这种硬编码到事务处理的机制。
传统模型:ECDSA 和默认的 nonce 方案是保护账户的唯一方式。
新模型:所有账户都是合约账户,它可以支付 gas,且用户可以自由定义他们的安全模型。
以 forwarding contract 为例,作者 Vitalik Buterin 解释道,这种合约会验证签名,如果签名是有效,它开始向矿工发起付款,然后使用给定的值和数据向指定地址发送调用指令。
优势
这个提案的主要优势如下:
多签钱包
自定义密码学
根据 EIP-2938 的摘要,账户抽象 (AA) 允许合约成为可以支付费用和执行事务的「顶级」账户。
传统模型:事务的有效性直接由 ECDSA 签名、一个简单的 nonce 值以及账户余额进行定义。
新模型:
共识变更
Sam Wilson 是这个提案的作者之一,它在这里解释了 AA 事务与其他传统事务的不同之处。
在 AA 事务中,不会有 gas 价格或是 gas 上限、没有发送的值和签名字段,并用 target 代替 to 。在多签合约中,这些字段在 calldata 中进行传递,并用合约进行处理。
如果一笔事务到达节点,事务的有效性会被检查。但是传统事务和 AA 事务进行检查的方式不同。
区块广播时间是一个新区块到达网络大多数节点所需平均时间。
当具有 AA 事务的区块到来时,同一账户的所有待处理事务都将被删除。另一方面,传统事务会被重新验证并可能在收到新区块时发布。
这是 Vitalik Buterin 和社区提出的最新议案。它作为一项 ERC 提议出来,而这个提案包括了避免共识层协议的变更,而依靠于更高层的基础设施。
它旨在完成下列目标:
这项提案怎么运作?
图片来源:Infinitism
Vitalik Buterin 在这里很好地解释了这项提案的运作。
这是账户抽象最新的提案,现在还是 draft(起草)状态,等待被合并成为一项 EIP。对比常规的以太坊事务内存池,这项设计增添、维护以及牺牲了一些功能。
关键亮点
没有中心化的活动者、移除了用户端钱包设置复杂性,完全支持 EIP-1559、具有代替交费的能力,发送一个比旧 UserOperation 具有更高溢价的新 UserOperation 来替换操作或保留了让它更快被打包的功能。
有一些增添的新优势:
然而,尽管协议已经尽了最大的努力,它还是会略微增加 DoS 攻击的可能性,它还会增加 gas 开销,并且一次只执行一个事务。
EOA 和合约钱包
Argent, Dapper, Gnosis Safe 和 Monolith 都是智能合约钱包的案例。
以太坊区块链用户需要一个持有 gas 的 EOA 与区块链网络进行连接,或依赖钱包供应商通过他们的中继或第三方中继网络(例如 Gas Station 网络)促进元交易。前者依赖于 ( 需要做 KYC 的 ) 中心化交易所购买的 ETH,试图通过将消费者的责任转移给中继者来尽量减少用户体验摩擦,费用由链上 / 链下钱包供应商和 / 或链下用户支付。
元交易是一种包含了带有执行交易意愿者所签署的数据信息的交易。
基于中继者的架构有一些缺点:
账户抽象允许智能合约钱包在不依赖中继网络的情况下,接受用户的无 gas 费的元交易并为他们支付 gas 费。在不失去以太坊去中心化保证的情况下,这种基础层的能力还会大大提升这种钱包的 UX(用户体验)。
Sponsored Transactions 囊括在 EIP-2711 ( 状态为已撤销 ) 中,这个 EIP 提议了一种机制:通过允许其他人代付 gas 费,可以让人们无需拥有任何 ETH 就可以进行交易。
一些用例:
运作
这项提案可以通过出纳机制 (paymaster mechanism) 来支持这些用例。
一起探讨 Tornado Cash 混币机制的例子,以此理解我们如何在 DeFi 协议中使用 AA。
传统的 Tornado Cash 合约中的隐私问题
这个问题可以由第三方中继者解决,他们会验证 ZK-Snark 和 nullifier 仍然有效的状态,发布使用其 ETH 支付 gas 的交易,并从 Tornado Cash 合约中收集用户的返款。
账户抽象提供的解决方案:用户可以提交一个针对 TC 合约的 AA 事务,在这之后执行 ZK-SNARK 验证和 nullifier 检查,并直接快速地调用 PAYGAS。这可以让提款者直接用发送到他们提款地址的代币中支付 gas,无需中继者或连接其存款地址的链上链接。
一起探讨 DeFi 协议 Uniswap 的案例,了解我们可以在 DeFi 协议中如何使用 AA。
可以创建一种 Uniswap 的新版本,它允许直接进行针对 Uniswap 合约的交易。
目前,用户可以将代币提前存进 Uniswap;Uniswap 可以储存用户的余额和公钥,以便验证花费这些余额的事务。
AA 的目标在于通过禁止不符合高级标准的事务被打包到链上(例如,匹配订单的存在),从而提高 DeFi 协议的 gas 效率。
在传统模型中:正常的交易员会将他们的代币储存在 Uniswap 的合约之外。
在新模型中:套利交易员会将他们的代币存在 Uniswap 上,在外部市场发生变化的情况下,他们还可以转移执行套利的交易。最终,另一个套利交易员如果首先执行这笔交易时,这些没有获利的交易不会被打包上链。这让套利交易员避免了支付 gas 并减少了打包上链的垃圾交易数量。这将会增加区块链的可扩展性和市场效率,因为套利交易者更能做到纠正跨链交易在价格上的差异。
套利交易员指的是利用两个或更多市场之间的差价,由此同时低价购入并高价卖出的交易员。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。