跳到主要内容

Surplus

What everyone needs to know

  • A project can set payout limits from its treasury on a per-ruleset basis using JBController.launchProjectFor(...), JBController.launchRulesetsFor(...), and JBController.queueRulesetsOf(...). These limits are stored in JBFundAccessLimits.payoutLimitOf(...). Any funds in the project's Juicebox treasury that exceed its specified distribution limit are considered surplus.
  • Surplus serves as a project's runway since future rulesets can tap into it within the bounds of its preconfigured distribution limits. Surplus can also serve as a refund or rebate mechanism, where everyone's net contribution price is pushed towards zero as volume outpaces what the project limits are.
  • By default, surplus also serves as a means for allowing community members to cash out with a portion of the treasury's funds in hand. Any funds in surplus are reclaimable by the project's community by cashing out community tokens along a bonding curve defined by the project's current cash out tax rate. Projects can override or extend this functionality using a custom data hook.
  • Projects can manage how much money is in surplus (and therefore how much each member can exit with) either by adjusting its payout limits or by using a custom cash out extension.
  • A project can set surplus allowances from its treasury on a per-ruleset basis within the JBController.launchProjectFor(...), JBController.launchRulesetsFor(...), and JBController.queueRulesetsOf(...) transactions. These allowances are stored in JBFundAccessLimits.surplusAllowanceOf(...). A project's owner can distribute the project's funds from its surplus on-demand up until the preconfigured allowance. Surplus allowances do not reset each ruleset, they last until a new ruleset takes effect.