JBController3_0_1
Stitches together funding cycles and project tokens, making sure all activity is accounted for and correct.
Mainnet: 0xA139D37275d1fF7275e6F33821898934Bc8Cb7B6
Goerli: 0x696f8175E114C5C89248Fb254185Df3Df4cD03f3
Inherits: JBOperatable
, ERC165
, IJBController
, IJBController3_0_1
, IJBMigratable
This Controller manages a project's reserved tokens explicitly instead of through a passive tracker property.
It is backwards compatible with the original IJBController
, and exposes convenience view methods as part of IJBController3_1
for clearer queries.
Adheres to:
IJBController3_0_1
: 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.
Inherits from:
JBOperatable
: Several functions in this contract can only be accessed by a project owner, or an address that has been preconfifigured to be an operator of the project.ERC165
: Introspection on interface adherance.
State Variables
_packedDistributionLimitDataOf
Data regarding the distribution limit of a project during a configuration.
bits 0-231: The amount of token that a project can distribute per funding cycle.
bits 232-255: The currency of amount that a project can distribute.
- _projectId The ID of the project to get the packed distribution limit data of.
- _configuration The configuration during which the packed distribution limit data applies.
- _terminal The terminal from which distributions are being limited.
- _token The token for which distributions are being limited.
mapping(uint256 => mapping(uint256 => mapping(IJBPaymentTerminal => mapping(address => uint256)))) internal
_packedDistributionLimitDataOf;
_packedOverflowAllowanceDataOf
Data regarding the overflow allowance of a project during a configuration.
bits 0-231: The amount of overflow that a project is allowed to tap into on-demand throughout the configuration.
bits 232-255: The currency of the amount of overflow that a project is allowed to tap.
- _projectId The ID of the project to get the packed overflow allowance data of.
- _configuration The configuration during which the packed overflow allowance data applies.
- _terminal The terminal managing the overflow.
- _token The token for which overflow is being allowed.
mapping(uint256 => mapping(uint256 => mapping(IJBPaymentTerminal => mapping(address => uint256)))) internal
_packedOverflowAllowanceDataOf;
_reservedTokenBalanceOf
The current undistributed reserved token balance of.
- _projectId The ID of the project to get a reserved token balance of.
mapping(uint256 => uint256) internal _reservedTokenBalanceOf;
projects
Mints ERC-721's that represent project ownership.
IJBProjects public immutable override projects;
fundingCycleStore
The contract storing all funding cycle configurations.
IJBFundingCycleStore public immutable override fundingCycleStore;
tokenStore
The contract that manages token minting and burning.
IJBTokenStore public immutable override tokenStore;