今日与明日之以太坊钱包——EIP-3074 与 ERC-4337

文章讨论了以太坊钱包的现状与未来,对比了EIP-3074和ERC-4337两种提案,旨在改进以太坊钱包的用户体验和安全性。

以太坊钱包的今天与明天 — EIP-3074 与 ERC-4337

作者: Ismael Darwish

特别感谢 Kristof GazsoJorge Mederos 来自 Nethermind, Sam WilsonMatt Garnett 来自 ConsenSys,以及 Yoav Weiss 来自 OpenGSN 的反馈。

目录:

  • 引言
  • 账户与钱包
  • 今天的钱包
  • 更好的钱包
  • 明天的钱包 — EIP 3074 与 ERC 4337
  • 长期计划
  • 标准智能合约钱包何时到来?

引言

今天,以太坊的钱包功能相当有限。为了简化起见,在以太坊最初创建时,钱包机制是受以往区块链经过测试的解决方案所启发的。但早期,开发者们就已经意识到这些限制,并且可能会在以太坊的未来版本中增加更好的解决方案。在经过多次提案和迭代后,似乎我们离确定解决方案已经很近了。

账户、钱包与账户抽象

在今天的以太坊中,有两种类型的账户:由用户的私钥控制的称为外部拥有账户(EOA),以及由其代码控制的智能合约账户。今天,交易只能从包含 ETH 的 EOA 开始,并且这些交易可以与具有任意逻辑的智能合约进行交互。

以太坊中的钱包是指用于持有用户资金的系统。EOA 是最常见的类型,但特别设计的智能合约也可以充当钱包,我们称之为智能合约钱包。

账户抽象是一个过程,使所有以太坊账户几乎难以区分,实际上消除了 EOAs 和对智能合约钱包的特殊处理的需求。

今天的钱包

简化的 EOA 交易机制

目前,以太坊中大多数使用的钱包都是 EOAs。用户随机选择他们的 256 位私钥以获取他们的 EOA。考虑到两个随机选择的密钥访问相同账户的极低几率(就像两次选择地球上的同一粒沙子一样),可以合理地认为这是不可能的。

为执行交易,用户使用他们的私钥通过标准的 ECDSA 签名来签署交易,然后将其发送到以太坊网络让矿工将其包含在区块中。

需要注意的是,交易要被包含在区块中,必须向矿工支付一定数量的 ETH 作为费用并被烧毁,依据 EIP 1559。这意味着,尽管创建 EOA 是免费的,执行交易却要求用户必须找到将 ETH 发送到该 EOA 的方法。有些解决方案可能涉及使用交易所,或者让你认识的人向该账户发送 ETH。

以太坊社区对 EOAs 表达了多个担忧。今天,这些担忧包括:

  • 密钥管理: 由于访问资金的唯一方式是知晓私钥,管理密钥的存储和谁可以访问这些密钥可能是一个艰难且压力很大的挑战。
  • 依赖 ECDSA 签名: 更简单的、抵抗量子攻击的数字签名显然比当前的 ECDSA 更具优势。
  • 交易与行动的 1 对 1 绑定: 不能同时执行多个操作可能会产生不必要的成本和糟糕的用户体验。

以下解决方案试图解决这些问题。

更好的钱包

智能合约钱包交易

如前所述,智能合约钱包是专门设计来持有和管理用户资金及操作的智能合约。目前的解决方案如 Argent、Gnosis 或 Loopring 钱包相比 EOAs 拥有更先进的功能。

由于交易只能从 EOA 开始,为改善用户体验,这些项目提供中继服务,将用户签署的消息从服务提供商的 EOA 提交到链上,同时采用定制的费用机制将 ETH 退还给 EOA,以使整个过程可持续。需要注意的是,这些交易可以从任何 EOA 开始,赋予用户完全拥有他们资金的权限,但这个过程可能更繁琐。

目前并没有任何标准能使智能合约钱包运作,因此每个项目不得不转而寻求元交易解决方案,如 GSN,或承担创建和管理自己的中继服务的努力,同时还要管理费用机制并审计其复杂的智能合约。反过来,用户能够获得智能合约钱包所能提供的额外好处。这些改进的一些例子包括:

  • 社交恢复: 用户可以确定一系列可以访问其资金或恢复其钱包权限的账户。这非常有用,使用户不必担心丢失密钥的心理负担。此外,在发生严重事故的情况下,这些账户可以共同找回资金。
  • 多重签名交易: 需要多个用户批准才能进行的交易。
  • 批量交易: 用户可以将一系列希望执行的操作打包在一个交易中,从而显著改善体验,节省费用并确保操作的顺序和原子性。
  • 自定义验证逻辑: 智能合约钱包可以包含验证用户意图的自定义方法,使用更简单或抵抗量子攻击的签名。

