作为开发人员,我们不断寻求突破创新界限并创建更通用的解决方案的方法。您是否想知道如何增强智能合约钱包的可定制性并释放其真正潜力?准备好了解新部署的以太坊标准,该标准支持模块化帐户抽象,这将彻底改变开发人员与智能合约交互的方式:ERC-6900。

在本文中,我们将踏上一段激动人心的旅程,探索 ERC-6900 的影响以及智能合约账户中模块化账户抽象的集成(仅供参考:在本文中,智能合约账户和智能合约钱包可以互换使用。)发现它们为开发人员和用户提供的潜在机会,以解锁 EVM 生态系统中的创新新领域。

在我们开始之前,先向Rhinestone的 Konrad 致敬,他编写了关于 ERC-6900 所基于的架构的 OG 内容!现在,您准备好深入研究并了解有关 ERC-6900 和模块化 AA 的更多信息了吗?让我们深入探讨——首先简单介绍一下 ERC-6900!

什么是 ERC-6900?

以太坊标准 ERC-6900 于 2023 年 4 月部署,提出了模块化智能合约账户和账户插件的概念,这本质上实现了可组合逻辑(想想乐高积木!)。根据该提案,ERC-6900 符合账户抽象标准 ERC-4337,并且受到ERC-2535“钻石模式”的启发,定义用于查询和更新模块化功能实现的 UI。

您可以将 ERC-6900 视为ERC-4337旨在实现的目标的延伸,特别是为每个智能合约钱包的执行和验证抽象逻辑的目标。ERC-6900 使开发人员能够抽象执行和验证的逻辑,以便为智能合约钱包创建新功能。

ERC-6900 的模块化方法将智能合约钱包的功能重新分类为具有三个不同类别(下面列出和定义)的模块化 SCW:

  • 验证功能:可以验证调用者的真实性和帐户的权限
  • 执行功能:允许执行帐户允许的自定义逻辑
  • hook:启用自定义逻辑的执行以及执行前/执行后函数的身份验证

然后,这些模块化功能被实现到外部合约中,并具有来自智能合约钱包的预期执行流程。

智能合约钱包背景下的模块化账户抽象是什么?

模块化账户抽象是 AA 的一个子组,AA 本身就是一个生态系统,它将模块化智能合约钱包(账户)引入到更广泛的 EVM 生态系统中。模块化智能账户不仅为用户提供了更好的可定制性,而且还简化了开发人员智能合约钱包功能的开发。为了更好地理解模块化帐户抽象,让我们更多地了解模块化 AA 背景下的“模块”是什么。

什么是模块以及它们为何重要?

模块通常被称为插件(如 EIP-6900 中所述)或方面(如 ERC-2535 中所述),是“乐高积木”,使功能能够扩展智能合约钱包的功能,使它们成为极其有价值的组件AA生态系统。您还可以将它们视为由用户授权的外部智能合约,为智能合约钱包实现扩展功能,同时将模块逻辑与核心智能合约隔离。

模块可以启用的各种功能包括:

  • 不同签名方案的使用
  • 令牌传输时触发特定操作
  • 每日支出限额
  • 允许支出而无需其他所有者同意的预算
  • 通过会话密钥重复交易
  • 在特定日期安排和/或自动交易
  • 社会恢复

这些只是模块功能的几个示例 - 创意无限!

智能合约来自Safe的朋友提供的信息丰富的图表,描述了模块与智能合约帐户的交互

最后,根据智能合约钱包的实现,构建和执行模块有不同的方法。此外,模块的结构取决于功能的目标帐户实现。例如,我们在Permissive的朋友是一个团队,正在积极构建智能合约钱包授权框架的模块,主要关注精细的访问控制,允许用户向各方授予智能帐户执行的特定操作的权限。

模块化实现需要需要某些功能的用户和构建这些功能的模块开发人员之间存在一定程度的信任,这将我们引向模块化 AA 生态系统的另一个方面——模块注册表。

模块注册表:模块开发的信任机制

现有的智能合约和智能账户的模块化实现依赖于用户和模块开发人员之间的信任假设。然而,最终目标是消除这种假设,并使非技术用户能够安全地将模块添加到他们的钱包中。为了实现这一点,模块注册表可以将用户和开发人员之间的信任假设合并到单个实体中。

