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 discounted weight.

  • 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 toSNOWController.launchProjectFor(...), and the project's owner can issue a reconfiguration to subsequent funding cycles with a call to SNOWController.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 from SNOWFundingCycleStore.queuedOf(...). The funding cycles that carry each original configuration can be found by reading from SNOWFundingCycleStore.get(...). SNOWController.currentFundingCycleOf(...) and SNOWController.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 a SNOWBallotState enumeration, can be found by reading from SNOWFundingCycleStore.currentBallotStateOf(...).

  • Look through theSNOWFundingCycleStore contract for a complete list of relevant read functions, write functions, and emitted events. Several properties ofSNOWController and SNOWSingleTokenPaymentTerminalStore also store information relative to funding cycle configurations.

Last updated

SnowconeDAO