reconfigureFundingCyclesOf
Contract: JBController
Interface: IJBController
- Step by step
 - Code
 - Events
 - Bug bounty
 
Proposes a configuration of a subsequent funding cycle that will take effect once the current one expires if it is approved by the current funding cycle's ballot.
Only a project's owner or a designated operator can configure its funding cycles.
Definition
function reconfigureFundingCyclesOf(
  uint256 _projectId,
  JBFundingCycleData calldata _data,
  JBFundingCycleMetadata calldata _metadata,
  uint256 _mustStartAtOrAfter,
  JBGroupedSplits[] memory _groupedSplits,
  JBFundAccessConstraints[] memory _fundAccessConstraints,
  string calldata _memo
)
  external
  virtual
  override
  requirePermission(projects.ownerOf(_projectId), _projectId, JBOperations.RECONFIGURE)
  returns (uint256 configuration) { ... }
- Arguments:
_projectIdis the ID of the project whose funding cycles are being reconfigured._datais aJBFundingCycleDatadata structure that defines the funding cycle. These properties will remain fixed for the duration of the funding cycle._metadatais aJBFundingCycleMetadatadata structure specifying the controller specific params that a funding cycle can have. These properties will remain fixed for the duration of the funding cycle._mustStartAtOrAfteris the time before which the configured funding cycle cannot start._groupedSplitsis an array ofJBGroupedSplitsdata structures containing splits to set for any number of groups. The core protocol makes use of groups defined inJBSplitsGroups._fundAccessConstraintsis an array ofJBFundAccessConstraintsdata structures containing amounts that a project can use from its treasury for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the accompanying terminal. The_distributionLimitand_overflowAllowanceparameters must fit in auint232. The_distributionLimitapplies for each funding cycle, and the_overflowAllowanceapplies for the entirety of the configuration.
 - Through the 
requirePermissionmodifier, the function is only accessible by the project's owner, or from an operator that has been given theJBOperations.RECONFIGUREpermission by the project owner for the provided_projectId. - The function can be overriden by inheriting contracts.
 - The function overrides a function definition from the 
IJBControllerinterface. - The function returns the configuration of the funding cycle that was successfully updated.
 
Body
- 
Configure the project's funding cycle, fund access constraints, and splits. Get a reference to the resulting funding cycle's configuration.
// Configure the next funding cycle.
configuration = _configure(
_projectId,
_data,
_metadata,
_mustStartAtOrAfter,
_groupedSplits,
_fundAccessConstraints
);Internal references:
 - 
Emit a
ReconfigureFundingCyclesevent with the relevant parameters.emit ReconfigureFundingCycles(configuration, _projectId, _memo, msg.sender);Event references:
 
/**
  @notice
  Proposes a configuration of a subsequent funding cycle that will take effect once the current one expires if it is approved by the current funding cycle's ballot.
  @dev
  Only a project's owner or a designated operator can configure its funding cycles.
  @param _projectId The ID of the project whose funding cycles are being reconfigured.
  @param _data Data that defines the funding cycle. These properties will remain fixed for the duration of the funding cycle.
  @param _metadata Metadata specifying the controller specific params that a funding cycle can have. These properties will remain fixed for the duration of the funding cycle.
  @param _mustStartAtOrAfter The time before which the configured funding cycle cannot start.
  @param _groupedSplits An array of splits to set for any number of groups.
  @param _fundAccessConstraints An array containing amounts that a project can use from its treasury for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the accompanying terminal. The `_distributionLimit` and `_overflowAllowance` parameters must fit in a `uint232`.
  @param _memo A memo to pass along to the emitted event.
  @return configuration The configuration of the funding cycle that was successfully reconfigured.
*/
function reconfigureFundingCyclesOf(
  uint256 _projectId,
  JBFundingCycleData calldata _data,
  JBFundingCycleMetadata calldata _metadata,
  uint256 _mustStartAtOrAfter,
  JBGroupedSplits[] memory _groupedSplits,
  JBFundAccessConstraints[] memory _fundAccessConstraints,
  string calldata _memo
)
  external
  virtual
  override
  requirePermission(projects.ownerOf(_projectId), _projectId, JBOperations.RECONFIGURE)
  returns (uint256 configuration)
{
  // Configure the next funding cycle.
  configuration = _configure(
    _projectId,
    _data,
    _metadata,
    _mustStartAtOrAfter,
    _groupedSplits,
    _fundAccessConstraints
  );
  emit ReconfigureFundingCycles(configuration, _projectId, _memo, msg.sender);
}
| Name | Data | 
|---|---|
ReconfigureFundingCycles | 
  | 
| Category | Description | Reward | 
|---|---|---|
| Optimization | Help make this operation more efficient. | 0.5ETH | 
| Low severity | Identify a vulnerability in this operation that could lead to an inconvenience for a user of the protocol or for a protocol developer. | 1ETH | 
| High severity | Identify a vulnerability in this operation that could lead to data corruption or loss of funds. | 5+ETH |