与普通的 EOAs 相比,智能合约钱包的优势非常明显,以太坊社区正在努力制定将这些优点原生集成到协议中的标准。

明天的钱包 — EIP-3074 与 ERC-4337

鉴于需要一种标准方法以使这些更高级的钱包操作,近年来提出了一些提案。目前,社区正在讨论看似对立的解决方案:

  • 赋予 EOA 钱包智能功能。
  • 向智能合约钱包提供标准 EOA 功能。

EIP-3074 交易流程

由于 Sam WilsonMatt Garnett 等人的建议,EIP-3074 正式化了赋予 EOAs 高级功能的提案。

此解决方案涉及向 EVM 添加两条新的操作码:AUTH 和 AUTHCALL,这些是供称为“调用者”的智能合约使用的。这些调用者获得对授权它们的 EOA 的控制权,并可以代表其进行调用。

通过 EIP-3074,用户使用其私钥签署包含他们意图的消息。该消息随后将被包含在链上的交易中,调用调用者。调用者使用签名的消息和 AUTH 操作码来获得对用户账户的控制,然后通过 AUTHCALL 可以代表用户执行操作。重要的是,包含用户签名消息的交易不一定要从该用户的账户发送,这使得用户完全不需要依赖 ETH 来发送交易。事实上,使用其他方式支付费用(如 ERC-20 代币)可能是可能的。

EIP-3074 的调用者是对以太坊中每个 EOA 的即时升级。该提案不要求现有用户必须将所有资产迁移到新钱包以受益(如下面讨论的 ERC-4337)。EIP-3074 的选择加入机制可以被看作是为你的 EOA 增加扩展。

对此方法有 若干担忧,主要是因为授予调用者如此强大的权限可能会导致类似于 DAO 黑客事件的灾难性后果。

在这些讨论中,ERC-4337 是基于 Vitalik Buterin 的一个概念 提出的。

ERC-4337 交易流程

ERC-4337 通过在更高级别的系统中复制交易内存池的功能来实现账户抽象。用户发送 UserOperation 对象到以太坊打包人,它们将一组这些对象打包成一个单一的捆绑交易,然后被包括到以太坊链中。

这些捆绑交易由一个“入口点”合约处理,负责用户钱包的部署和通过查询已部署钱包来验证 User Operation 对象。

最后,UserOperation 由用户选择的智能合约钱包处理,因为它包含与入口点交互所需的逻辑。

长期计划

围绕这些实现的讨论使开发者试图为两个提案勾勒出长期计划。鉴于当前 EOAs 的用户体验和安全问题,承认未来会消除当前 EOAs 是显而易见的。

ERC-4337 的支持者认为,未来,这种新的 User Operation 内存池可以取代当前的交易内存池。一次以太坊硬分叉将把所有现有的 EOAs 转变为可升级的智能合约钱包,方式类似于 Optimism 已经尝试过的。EIP-3074 将难以适应这一愿景,在后 AA 的以太坊中产生大量技术债务。因此,ERC-4337 的支持者建议 对 3074 进行修改,这将使其在未来更易于去除,或者简化其机制以便于适应新的结构。

另一方面,EIP-3074 的支持者从不同的角度构建问题,将钱包聚焦于 验证用户的意图,提供一条不同的路径通向账户抽象,其中 EIP-3074 和账户抽象彼此互补。在这一路线图中,EOAs 被一个基本的智能合约钱包取代,具有禁止调用者授权代表其执行操作的功能,从而缓解了对恶意调用者的担忧。

标准智能合约钱包何时到来?

很快™。这两个提案都接近准备好被采用,但由于变化的性质不同,时间线看起来有些不同:

EIP-3074 是一个核心 EIP,意味着它修改了共识机制,需要一次以太坊硬分叉来实现。该 EIP 正在讨论在今年合并后上海分叉中纳入。尽管如此,就实现而言,节点开发者包括它相对简单。

相对而言,实施 ERC-4337 需要比 3074 更多代码,但开发可以不受合并的影响,因为它不需要一次以太坊分叉来实现。Nethermind 已经对此 提供支持,很快将在 Go-Ethereum 客户端中实现,并在 Goerli 测试网上进行了有效实现。同时,还在进行其他项目如 Metamask 的分叉工作以支持它,并与 L2 积极讨论采用。

这两个提案是多年实验的结果,旨在改善以太坊用户的体验。我们将要笑谈依赖纸张访问区块链的日子已经近在咫尺。账户抽象是向主流以太坊迈出的巨大战略步伐,而这一切即将到来。

在 Nethermind 有很多酷炫的项目,我们始终在寻找热情的人加入我们。如果你有兴趣在以太坊工作,请发送电子邮件,附上你的简历至 talent@nethermind.io。

  • 原文链接: medium.com/nethermind-et...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ismael_darwish
ismael_darwish
江湖只有他的大名,没有他的介绍。