Skip to main content

ERC6900 alchemy

Modular Account is an ERC-4337 smart account that supports customizable features with ERC-6900 plugins. It is fully production-ready with multiple security audits, two prebuilt plugins in MultiOwnerPlugin and SessionKeyPlugin, and the capability to support any custom account behavior you need.

from alchemy erc-6900 »

src/factory/MultiOwnerModularAccountFactory.sol

IPluginExecutor和IStandardExecutor

这两个智能合约接口IPluginExecutorIStandardExecutor虽然看似类似,但它们的设计目的和使用场景有所不同。下面是对每个接口的主要功能和它们之间差异的描述:

IPluginExecutor

  • 用途IPluginExecutor接口是为插件之间的交互而设计的。它允许一个插件通过账户上安装的执行函数调用另一个插件。
  • 函数
    • executeFromPlugin: 允许从一个插件执行调用到另一个插件。这通常用于插件之间的内部交互。
    • executeFromPluginExternal: 允许从一个插件执行调用到非插件地址。如果目标地址是一个插件,调用应该回滚。
  • 权限控制:这两个函数都强调了权限控制的重要性,即只有被授权的插件才能通过这些函数进行调用。

IStandardExecutor

  • 用途IStandardExecutor接口是为标准的执行操作而设计的。它提供了执行单个调用和批量调用的方法。
  • 函数
    • execute: 执行单个调用到任意地址。如果目标是插件,调用应该回滚。
    • executeBatch: 执行一批调用。如果任何单个调用回滚,整个批量操作必须回滚。
  • 结构executeBatch函数使用了一个Call结构体数组,每个Call结构体包含目标地址、发送的值和调用数据。这使得可以一次性执行多个调用,而且要么全部成功,要么全部失败。

主要区别

  • 插件交互IPluginExecutor专门用于插件之间的交互,而IStandardExecutor提供了更通用的执行操作,不特定于插件。
  • 批量执行IStandardExecutor提供了一个执行批量调用的方法,而IPluginExecutor没有这样的功能。
  • 目标限制:两者都要求如果目标是插件,则调用应该回滚,但IPluginExecutorexecuteFromPluginExternal函数特别用于插件向非插件地址发起调用。

总结来说,IPluginExecutor专注于插件的内部互操作性,而IStandardExecutor提供了执行标准调用的灵活性,包括处理一组调用的能力。在设计智能合约系统时,可以根据需要选择实现这些接口中的一个或两个,以提供所需的功能和权限控制级别。