OrchestratorFactory_v1.sol
Inherits: IOrchestratorFactory_v1, ERC2771ContextUpgradeable, Ownable2StepUpgradeable, ERC165Upgradeable
Author: Inverter Network
OrchestratorFactory_v1 facilitates the deployment of {Orchestrator_v1}s and their associated modules for the Inverter Network, ensuring seamless creation and configuration of various components in a single transaction.
Utilizes {ERC2771ContextUpgradeable} for meta-transaction capabilities and {ERC165Upgradeable} for interface detection. {Orchestrator_v1}s are deployed through EIP-1167 minimal proxies for efficiency. Integrates with the module factory to instantiate necessary modules with custom configurations, supporting complex setup with interdependencies among modules.
State Variables
beacon
Returns the {IOrchestrator_v1} {IInverterBeacon_v1} address.
IInverterBeacon_v1 public override beacon;
moduleFactory
Returns the {IModuleFactory_v1} implementation address.
address public override moduleFactory;
_orchestrators
Maps the id
to the {Orchestrator_v1}s.
mapping(uint => address) private _orchestrators;
_orchestratorIdCounter
The counter of the current {Orchestrator_v1} id
.
Starts counting from 1.
uint private _orchestratorIdCounter;
_deploymentNonces
Maps a users address to a nonce. Used for the create2-based deployment.
mapping(address => uint) private _deploymentNonces;
__gap
Storage gap for future upgrades.
uint[50] private __gap;
Functions
supportsInterface
See {IERC165-supportsInterface}.
function supportsInterface(bytes4 interfaceId)
public
view
virtual
override(ERC165Upgradeable)
returns (bool);
validOrchestratorId
Modifier to guarantee that the given id is valid.
modifier validOrchestratorId(uint id);
constructor
constructor(address _trustedForwarder)
ERC2771ContextUpgradeable(_trustedForwarder);
init
The factories initializer function.
function init(
address governor_,
IInverterBeacon_v1 beacon_,
address moduleFactory_
) external initializer;
Parameters
beacon_
IInverterBeacon_v1
The address of the {IInverterBeacon_v1} containing the {Orchestrator_v1} implementation.
createOrchestrator
Creates a new {Orchestrator_v1}.
function createOrchestrator(
WorkflowConfig memory workflowConfig,
ModuleConfig memory fundingManagerConfig,
ModuleConfig memory authorizerConfig,
ModuleConfig memory paymentProcessorConfig,
ModuleConfig[] memory moduleConfigs
) external returns (IOrchestrator_v1);
Parameters
workflowConfig
WorkflowConfig
The workflow's config data.
fundingManagerConfig
ModuleConfig
The config data for the orchestrator's {IFundingManager_v1} instance.
paymentProcessorConfig
ModuleConfig
The config data for the orchestrator's {IPaymentProcessor_v1} instance.
moduleConfigs
ModuleConfig[]
Variable length set of optional module's config data.
Returns
<none>
IOrchestrator_v1
CreatedOrchestrator Returns the created orchestrator instance
getOrchestratorByID
Returns the {IOrchestrator_v1} address that corresponds to the given id.
function getOrchestratorByID(uint id)
external
view
validOrchestratorId(id)
returns (address);
Parameters
id
uint256
The requested orchestrator's id.
Returns
getOrchestratorIDCounter
Returns the counter of the current {Orchestrator_v1} id.
function getOrchestratorIDCounter() external view returns (uint);
Returns
_createModuleProxies
Creates the modules based on their `moduleConfigs`.
function _createModuleProxies(
ModuleConfig[] memory moduleConfigs,
address orchestratorProxy,
WorkflowConfig memory workflowConfig
) internal returns (address[] memory);
Parameters
moduleConfigs
ModuleConfig[]
The config data of the modules that will be created with this function call.
orchestratorProxy
address
The address of the {Orchestrator_v1} Proxy that will be linked to the modules.
workflowConfig
WorkflowConfig
The workflow's config data.
_initModules
Internal function to initialize the modules.
function _initModules(
address[] memory modules,
ModuleConfig[] memory moduleConfigs,
address proxy
) internal;
Parameters
modules
address[]
The modules to initialize.
moduleConfigs
ModuleConfig[]
The config data of the modules that will be initialized.
_createSalt
Internal function to generate salt for the create2-based deployment flow. This salt is the hash of (msgSender, nonce), where the nonce is an increasing number for each user.
function _createSalt() internal returns (bytes32);
_msgSender
Needs to be overridden, because they are imported via the Ownable2Step as well.
function _msgSender()
internal
view
virtual
override(ERC2771ContextUpgradeable, ContextUpgradeable)
returns (address sender);
_msgData
Needs to be overridden, because they are imported via the Ownable2Step as well.
function _msgData()
internal
view
virtual
override(ERC2771ContextUpgradeable, ContextUpgradeable)
returns (bytes calldata);
_contextSuffixLength
function _contextSuffixLength()
internal
view
virtual
override(ERC2771ContextUpgradeable, ContextUpgradeable)
returns (uint);
Last updated