Define a Rewards Manager Configuration

A Rewards Manager config consists of an array of stake pool and reward pool configs: StakePoolConfig[] and RewardPoolConfig[]. These configs are passed to CozyManager.createRewardsManager when deploying a new Rewards Manager.

Stake Pool Config

struct StakePoolConfig {
  // The underlying asset of the stake pool.
  IERC20 asset;
  // The rewards weight of the stake pool.
  uint16 rewardsWeight;
}

Stake Pool Assets

Each stake pool must have a unique underlying asset. When constructing StakePoolConfig[], the structs must be sorted by the address of the underlying stake asset. Passing in an array where the structs are unsorted or contain a duplicate asset will revert.

Stake Pool Rewards Weights

The rewards weight determines the share of the total rewards that are distributed to a given stake pool. For example, a rewards weight of 90% implies stakers in that pool earn 90% of all dripped reward assets.

The rewardsWeight parameter is represented as zoc (e.g. 5000 is 50%). The sum of rewards weights across all stake pools must be a zoc (or 100%).

Allowed Stake Pools

The allowedStakePools constant defines a limit on the number of stake pools in a single Rewards Manager.

Reward Pool Config

struct RewardPoolConfig {
  // The underlying asset of the reward pool.
  IERC20 asset;
  // The drip model for the reward pool.
  IDripModel dripModel;
}

Reward Pool Assets

There are no restrictions on the underlying assets of reward pools.

Reward Pool Drip Models

The drip model for a reward pool defines the rate at which assets deposited into a reward pool accrue (i.e. "drip") to stakers. Drip-decay models must conform to the IDripModel interface.

For more details on the mechanics of drip models, see here.

Allowed Reward Pools

The allowedRewardPools constant defines a limit on the number of reward pools in a single Rewards Manager.

Last updated