What everyone needs to know
- Projects can configure funding cycles to create rules to follow over set amounts of time.
- A funding cycle's parameters can't be changed while it is in progress, but the project owner can propose reconfigurations to an upcoming cycle at any time.
- Funding cycles roll over automatically. If there is a reconfiguration in place and it has been approved by the current cycle's ballot, it will be used. Otherwise, a copy of the current funding cycle will be used with an updated
starttime and discounted
- The mechanics of each project can vary dramatically depending on how its funding cycles are configured over time. Become familiar with how projects work to get a better understanding of how these decisions can be made.
What you'll want to know if you're building
- A funding cycle is represented as a
- It is possible to create funding cycles that allow for total flexibility, total rigidity, or anything in between. Flexibility can be useful for rapid experimentation and evolution, whereas rigidity can be useful for dependability and trust. Anyone can configure a project's first funding cycle alongside creating the project with a call to
JBController3_1.launchProjectFor(...), and the project's owner can issue a reconfiguration to subsequent funding cycles with a call to
- If a project has a current funding cycle, it can be found by reading from
JBFundingCycleStore.currentOf(...). A project's upcoming funding cycle can be found by reading from
JBFundingCycleStore.queuedOf(...). The funding cycles that carry each original configuration can be found by reading from
JBController3_1.queueFundingCycleOf(...)can also be used to get a reference to the funding cycle's metadata alongside.
- A funding cycle's
ballotproperty is useful for setting rules by which any proposed reconfiguration to subsequent cycles must adhere. This is useful for community oriented projects as it can prevent a project owner from maliciously updating an upcoming cycle's configuration moments before it begins without the broader community's consent. A funding cycle's ballot status, which is a
JBBallotStateenumeration, can be found by reading from
- Look through the
JBFundingCycleStorecontract for a complete list of relevant read functions, write functions, and emitted events. Several properties of
JBSingleTokenPaymentTerminalStore3_1also store information relative to funding cycle configurations.