Launching a project
In order to understand what Juicebox can do, all you have to do is fully understand how one transaction works: JBController4_1.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 JBOmnichainDeployer4_1.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) { ... }
Here's a complete example of how a project launch can look:
-
For
projectUri
send a string that points to a JSON file on IPFS:Example:
"ipfs://QmbH96jj8RTJgC9526RdsFs5dPvcsRfiRuD9797JXzcvbw"