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
from alchemy erc-6900 »MultiOwnerPluginandSessionKeyPlugin, and the capability to support any custom account behavior you need.
src/factory/MultiOwnerModularAccountFactory.sol
IPluginExecutor和IStandardExecutor
这两个智能合约接口IPluginExecutor和IStandardExecutor虽然看似类似,但它们的设计目的和使用场景有所不同。下面是对每个接口的主要功能和它们之间差异的描述:
IPluginExecutor
- 用途:
IPluginExecutor接口是为插件之间的交互而设计的。它允许一个插件通过账户上安装的执行函数调用另一个插件。 - 函数:
executeFromPlugin: 允许从一个插件执行调用到另一个插件。这通常用于插件之间的内部交互。executeFromPluginExternal: 允许从一个插件执行调用到非插件地址。如果目标地址是一个插件,调用应该回滚。
- 权限控制:这两个函数都强调了权限控制的重要性,即只有被授权的插件才能通过这些函数进行调用。
IStandardExecutor
- 用途:
IStandardExecutor接口是为标准的执行操作而设计的。它提供了执行单个调用和批量调用的方法。 - 函数:
execute: 执行单个调用到任意地址。如果目标是插件,调用应该回滚。executeBatch: 执行一批调用。如果任何单个调用回滚,整个批量操作必须回滚。
- 结构:
executeBatch函数使用了一个Call结构体数组,每个Call结构体包含目标地址、发送的值和调用数据。这使得可以一次性执行多个调用,而且要么全部成功,要么全部失败。
主要区别
- 插件交互:
IPluginExecutor专门用于插件之间的交互,而IStandardExecutor提供了更通用的执行操作,不特定于插件。 - 批量执行:
IStandardExecutor提供了一个执行批量调用的方法,而IPluginExecutor没有这样的功能。 - 目标限制:两者都要求如果目标是插件,则调用应该回滚,但
IPluginExecutor的executeFromPluginExternal函数特别用于插件向非插件地址发起调用。
总结来说,IPluginExecutor专注于插件的内部互操作性,而IStandardExecutor提供了执行标准调用的灵活性,包括处理一组调用的能力。在设计智能合约系统时,可以根据需要选择实现这些接口中的一个或两个,以提供所需的功能和权限控制级别。