账户抽象背后的EIP大盘点

fffmCQ.jpg

作者:Vasa,OpenSea Pro联合创始人;翻译:金色财经xiaozou

本文我们来快速了解一下不同的EIP,是它们为我们带来了如今的账户抽象。

IBi1wWpT0680RWZaqv5DB56VCs7bGvDrkaHl3Wky.png

1、为什么我们需要帐户抽象(AA)?

人们喜欢抛出这样的问题:“我们如何为web3带来下一批十亿用户?”有许多障碍需要克服,但其中最重要的就是用户体验。

下图是对新用户来说典型的用户体验过程。还要注意,如果你丢失助记词,是没有办法找回你自己的资金的。这对新用户来说是一个巨大障碍。

vvFxw94g95EIvo2NuFwxQX9g5mTtJo2EvxwLJO2y.png

下面是一些我们可以做的事情来改善用户体验。我们可以:

– 创建无需助记词的钱包。

-使用一个无需存储ETH、无需使用ETH支付gas费的钱包。

-使用社交恢复找回钱包。

-在一笔交易中进行批量操作。

dE8KCPMN0cVxJwYU2lm5yt5B9g3GLhSxilFQWvfW.png

2、账户抽象类型

有两种账户:外部账户(EOA)和合约账户。EOA由私钥控制,合约账户由合约代码控制。

64lX5U5G6sNJZBjPvNiC827QJil9Zi8BpTNMeQ8Y.png

EOA可以向其他EOA或合约账户发起交易,然后这些账户可以执行它们的代码。合约账户也可以将交易发送给其他合约账户,后者可以执行自己的代码。

3、以太坊的早期:交易执行和验证

当一笔交易被发送到网络时,需要经过两个步骤:验证和执行。虽然执行的交易逻辑可以是任意的,但验证部分却是固定的。

验证部分由EOA必用的单一固定算法完成,即ECDSA签名验证。但是为什么我们使用一个固定方法来验证交易的有效性呢?如果未来由于量子计算,ECDSA签名验证不再可靠了怎么办?

如果我们让验证部分是开放的,那么你就可以创建一个具有非常复杂的验证算法的交易,那么,矿工/验证者将不得不花费大量的资源来检查该交易是否可以被包含进区块内。

现在,请注意,矿工只获得执行并包含交易的报酬,不获得验证报酬。因此,如果在花费了大量资源之后,矿工发现他们无法添加交易,那么他们就浪费了资源,不会因此获得任何报酬。因此,这可以被用来对网络进行DDoS攻击。这就是为什么以太坊最开始使用的是固定的验证算法。

4、以太坊的早期:多签采用问题

多重签名钱包是一个有很多所有者带有阈值的合约。如果你想发送一笔交易,就必须从所有所有者那里获得签名,然后你才能发送该交易。

这支持了社交恢复等功能的实现,一旦你丢失私钥,你可以有很多好友来帮助你恢复钱包。从以太坊的早期开始,多签钱包可以提供的价值就已经显而易见。因此,当时的以太坊开发团队希望以太坊用户使用多签钱包。然而,这并没有发生。

由于以太坊开发团队设想用户会使用多签钱包,所以他们并没有为ETH转账添加自动日志,因为他们预计多签钱包会记录每一笔ETH转账。当时的交易所必须解析ETH转账交易,而不是解析日志。

当有人试图使用带有ETH转账日志的多签钱包时,交易所是无法识别的,因为交易所并没有解析日志。因此,这个小小的假设最终让多签钱包的采用更难了。

5、EIP 86和1014:账户抽象第一步

EIP-86旨在引入智能合约钱包概念,称为“转发合约”。这些合约被设计为只接收来自“入口点”地址的交易,这些交易需要遵守特定格式。

现在,要创建一个智能合约钱包,你需要事先有一些ETH来支付gas费。你可以去CEX弄来一些ETH,但是因为你的智能合约钱包还没有创建,所以你还不能向钱包发送ETH。

如果我们可以在智能合约创建之前以某种方式确切地知道合约地址,我们就可以将ETH发送到该地址,然后使用地址上的ETH创建智能合约钱包。

这就是EIP-1014引入的内容。它引入了CREATE2操作码,可以让你在创建智能合约之前确定合约地址。这是迈向帐户抽象的第一步。

最初的EIP-86要求对协议进行重大改变,因为协议的更改需要节点开发团队之间的协作,并且需要经过大范围审查,因此从未实现。而EIP-1014是在Constantinople硬分叉中实现的。

6、社区发展:Gnosis Safe、Argent Wallet、Gas Station网络

在探讨研究EIP时,社区已经着手制定各自的解决方案。

