文章讨论了以太坊钱包的现状与未来,对比了EIP-3074和ERC-4337两种提案,旨在改进以太坊钱包的用户体验和安全性。
作者: Ismael Darwish
特别感谢 Kristof Gazso 和 Jorge Mederos 来自 Nethermind, Sam Wilson 和 Matt Garnett 来自 ConsenSys,以及 Yoav Weiss 来自 OpenGSN 的反馈。
目录:
今天,以太坊的钱包功能相当有限。为了简化起见,在以太坊最初创建时,钱包机制是受以往区块链经过测试的解决方案所启发的。但早期,开发者们就已经意识到这些限制,并且可能会在以太坊的未来版本中增加更好的解决方案。在经过多次提案和迭代后,似乎我们离确定解决方案已经很近了。
在今天的以太坊中,有两种类型的账户:由用户的私钥控制的称为外部拥有账户(EOA),以及由其代码控制的智能合约账户。今天,交易只能从包含 ETH 的 EOA 开始,并且这些交易可以与具有任意逻辑的智能合约进行交互。
以太坊中的钱包是指用于持有用户资金的系统。EOA 是最常见的类型,但特别设计的智能合约也可以充当钱包,我们称之为智能合约钱包。
账户抽象是一个过程,使所有以太坊账户几乎难以区分,实际上消除了 EOAs 和对智能合约钱包的特殊处理的需求。
简化的 EOA 交易机制
目前,以太坊中大多数使用的钱包都是 EOAs。用户随机选择他们的 256 位私钥以获取他们的 EOA。考虑到两个随机选择的密钥访问相同账户的极低几率(就像两次选择地球上的同一粒沙子一样),可以合理地认为这是不可能的。
为执行交易,用户使用他们的私钥通过标准的 ECDSA 签名来签署交易,然后将其发送到以太坊网络让矿工将其包含在区块中。
需要注意的是,交易要被包含在区块中,必须向矿工支付一定数量的 ETH 作为费用并被烧毁,依据 EIP 1559。这意味着,尽管创建 EOA 是免费的,执行交易却要求用户必须找到将 ETH 发送到该 EOA 的方法。有些解决方案可能涉及使用交易所,或者让你认识的人向该账户发送 ETH。
以太坊社区对 EOAs 表达了多个担忧。今天,这些担忧包括:
以下解决方案试图解决这些问题。
智能合约钱包交易
如前所述,智能合约钱包是专门设计来持有和管理用户资金及操作的智能合约。目前的解决方案如 Argent、Gnosis 或 Loopring 钱包相比 EOAs 拥有更先进的功能。
由于交易只能从 EOA 开始,为改善用户体验,这些项目提供中继服务,将用户签署的消息从服务提供商的 EOA 提交到链上,同时采用定制的费用机制将 ETH 退还给 EOA,以使整个过程可持续。需要注意的是,这些交易可以从任何 EOA 开始,赋予用户完全拥有他们资金的权限,但这个过程可能更繁琐。
目前并没有任何标准能使智能合约钱包运作,因此每个项目不得不转而寻求元交易解决方案,如 GSN,或承担创建和管理自己的中继服务的努力,同时还要管理费用机制并审计其复杂的智能合约。反过来,用户能够获得智能合约钱包所能提供的额外好处。这些改进的一些例子包括:
与普通的 EOAs 相比,智能合约钱包的优势非常明显,以太坊社区正在努力制定将这些优点原生集成到协议中的标准。
鉴于需要一种标准方法以使这些更高级的钱包操作,近年来提出了一些提案。目前,社区正在讨论看似对立的解决方案:
EIP-3074 交易流程
由于 Sam Wilson、Matt 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!