Skip to content

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:

  1. Deploy your Signals board via SignalsFactory
  2. Have reward tokens ready (typically DAO governance token)
  3. 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 supply
Max Per Initiative:
Typical 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:

  1. Their locked tokens back
  2. Time-weighted incentive rewards (auto-claimed)
  3. Proportional bounty rewards (claimed separately)

See Bounties vs. Incentives for a detailed comparison.

Validation & Common Issues

IssueCauseSolution
Cannot set poolBoard already openedMust set before opensAt
Cannot enable incentivesBoard created with enabled: falseCannot add to existing board
Pool not approvedForgot to call approveBoard()Approve the board in the pool
Insufficient balanceNot enough tokensApprove 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.