ERC-4337 vs EIP-3074: 假二分法

进阶Jan 16, 2024
本文澄清了关于 EIP-3074 作为替代账户抽象路径的误解,并分析了完整账户抽象 ERC-4337 和纯执行抽象 Epos 之间的差异。
ERC-4337 vs EIP-3074: 假二分法

什么是账户抽象 (AA, Account Abstraction)?

每个以太坊帐户都实现五种功能:

  • 验证(Authentication)
  • 授权(Authorization)
  • 重放保护(Replay protection)
  • 燃气费(Gas payment)
  • 执行(Execution)

EOA 以硬编码方式实现它们:

  • 验证 和 授权 捆绑在一起:不可变更的 ECDSA 密钥可证明身份并授予完全权限。
  • 重放保护 是一个简单的随机数 - 一个单调递增的计数器。
  • 燃气费 直接从 EOA 的 ETH 余额中完成。
  • 执行 - 对单一目的地的单一呼叫。

帐户抽象意味着向这五个功能添加编程逻辑:

  • 验证 - 任何形式的证明身份的方式。
  • 授权 - 任何访问策略。
  • 重放保护 - 事务排序与重放保护分离。
  • 燃气费 - 燃气支付与账户本身脱钩。
  • 执行 - 任何执行逻辑。

帐户抽象用例示例

  • 不同的签名方案
    • secp256r1(安全飞地、密钥)
    • 施诺尔
    • 劳工统计局
    • 后量子
    • ZK 证明(例如 zkemail)
  • 钥匙轮换
    • 更换受损的密钥
    • Deadman 的继承开关(如果帐户一年不活动,密钥将变为活动状态)
  • 不同的访问策略
    • 多重签名
    • 基于角色的访问
    • dapp 特定的会话密钥
    • 社会恢复
  • 不同的重放保护方案
    • 来自不同实体的并行交易
    • 由第三方发送的预签名未来交易
    • 行政渠道
  • 天然气抽采
    • 第三方的天然气赞助
    • 使用 ETH 以外的资产进行支付
    • 隐私:匿名空投索赔或从 ZK Rollups 或 Mixer 中撤回
  • 执行抽象
    • 批量调用多个目的地(例如approve+transferFrom)
    • 原子性
    • 特定于 dapp 的 UX 改进

ERC-4337 与 EIP-3074:假二分法

EIP-3074 旨在抽象执行 通过调用程序使用任意执行逻辑增强 EOA。它具有独特的属性 - 无需将资产迁移到新账户即可扩展 EOA 的功能。它不需要解决去中心化访问等问题,因为执行不会影响这一点。其他四个功能确实如此,但它们超出了 EIP-3074 的范围。

ERC-4337 旨在抽象整个账户——所有五种功能。如果要保留权力下放和抗审查性,这是一个更难解决的问题。 ERC-4337 的重点是通过抽象前四个功能来减轻 DoS 和破坏攻击向量,而无需诉诸集中式基础设施。作为 ERC,它无法扩展 EOA 的功能,并且需要迁移到智能帐户。

两种方法之间的重叠很小:仅执行 抽象。

此外,每种方法都旨在解决另一种方法没有解决的问题:EIP-3074 旨在服务现有的 EOA 并让事情尽可能简单。 ERC-4337旨在提供完整的账户抽象 不牺牲以太坊的核心属性,例如去中心化。

如果坚持将 ERC-4337 与之前的提案进行比较,最接近的是 EIP-2938,而不是 EIP-3074。 EIP-2938 是账户抽象方面的突破,是第一个解决 AA 内存池中 DoS 缓解难度的提案。 ERC-4337 解决了 EIP-2938 没有解决的某些问题,但完整的比较超出了本文档的范围。

ERC-4337和EIP-3074都能解决什么问题?

两者都解决执行 抽象,因此启用上面用例的最后一类:

  • 批量调用多个目的地
  • 原子性
  • 特定于 dapp 的 UX 改进

EIP-3074 能做什么,而 ERC-4337 不能?

  • 向现有 EOA 添加复杂的执行功能。
    • ERC-4337 无法向 EOA 添加功能,因为它是 ERC。
  • 当只需要执行抽象时,简单性和更好的gas效率。
    • 完整的帐户抽象增加了执行抽象不需要的复杂性。

ERC-4337 能做什么,而 EIP-3074 不能?

  • 一开始就支持任何 EVM 链。没有共识变化。
    • 每个链必须通过共识变更来采用 EIP-3074。
  • 无需许可的创新
    • 钱包仅允许列入白名单的 EIP-3074 调用者。 ERC-4337 帐户可以由任何人建立和使用。
  • 完整的帐户抽象 - 所有上述用例,而不牺牲去中心化:
    • 不同的签名方案
      • EIP-3074 使用 ECDSA。 EIP 确实提到了转向不同方案的未来路径,但只要 EOA 本身尊重 ECDSA 密钥,调用者就无法阻止它被直接使用。
    • 钥匙轮换
      • 对于 EIP-3074,EOA 仍然具有不可撤销的密钥。
    • 不同的访问策略
      • ECDSA 密钥可以绕过调用者并执行帐户中的任何操作。没有细粒度的访问控制。
    • 不同的重放保护方案
      • 该帐户仍然是 EOA,并使用一维随机数。
    • 燃气抽象
      • 该账户用 ETH 支付自己的 Gas 费。
      • Gas提取系统可以构建在 EIP-3074 之上,使用中继代表帐户发送元交易。然而,保护此类中继免受 DoS 和破坏是一项挑战,因此它们很可能会获得许可。 ERC-4337 的大部分复杂性是由于这些中继器(捆绑器)未经许可而造成的。

