EIP-7702 详解:工作原理及你需要知道的一切

  • web3auth
  • 发布于 2024-05-24 22:49
  • 阅读 26

EIP-7702 是 Vitalik Buterin 联合提出的提案,旨在解决 EIP-3074 带来的问题,EIP-7702 允许 EOA 临时设置智能合约代码,使其在交易期间具备智能合约账户的功能,无需完全迁移到智能账户,从而实现账户抽象的特性,如 gas 赞助、批量交易和自定义逻辑。EIP-7702与ERC-4337兼容,降低了dApp的采用复杂性,并减少了安全风险。

EIP-7702 Explained: How it Works and Everything You Need to Know

TL;DR(太长不看)

  • EIP-7702 是 Vitalik Buterin 共同提出的提案,提出了一种新的交易类型,为相应的 EOA 添加了一个 contract_code 字段。
  • 它的创建是为了回应备受争议的 EIP-3074,该提案允许外部拥有的账户 (EOA) 授权智能合约代表其进行交易调用,并在他们希望时撤销授权。这与账户抽象路线图相冲突,在该路线图中,所有以太坊钱包最终都应该是智能合约账户。有了 EIP-3074,用户可能会在永久迁移到智能合约钱包还是仅仅继续使用带有 EIP-3074 的 EOA 之间产生分歧。
  • 为了解决这个问题,EIP-7702 使 EOA 能够为钱包临时设置一个智能合约代码,该代码仅在交易期间可执行。
  • 这允许 EOA 享受账户抽象功能,如 gas 赞助、批量交易和执行交易的自定义逻辑,而无需将交易控制权委托给智能合约或完全离开 EOA 来迁移到智能账户。

账户抽象 (AA) 路线图是以太坊未来发展的愿景,旨在统一以太坊生态系统中不同类型账户的处理方式。目前,以太坊区分两种主要类型的账户:外部拥有的账户 (EOA) 和智能合约账户。EOA 由私钥控制,可以持有以太币 (ETH),但不能执行代码。另一方面,合约账户可以在 EOA 签署的交易触发时执行代码。

账户抽象的最终目标是通过允许所有账户执行代码来最终消除这种区别。这意味着传统上用于简单交易的 EOA 将迁移到成为智能账户、将其交易控制权委托给智能合约,或者以某种方式获得执行智能合约代码的能力,就像原生智能账户一样。这种转变并非易事,需要考虑 EVM 架构的众多细微之处。

用于调整 EOA 以实现账户抽象的先前提案

已经提出了各种提案来解决 EOA 的账户抽象问题。其中之一是 EIP-5003,旨在使用新的操作码 AUTHUSURP 将钱包永久迁移到智能合约账户。然而,EIP-5003 的永久性可能会让用户犹豫是否迁移,一些未解决的问题(如钱包的互操作性)也会让他们犹豫。

另一项被称为 EIP-3074 的提案正在通过操作码 AUTHAUTHCALL 为 EOA 提供一种将其交易临时委托给智能账户的方式。这实际上为渴望尝试 AA 功能而不完全致力于他们想要使用的合约的 EOA 用户创造了一条中间道路。

EIP-3074 已经被初步添加到下一个升级中,但它受到了社区的辩论,因为它的一些方面与更大的账户抽象计划不一致。例如,在一个所有钱包都已经是智能合约的世界里,AUTHAUTHCALL 操作码将是一个技术负担,最终没有人使用,但所有建立在以太坊之上的链和应用程序都必须继续支持。

EIP-3074 的另一个问题是过度强化 EOA 钱包。因为它允许人们轻松授权智能合约代表其调用交易,并在需要时撤销对合约的授权,因此它与 ERC-4337 的不一致引起了社区的关注。

EIP-7702 的诞生

为了解决与更广泛的账户抽象计划的这种一致性冲突,Vitalik 制定了一个快速解决方案,该方案创建了一种新的交易类型,而不是在 EVM 中引入新的操作码。

EIP-7702 允许EOA 通过添加 加粗contract_code加粗 字段以及交易的其他详细信息来临时充当智能合约账户。因此,智能合约代码仅在交易上下文中为 EOA 设置。在后台,你将有一个数组,其中包含两个重要细节:

  1. 在交易开始之前添加到签名地址并在交易结束后删除的 加粗contract_code加粗
  2. 将临时部署 contract_code 的 加粗signature加粗

EIP-7702 中的示例交易负载如下所示:

rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, [[contract_code, y_parity, r, s], ...], signature_y_parity, signature_r, signature_s])