尽管这表明采用集中式方法,但开发人员和社区的愿景远非如此——解决方案是无需许可的开放注册表。最终,这允许具有不同安全假设的不同各方参与,并且用户可以根据自己的偏好选择信任谁。

模块化 UI:模块化 AA 家族中被忽视但有价值的成员

根据以太坊基金会的Yoav Weiss的说法,模块化 AA 的一个重要但经常被忽视的方面是模块化 UI 或客户端设计。模块化 UI 至关重要,因为必须定制 UI 组件才能激活特定的链上功能,例如函数选择器、参数编码以及潜在的客户端或服务器端逻辑。创建一个安全的模块化 UI 来容纳外部模块开发人员对于模块化 AA 和智能合约钱包的成功增长和开发至关重要。

接下来,让我们进入一个非常重要的部分,了解更多关于 ERC-6900 对开发人员的价值。

ERC-6900和模块化AA为开发者提供什么价值?

通过模块化 AA 实现模块不仅使开发人员能够为智能合约构建更多可定制和可扩展的功能,而且还能够重用模块,而不必重写整个合约来添加功能。换句话说,通过模块的实现,ERC-6900进一步增强了开发者为智能合约钱包创建新功能的智能合约开发的灵活性。

此外,ERC-6900 通过概述模块化智能合约钱包(账户)的实现,支持模块开发人员和钱包开发人员之间的功能实现协作,无缝容纳符合既定标准的各种模块。

最后,通过采用ERC-6900,开发者不仅可以构建实现模块化、可升级的执行和验证逻辑的智能合约钱包,还可以增强模块开发的安全性和互操作性。要进一步阅读有关模块开发的内容,请查看Safe 的这份有用指南和 ZeroDev 的另一份指南。

ERC-6900的未来前景

由于ERC-6900仍然相对较新,并且未来可能会发生变化,因此很难看出最终标准会是什么样子。然而,已经提出了一些建议:

  • 更新所有函数调用,包括执行函数、验证函数和挂钩,以使用“call”而不是“delegatecall”,以确保存储和执行代码在每个模块的基础上隔离,从而消除了意外或恶意存储覆盖的风险模块,从根本上改变模块的信任模型
  • 将全局钩子和常规钩子合并为一个称为“钩子组”的统一概念,该概念可以灵活地将每个钩子类型作为可选字段包含在内,并为帐户提供适当的可执行性,以在执行函数和适用的钩子组之间建立连接
  • 引入预验证钩子,这是一种新型钩子,不仅在用户操作验证器或运行时验证器之前执行,而且还用于执行权限检查和其他与签名验证无关的预交易验证

尾注

总之,ERC-6900 的部署以及智能合约钱包中模块化账户抽象的集成为开发人员提供了令人兴奋的可能性。通过引入模块化智能合约钱包和账户插件,开发人员可以增强其 dApp 的可定制性和多功能性。通过实现模块化功能并遵守 ERC-6900 标准,开发人员可以创建可组合逻辑,引入签名方案和重复交易等功能,并改善模块和钱包开发人员之间的协作。

随着 ERC-6900 的不断发展,更新函数调用、钩子组和预验证钩子等提案有望增强智能合约钱包中模块化账户抽象的安全性和功能性。最终,通过采用 ERC-6900,开发人员可以开启新的创新领域,并创建更强大、更灵活的智能合约钱包。

要进一步阅读更广泛的 AA 生态系统,您可以查看这篇关于 ERC-4337 的误解和挑战的文章。另外,不要忘记随时了解2023 年值得关注的顶级 ERC-4337 项目,并继续探索以太坊生态系统——从AA SDK 的起点OpenBlocto开始!

参考

  • https://eips.ethereum.org/EIPS/eip-6900
  • https://mirror.xyz/konradkopp.eth/7Q3TrMFgx2VbZRKa7UEaisIMjimpMABiqGYo00T9egA
  • https://ethereum-magicians.org/t/erc-6900-modular-smart-contract-accounts-and-plugins/13885/20