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

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

什么是账户抽象 (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的情况下不得复制、传播或抄袭经翻译文章。

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

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

什么是账户抽象 (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的情况下不得复制、传播或抄袭经翻译文章。
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.