通过将 contract_code 添加到签名地址,可以将 EOA 与合约关联起来。客户端可以循环遍历此数组,以找到每个签名的 EOA 地址。然后,它将此 EOA 的代码设置为提供的合约代码。在交易结束时,只需删除 EOA 的代码。这种交易也不需要 EOA 成为 tx.origin,从而可以与 ERC-4337 无缝集成。

EIP-7702 的优势

  1. 向后和向前兼容 ERC-4337

与之前的 3074 相比,EIP-7702 在许多方面与账户抽象路线图和基础设施更加兼容。例如,不需要可能在生态系统中产生碎片化的调用者合约。智能合约不是由调用者合约调用,而是由 EOA 直接调用,而无需任何授权或不同的地址来创建 userOp。

7702 还考虑了 ERC-4337 的未来,即所有 EOA 最终都将成为智能钱包。可以简单地添加功能,允许 EOA 永久迁移到智能账户,而不会破坏任何 7702 现有代码。

  1. dApp 更容易采用

已经使用 ERC-4337 基础设施的应用程序可能会考虑 3074 以赋予 EOA 智能账户的功能。但是,这样做会给系统带来更多的复杂性。

3074 中的调用者可以被多个 EOA 使用,并且这种多租户的属性增加了从不同 EOA 使用相同 UserOps 的复杂性。为了做到这一点,需要完成一些解决方法,例如创建一个 nonce 管理器并将 EOA 地址放入 Op 的 2D nonce 中。

但是在 7702 中,UserOp 的发送者可以简单地是 EOA 本身,而不需要使用 UserOp 进行任何解决方法,并保持 Op 结构在 EOA 和智能钱包之间保持一致。UserOp 的构建基于 Op 来自同一个 EOA 的假设,而 7702 与此假设一致。

  1. 更少的安全风险

因为 contract_code 在交易执行后会自动删除,所以在 7702 中,未经授权的交易将是不可能的。

另一个问题是,当 3074 与账户抽象基础设施一起使用时,它会导致可能导致漏洞的复杂性。因为 3074 是多租户的,所以调用 AUTH 需要访问 EOA 的 nonce,并且 EOA 与其调用者之间没有清晰的 1:1 关联。因此,你可以通过增加授权者的 nonce 来使共享单个授权者的多个 UserOps 失效。但是,这不会发生在 EIP-7702 中,因为交易直接与 EOA 而不是调用者合约关联。

ERC-3074 交易可以为 MEV 三明治攻击开辟新的策略。例如,一个人只能进行闪电贷进行套利,因为闪电贷的限制是你必须在同一个交易中偿还它。但是有了 3074,你可以在一个 multicall 发送到调用者合约之前,通过从中提取承诺和签名并 将其放在你自己的交易中 来抢先交易。在 EIP-7702 中,没有 AUTH 调用可以被抢先交易,因为交易直接发送到应用程序合约。

EIP-7702 的缺点

  1. 撤销

与 3074 不同,在 3074 中,用户可以轻松撤销合约的授权,而 EIP-7702 钱包可能无法对撤销与其关联的 加粗contract_code加粗 进行太多控制。因此,智能合约代码需要被信任,并且如果检测到任何恶意代码,协议没有任何方法可以让用户还原智能合约。有很多方法可以在 EIP-7702 中允许此功能,但到目前为止,该提案没有任何关于撤销合约代码的详细信息。

  1. 链无关签名

最后,该提案中的签名会自动假定可以在其他链中重复使用。这可能是一个优势,但如果用户希望在不同的链上有不同的实现,它可能过于不灵活。

总之,EIP-7702 的出现是解决以太坊账户抽象不断发展的局面的一种有希望的解决方案。与它的前身不同,这个提案允许 EOA 在交易范围内无缝地采用智能合约功能,不仅解决了 EIP-3074 提出的直接问题,而且与 ERC-4337 中概述的总体愿景和谐一致。

然而,与任何新颖的概念一样,有一些领域需要进一步审查,例如存储、可撤销性和跨链灵活性。尽管如此,EIP-7702 代表了以太坊朝着更具包容性和通用性的生态系统迈出的重要一步,有望增强用户和开发者塑造去中心化未来的能力。

发现 EIP-7702 有趣吗?查看我们其他关于账户抽象的文章:

什么是 EIP-3074:综合指南

Gas 抽象和创建多链 AA 钱包

Web3 钱包终极指南:外部拥有的账户和智能合约钱包

Introducing NFT Services : Streamlining NFT Purchases, Making it User Friendly and Easy to Integrate

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

0 条评论

请先 登录 后评论
web3auth
web3auth
Simplest Web3 Wallet Infrastructure ever. No more seed phrases. Try our MPC/AA-enabled, self-custodial solution here: http://web3auth.io