Adding Incentives to a Board
Incentives are board-wide reward pools that incentivize early support across all initiatives. They use time-weighted distribution to reward supporters who identify and back promising proposals early.
Overview
The incentives system:
- Rewards early supporters with more tokens
- Funded by DAO/board owner upfront
- Distributed across all accepted initiatives
- Auto-claimed when supporters redeem locks
- Non-blocking (doesn't prevent acceptance if depleted)
Prerequisites
Before adding incentives:
- Deploy your Signals board via SignalsFactory
- Have reward tokens ready (typically DAO governance token)
- Plan to link incentives before the board opens - you cannot set the pool after
opensAt
Setup Workflow
Step 1: Deploy IncentivesPool Contract
Deploy a new IncentivesPool contract. This contract manages:
- Reward token storage
- Distribution calculations
- Board approvals
- Reward claiming
Step 2: Fund the Pool
Fund the pool with your reward token using addFundsToPool:
- Reward Token: Typically your DAO's governance token
- Total Pool Amount: Total tokens available for rewards (e.g., 1M tokens)
- Max Per Initiative: Set later when approving boards
The total pool amount is transferred immediately to the pool and shared across all accepted initiatives on the board.
Step 3: Approve the Board
The pool must explicitly approve which boards can use it. This is a security feature that prevents unauthorized boards from accessing the pool.
Step 4: Link Pool to Board
Finally, connect the pool to your board using setIncentivesPool().
Critical timing: This must be called before the opensAt timestamp. Once the board opens, you cannot change the incentives pool.
For detailed code examples and function signatures, see the Incentives Configuration Reference.
Incentive Configuration
Decay Curve: How Early Support is Rewarded
The incentive curve determines how early supporter bonuses are calculated. Parameters are interpolated across time buckets from opensAt to acceptance.
Linear Decay (Type 0)
Only linear curves are supported. With a linear curve:
- Early supporters (near board open) receive higher multipliers
- Multipliers decrease over time until acceptance
Choosing Decay Rate
Provide at least two values in incentiveParametersWAD (start and end). More values allow shaping the curve with intermediate points.
Pool Sizing Guidelines
Total Pool Amount:Conservative: 1-2% of circulating supply
Moderate: 2-5% of circulating supply
Aggressive: 5-10% of circulating supplyTypical formula: totalPool / (expected initiatives * 2)This allows approximately 50 initiatives with buffer for multiple acceptances.
How Incentives Are Distributed
Reward Calculation and Claiming
Signals records incentive credits when locks are created. Rewards are calculated and paid when supporters redeem after acceptance (and any release timelock) via the IncentivesPool. Acceptance itself does not call the pool, and acceptance remains non-blocking even if the pool is depleted.
Time-Weighted Calculation
Each supporter's reward is based on:
- Lock amount: How many tokens they locked
- Lock timing: When they locked relative to board opening and acceptance
- Decay curve: The configured decay rate
Early supporters get higher weight for the same lock amount, resulting in more rewards.
See the Incentives Configuration Reference for detailed formulas and examples.
Automatic Claiming
Rewards are automatically claimed when supporters redeem their lock positions. Benefits:
- No separate claim transaction needed
- Gas efficient
- Automatic for all supporters
- Idempotent (safe to call multiple times)
Operational Notes
- Acceptance is non-blocking even if the pool is depleted; later initiatives may receive reduced rewards.
- Pool balances should be monitored to plan for new seasons.
- Pools cannot be refilled mid-season; deploy a new board for a fresh budget.
Combining with Bounties
Incentives and bounties work together! Your board can have:
- Incentives: Board-wide, time-weighted DAO token rewards
- Bounties: Initiative-specific, externally funded multi-token rewards
When an initiative with both is accepted, supporters receive:
- Their locked tokens back
- Time-weighted incentive rewards (auto-claimed)
- Proportional bounty rewards (claimed separately)
See Bounties vs. Incentives for a detailed comparison.
Validation & Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Cannot set pool | Board already opened | Must set before opensAt |
| Cannot enable incentives | Board created with enabled: false | Cannot add to existing board |
| Pool not approved | Forgot to call approveBoard() | Approve the board in the pool |
| Insufficient balance | Not enough tokens | Approve more tokens before initialization |
Advanced: Multiple Boards, One Pool
A single IncentivesPool can serve multiple boards, allowing you to share a budget across multiple governance rounds or seasons. Each board must be individually approved by the pool.
Use case: Multi-season governance with shared budget.
For complete technical implementation details including function signatures, data structures, formulas, query functions, events, errors, and code examples, see the Incentives Configuration Reference.
