跳至内容
0%

什么是模块化账户抽象?

Logan Ross headshot

作者 Logan Ross

发布于 2023年7月19日1 分钟阅读

Modular AA 是一场旨在推广模块化智能账户的运动。其目标是让账户对用户来说可定制,并让开发者能够构建具有丰富上下文且自成一体的账户功能。

模块化智能合约账户(SCA)让开发者能够为账户创建实用的新扩展功能。举例如下:

  1. 社交恢复(Social Recovery) - 允许受信任的设备或朋友在你失去账户访问权限时协助你恢复账户
  2. 消费限额(Spending Limits) - 允许应用代表你消费代币,但不超过指定限额
  3. Passkey 支持 - 使用生物识别(如 FaceID)登录

通过将模块化标准化,可以大幅降低交易对手风险,从而带来简单且安全的 web3 用户体验。

ERC-4337 标准规定了一套基础设施组件和编码标准,实现该标准后,用户就能以智能合约作为其主要账户类型,而不是私钥。此前,主要账户类型是 EOA(外部账户),与 SCA 不同,EOA 不具备自定义的验证和执行逻辑。

本文将概述模块化账户抽象(Modular Account Abstraction):它能实现什么,以及现有的标准和实现方式。

通过将模块化智能账户钱包嵌入你的 web3 应用,让用户无需助记词或 gas 即可上手,并借助我们纵向整合的 AA 基础设施进行扩展。

模块化智能合约账户有哪些不同类型?

智能合约账户本质上是智能合约:它们可升级、可扩展,也可被继承。根据 SCA 的具体实现方式,其可能允许或不允许添加插件/模块。本文将探讨模块化 AA 的两种不同概念:ERC-6900 和 SAFE Modules。

1. ERC-6900:模块化智能合约账户与插件

ERC-6900的目标是定义标准 Account 与 Module 实现之间的一套接口。该提案希望在切换账户实现时,改善开发者体验、Module 互操作性以及数据可移植性。

该标准的灵感来自 ERC-2535,但它并不要求开发者遵循 Diamond 模式。

什么是用于模块化智能合约账户的 ERC-6900 插件?

ERC-6900 定义了哪些类型的插件?

根据该标准,插件可分为三种类型:

  1. 验证方案(Validation Schemes) - 定义模块化智能合约账户(MSCA)在何种情况下会批准代表其执行的交易
  2. 执行逻辑(Execution Logic) - 在执行期间执行的任意逻辑
  3. 钩子(Hooks) - Hooks 可以在用户操作(user operation)执行前后触发要执行的任意逻辑
ERC-6900 模块图
ERC-6900 模块图

该标准还定义了:

  1. 如何为 MSCA 实现 Validation、Execution 和 Hook 插件。
  2. 符合标准的账户实现应如何添加、移除、更新和查看插件。
  3. FunctionReference 等辅助类型。
交易通过入口点流向 ERC-6900 SCA 的流程图
交易通过入口点流向 ERC-6900 SCA 的流程图

ERC-6900 定义了哪些类型的接口?

ERC-6900 规范定义了三个主要接口:IPluginUpdate、IPluginLoupe 和 IStandardExecutor。

1. IPluginUpdate

IPluginUpdate 接口定义了:

  • 插件操作 ADDREMOVEREPLACE
  • Validator 类型和 Hook 类型
  • 用户定义的 struct,用于更新各类插件
  • 标准化的 updatePlugins 函数(在更新插件时调用)以及在更新后触发的 ExecutionPluginUpdate 事件
2. IPluginLoupe

IPluginLoupe 的灵感来自 ERC-2535,ERC-6900 定义了 dapp 或其他合约如何读取 MSCA 所支持的插件。

3. IStandardExecutor

IStandardExecutor 是模块化智能合约账户应实现的接口,以支持开放式执行。

2. SAFE modules

所有基于 SAFE 的账户都支持 SAFE Modules。为了维持高安全标准,SAFE 团队遵循关注点分离模式,实现了不同的模块类型。

  • Modules - 白名单地址,可以代表 Safe 智能账户执行交易。
  • Guard - 一种合约,可以设置用于对将要执行的交易进行额外检查。
  • Fallback Handler - 一种合约,可以设置用于处理任意传入(读取)调用。

更多信息可参见 Safe 的模块化 SCA 架构文章

什么是 SAFE SCA modules?

SAFE 的 Modules 是独立的智能合约,拥有权限在用户的 SAFE 智能合约账户上执行交易。Modules 可以通过 execTransactionFromModule 函数在 SAFE 账户上执行任意交易。由于 SAFE 团队决定了 SAFE 账户的具体实现方式,插件开发者必须遵守相应的规则和指南。SAFE modules 仅_与 SAFE 账户兼容_。

模块开发者与用户之间存在重大的信任假设,因此经过实战检验的模块更有可能持续被采用。

SAFE Account 模块图
SAFE Account 模块图

什么是 SAFE SCA guards?

Guard 是可为 SAFE 账户设置的智能合约,用于对传入交易执行额外的安全检查。在交易执行前,会先调用 Guard 并传入所有交易参数;如果 Guard 没有回滚(revert),交易才会继续执行。

执行后会再次调用 Guard,以进行状态变更检查或执行任意逻辑。

Guard 也可以被视为一种 hook,因为它适用于交易前后的状态检查。

Safe 智能合约账户 Guard 在执行前后检查交易的流程图
SAFE SCA Guard 如何保护账户

什么是 SAFE SCA fallback handler?

Fallback Handler 会执行所有发送给 SAFE 账户、且可由其处理的调用。这有助于符合行业通用标准,例如合约签名(EIP-1271)。据 SAFE 所述,“插件完全独立于核心 SAFE 合约,并维护各自的存储”。

SAFE SCA Fallback Handler 工作原理图
SAFE SCA Fallback Handler 工作原理图

结论

正如 ERC-6900 所描述、Safe Modules 所设计的那样,模块化账户抽象旨在通过插件扩展智能合约账户的能力——这些插件可由开发者构建,并由智能合约钱包用户安全安装。

如需了解更多信息,请浏览我们的 ERC-4337 教育中心,或了解我们开箱即用的 Embedded Accounts,立即开始构建。

Background gradient

构建区块链应用

Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。