其中最引人注目的是2018年发布的Gnosis Safe。Safe是一个支持用户创建多签钱包的智能合约钱包,还支持用户将多个操作批处理到单个交易中。它还允许用户使用ERC20代币支付gas费。

另一个值得注意的是2019年发布的Argent钱包。Argent智能钱包支持用户创建多签钱包,也支持用户使用ERC20代币支付gas费。另外,它还能让用户使用社交恢复来找回他们的钱包。

2019年发布的Gas Station网络(GSN)是一个去中心化网络,支持用户使用ERC20代币支付gas费。GSN可以与任何智能合约钱包一起使用。

7、EIP 2938——一个巨大的飞跃

从2018年开始,以太坊团队将注意力转向了向PoS(权益证明)的迁移,这无意中导致了研究团队和节点开发团队对EIP的评估和实施的重视程度的降低。

这一重心转移为2020年EIP-2938的提出铺平了道路,也就是在EIP-1014实施两年后。

该提案背后的核心思想就是引入智能合约钱包,这些钱包被设计为专门接收特定类型的交易,它们可以通过编程确定交易的gas上限并制定任意验证方法。

该提案引入了两个新的操作码来处理交易,并且正如前面强调的那样,包含这些核心更新是一个复杂的过程。

此外,关于如何实现重放保护,以及节点如何检查这些新型交易的有效性,还有悬而未决的问题。虽然该提案没有获得太多的关注,但它确实为下个提案(EIP-3074)的到来铺平了道路。

8、EIP-3074——高度通用的解决方案

该提案引入了两个新的操作码:AUTH和AUTHCALL。这个提议的不同之处在于,它支持外部账户(EOA)将控制权委托给合约。这些操作码被指定用于“invoker”合约,这些合约有可能显著增强任何EOA的功能。

该合约启动的交易结构完全是任意的,便于轻松实现多重签名、批处理和援助购买、密钥恢复以及更友好的CeFi存款等解决方案。由于其开放的性质,该提案作为一个高度通用的解决方案出现,能够满足广泛用例。

另一方面,这一提案的中立立场也带来了一些安全挑战。更进一步的讨论提出了一种更固执己见的AUTHCALL方法,以减轻相关风险。这一讨论促使研究人员得出了一个更优化的解决方案,从而产生了EIP-4337。

9、EIP-4337——无需更改共识层协议的以太坊账户抽象

HQ5SxXOpxJLs0tzXo1IgTdGxAe5XHPNAIJiDKUMM.png

EIP-4337提出了一种机制,在不需要更改共识层协议的情况下,将账户抽象引入以太坊。在此EIP下,用户与以太坊网络的交互方式有所不同;用户不发送交易,而是将UserOperation对象发送到一个单独的内存池。Sender是发起用户操作的账户合约。Bundler收集这些操作,将它们打包到一个交易中,该交易触发指定EntryPoint合约上的一个handleOps调用,以执行打包的操作。Paymaster是赞助交易的实体,其详细信息包含在UserOperation中,用于费用处理。

Aggregator对聚合的签名进行验证,提高了安全性和效率。Bundler或客户端白名单支持入口点和Aggregator合约,控制交互并确保在以太坊网络上正确执行用户操作,在不改变共识层的情况下与账户抽象的目标保持一致。

通过此过程部署的智能合约钱包自主管理随机数值和签名验证,提供了广泛的灵活性。这种设计有助于创建能够处理多重签名和打包交易、社交恢复甚至使用ERC20代币支付费用的智能合约钱包。

像EIP-4337中提出的某种形式的账户抽象可能会在以太坊的中期未来实现,最初出现在新的L2解决方案中,最终进入以太坊L1,从而扩大用户与以太坊交互的范围。

10、L2——新前沿

在引入任何与账户抽象相关的EIP时,核心协议的更新是一个重大障碍。核心开发人员一直忙于ETH 2.0路线图,这在很长一段时间内一直都是最高优先级事项。

但是L2呢?与带着技术债的以太坊L1不同,最近的L2链从一开始就拥有集成帐户抽象的架构。

例如,StarkNet是一个ZK rollup,它创建了独特的帐户抽象。此外,以L1智能合约钱包而闻名的Argent在StarkNet上推出了ArgentX,嵌入了一个受EIP-4337影响很大的自定义账户抽象实现。这些举措强调了以太坊区块链账户抽象的重要性和适用性。

声明:该文观点仅代表作者本人,与炒币网无关。炒币网系信息发布平台,仅提供信息存储空间服务。对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,并不对文章观点负责。 提示:投资有风险,入市须谨慎。本资讯仅供参阅,不作为投资理财建议。

发表评论

登录后才能评论