Launching a project
In order to understand what Juicebox can do, all you have to do is fully understand how one transaction works: JBController.launchProjectFor(...)
, which creates a project, queues its first rulesets, and specifies where it can begin receiving and managing funds from.
function launchProjectFor(
address owner,
string calldata projectUri,
JBRulesetConfig[] calldata rulesetConfigurations,
JBTerminalConfig[] calldata terminalConfigurations,
string calldata memo
)
external returns (uint256 projectId) { ... }
For projects deploying omnichain, the JBOmnichainDeployer.launchProjectFor(...)
transaction is a wrapper that also takes in information about deploying suckers for each chain pair.
function launchProjectFor(
address owner,
string calldata projectUri,
JBRulesetConfig[] calldata rulesetConfigurations,
JBTerminalConfig[] calldata terminalConfigurations,
string calldata memo,
REVSuckerDeploymentConfig calldata suckerDeploymentConfiguration,
IJBController controller
)
external
returns (uint256 projectId, address[] memory suckers) { ... }