Funding cycle
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
start
time and discountedweight
.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 SNOWFundingCycle data structure.
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
SNOWController.launchProjectFor(...)
, and the project's owner can issue a reconfiguration to subsequent funding cycles with a call toSNOWController.reconfigureFundingCyclesOf(...)
.If a project has a current funding cycle, it can be found by reading from
SNOWFundingCycleStore.currentOf(...)
. A project's upcoming funding cycle can be found by reading fromSNOWFundingCycleStore.queuedOf(...)
. The funding cycles that carry each original configuration can be found by reading fromSNOWFundingCycleStore.get(...)
.SNOWController.currentFundingCycleOf(...)
andSNOWController.queueFundingCycleOf(...)
can also be used to get a reference to the funding cycle's metadata alongside.A funding cycle's
ballot
property 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 aSNOWBallotState
enumeration, can be found by reading fromSNOWFundingCycleStore.currentBallotStateOf(...)
.Look through the
SNOWFundingCycleStore
contract for a complete list of relevant read functions, write functions, and emitted events. Several properties ofSNOWController
andSNOWSingleTokenPaymentTerminalStore
also store information relative to funding cycle configurations.
Last updated