EIP-3074 + EIP-5003 可以做 ERC-4337 所做的事情吗?

EIP-5003 通过让 EOA 撤销其 ECDSA 密钥并成为智能合约来补充 EIP-3074。作为合约,它可以抽象帐户的其余功能,例如用不同的签名替换 ECDSA、轮换密钥、应用访问策略等。从这个意义上说,它在某种程度上等同于诸如EIP-6913EIP-7377,但优于 EIP-7377,因为作为操作码,它可以使用燃气抽象系统进行迁移本身。

一旦EOA转换为智能合约,就不能再直接进行交易,需要通过另一个EOA进行访问。这就引入了 ERC-4337 旨在解决的挑战。迁移后用户有两种方式与账户进行交易:

  1. 维护另一个资助的 EOA 与该账户进行交易,并对每笔交易签名两次。这否定了帐户抽象的价值并导致糟糕的用户体验。
  2. 使用中继来维护资助的 EOA,将交易放在链上并由帐户偿还。保护这样的中继免受 DoS 和破坏比看起来更困难,因此一些项目运行经过许可的中继。这导致权力下放和审查制度的丧失。

分散迁移后帐户访问权限的方法是应用某些限制,直到帐户支付 Gas 费。 EIP-2938 和 ERC-4337 都采用了这种方法。这@yoav/unified-erc-4337-mempool">ERC-4337 内存池 提供一种去中心化的账户交易方式。

长话短说:不,它只是强调了对 ERC-4337 的需求。

特别注意:EOA 迁移被认为是有害的

对于现有 EOA 用户来说,就地迁移到智能账户而不是转移资产是很有吸引力的。然而,它也存在一定的漏洞,其中一些漏洞是无法缓解的。

如果 EOA 密钥泄露,可能会出现什么问题后 已被撤销?

  1. 该密钥在其他链上仍然有效(包括在迁移时甚至不存在的未来链)。它可用于在其他链上认领同一账户,并转移发送到这些链上账户的任何资产。
  2. 链下系统(例如 dapp 前端的登录过程)会检查签名。其中许多支持 EIP-1271 进行智能合约签名,但仅在 ecrecover 失败时才尝试。该密钥可用于破坏这些系统上的帐户。
  3. 它可以在链上使用(在它被吊销的同一条链上)来签署许可授权。如果账户包含支持许可授权的ERC-20代币,这些代币可能会被使用已吊销的密钥盗取。
  4. 跨链桥通常会在提现时检查签名。如果该账户通过这样的桥将资金发送到另一条链,则可以使用已撤销的密钥在另一侧提取资金。

用户可以在迁移后烧毁私钥并希望不留下任何副本,但用户也无法在其他链上声明相同的地址。

因此,当有充分理由保留旧地址时,迁移应作为最后的手段。默认情况下,新账户最好使用 CREATE2 进行部署,而不是从 EOA 迁移,这样它们就不会链接到其他链上的 EOA 密钥。

社区往往过分强调 EOA 迁移的重要性,因为大多数人当前的 用户拥有 EOA。接下来的 10 亿用户可以从智能帐户开始,而不必从 EOA 迁移。我们,当前的 EOA 用户,只是其中的一小部分。对于当前用户来说,迁移可能在一段时间内很重要。当帐户抽象成为常态时,它将成为很少使用的流程。

ERC-4337 和 EIP-3074 之间有协同作用吗?

是的,他们可能是@yoav/eip-3074-erc-4337-synergy">以有趣的方式组合。如果一条链采用 EIP-3074,那么使用 ERC-4337 的项目就可以利用它来谋取利益。

RIP-7560:未来账户抽象的一个有前景的路径

EIP-3074 和 ERC-4337 都是获得的步骤一些 完整本机帐户抽象的好处。前者侧重于获得所有好处执行抽象 后者侧重于获得所有好处帐户抽象 在所有 EVM 链上,但以非本机方式,效率较低。

希望用户从完整的本机帐户抽象中受益的链可以采用RIP-7560。它使用与 ERC-4337 相同的帐户和内存池架构,但在协议级别本地工作。

RIP-7560 不必从第一天起就被采用,现有账户将能够在未来任何时候选择采用它的链上迁移到它:

  • ERC-4337 帐户将能够迁移到 RIP-7560,而无需更改其架构,只需更改其实现以信任特殊的入口点 RIP-7560 中定义的地址。一个帐户可以轻松兼容 ERC-4337 和 RIP-7560,因此甚至不需要迁移。
  • EOA 或许能够直接迁移到 RIP-7560,而无需经过 ERC-4337 或 EIP-3074。 RIP-7560 已经支持 EOA 的燃气提取。未来的 RIP 可以让 EOA 设置其代码,无论是使用 SETCODE (EIP-6913) 或 AUTHUSURP (EIP-5003) 等操作码,还是通过添加类似于 EIP-7377 的 TransactionType4 子类型。此操作码/子类型可由在 Type-4 (RIP-7560) 交易中调用的迁移合约使用。然而,EOA 迁移是@yoav/erc-4337-vs-eip-3074-false-dichotomy#Caveat:-EOA-migration-considered-harmful">不被鼓励的。

RIP-7560 需要您的反馈

在提议将 RIP-7560 纳入其中之前,我们正在收集有关 RIP-7560 的反馈。如果您对本机帐户抽象感兴趣,请查看公关信息 或加入讨论

声明:

  1. 本文转载自[@yoav],著作权归属原作者[@yoav],如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!
Créer un compte