JBController
Stitches together funding cycles and project tokens, making sure all activity is accounted for and correct.
Code
https://github.com/jbx-protocol/juice-contracts-v2/blob/main/contracts/JBController.sol
Addresses
Ethereum mainnet: 0x4e3ef8AFCC2B52E4e704f4c8d9B7E7948F651351
Ethereum rinkeby: 0xd96ecf0E07eB197587Ad4A897933f78A00B21c9a
Interfaces
| Name | Description | 
|---|---|
IJBController | General interface for the generic controller methods in this contract that interacts with funding cycles and tokens according to the protocol's rules. | 
IJBMigratable | Allows migrating to this contract, with a hook called to prepare for the migration. | 
Inheritance
| Contract | Description | 
|---|---|
JBOperatable | Includes convenience functionality for checking a message sender's permissions before executing certain transactions. | 
ERC165 | Introspection on interface adherance. | 
Constructor
/**
  @param _operatorStore A contract storing operator assignments.
  @param _projects A contract which mints ERC-721's that represent project ownership and transfers.
  @param _directory A contract storing directories of terminals and controllers for each project.
  @param _fundingCycleStore A contract storing all funding cycle configurations.
  @param _tokenStore A contract that manages token minting and burning.
  @param _splitsStore A contract that stores splits for each project.
*/
constructor(
  IJBOperatorStore _operatorStore,
  IJBProjects _projects,
  IJBDirectory _directory,
  IJBFundingCycleStore _fundingCycleStore,
  IJBTokenStore _tokenStore,
  IJBSplitsStore _splitsStore
) JBOperatable(_operatorStore) {
  projects = _projects;
  directory = _directory;
  fundingCycleStore = _fundingCycleStore;
  tokenStore = _tokenStore;
  splitsStore = _splitsStore;
}
_operatorStoreis anIJBOperatorStorecontract storing operator assignments._projectsis anIJBProjectscontract which mints ERC-721's that represent project ownership and transfers._directoryis anIJBDirectorycontract storing directories of terminals and controllers for each project._fundingCycleStoreis anIJBFundingCycleStorecontract storing all funding cycle configurations._tokenStoreis anIJBTokenStorecontract that manages token minting and burning._splitsStoreis anIJBSplitsStorecontract that stores splits for each project.
Events
| Name | Data | 
|---|---|
LaunchProject | 
  | 
LaunchFundingCycles | 
  | 
ReconfigureFundingCycles | 
  | 
SetFundAccessConstraints | 
  | 
DistributeReservedTokens | 
  | 
DistributeToReservedTokenSplit | 
  | 
MintTokens | 
  | 
BurnTokens | 
  | 
PrepMigration | 
  | 
Migrate | 
  | 
Properties
| Function | Definition | 
|---|---|
projects | Traits 
 Returns  | 
fundingCycleStore | Traits 
 Returns  | 
tokenStore | Traits 
 Returns  | 
splitsStore | Traits 
 Returns  | 
directory | Traits 
 Returns  | 
Read
| Function | Definition | 
|---|---|
distributionLimitOf | Params 
 Returns 
  | 
overflowAllowanceOf | Params 
 Returns 
  | 
reservedTokenBalanceOf | Params 
 Returns 
  | 
totalOutstandingTokensOf | Params 
 Returns 
  | 
getFundingCycleOf | Params 
 Returns 
  | 
latestConfiguredFundingCycleOf | Params 
 Returns 
  | 
currentFundingCycleOf | Params 
 Returns 
  | 
queuedFundingCycleOf | Params 
 Returns 
  | 
supportsInterface | Params 
 Returns 
  | 
Write
| Function | Definition | 
|---|---|
launchProjectFor | Traits 
 Params 
 Returns 
  | 
launchFundingCyclesFor | Traits 
 Params 
 Returns 
  | 
reconfigureFundingCyclesOf | Traits 
 Params 
 Returns 
  | 
issueTokenFor | Traits 
 Params 
 Returns 
  | 
changeTokenOf | Traits 
 Params 
  | 
mintTokensOf | Traits Params 
 Returns 
  | 
burnTokensOf | Traits Params 
  | 
distributeReservedTokensOf | Traits 
 Params 
 Returns 
  | 
prepForMigrationOf | Traits 
 Params 
  | 
migrate | Traits 
 Params 
  |