This is the design document for the updated rewards process, to that end it includes the design for the original rewards process. It covers only the design of the sifnoded components and does not cover unlocking liquidity.

The rewards process mints native tokens and allocates them to pool liquidity providers. This is done every n’th block over a series of (admin) user specified periods.

Rewards Process

A policy defines the precise behaviour of the rewards process, it consists of a list of periods and each period defines the rewards parameters for a specified set of blocks:

policy: [period]
period:
	reward_period_id                 string
	reward_period_start_block        uint64
	reward_period_end_block          uint64
	reward_period_allocation         uint256
	reward_period_pool_multipliers   [pool_multiplier]
	reward_period_default_multiplier 0 ≤ multiplier ≤ 10 max 18 decimals
	reward_period_distribute         bool
	reward_period_mod                u64
pool_multiplier:
	pool_multiplier_asset string
	multiplier            0 ≤ multiplier ≤ 1 max 18 decimals

reward_period_id

Not used

reward_period_start_block

Start block

reward_period_end_block

End block

reward_period_allocation

The amount of native asset to distribute over the period. The total amount of native asset allocated per block (over all pools) is calculated as:

reward_block_allocation = reward_period_allocation / (reward_period_end_block - reward_period_start_block)

Where the division represents integer division

reward_period_pool_multipliers, pool_multiplier_asset, multiplier, reward_period_default_multiplier

The amount of reward allocated for all the liquidity providers of a pool is:

pool_allocation = reward_block_allocation * (multiplier * native_asset_pool_depth) /  sigma_pools ( multiplier * native_asset_pool_depth)

The multiplier is given by the assets corresponding entry in the reward_period_pool_multipliers list. If the asset does not have an entry in this list then the reward_period_default_multiplier is used. Here sigma_pools is a sum over all pools.

reward_period_distribute