Concepts

This module presents an implementation of user incentives that are controlled by governance. When users take a certain action, for example opening a CDP, they become eligible for rewards. Rewards are opt in meaning that users must submit a message before the claim deadline to claim their rewards. The goals and background of this module were subject of a previous Fury governance proposal, which can be found here

General Reward Distribution

Rewards target various user activity. For example, usdf borrowed from bnb CDPs, btcb supplied to the jinx money market, or owned shares in a swap fury/usdf pool.

Each second, the rewards accumulate at a rate set in the params, eg 100 ufury per second. These are then distributed to all users ratably based on their percentage involvement in the rewarded activity. For example if a user holds 1% of all funds deposited to the fury/usdf swap pool. They will receive 1% of the total rewards each second.

The quantity tracking a user’s involvement is referred to as “source shares” in the code. And the total across all users the “total source shares”. The quotient then gives their percentage involvement, eg if a user borrowed 10,000 usdf, and there is 100,000 usdf borrowed by all users, then they will get 10% of rewards.

Efficiency

Paying out rewards to every user every block would be slow and lead to long block times. Instead rewards are calculated much less frequently.

Every block a global tracker adds up total rewards paid out per unit of user involvement. For example, per unit of xrpb supplied to jinx, or per share in a fury/usdf swap pool. A user’s specific reward can then be calculated as needed based on their current source shares.

Users’ rewards must be updated whenever their source shares change. This happens through hooks into other modules that run before deposits/borrows/supplies etc.

JINX Token distribution

The incentive module also distributes the JINX token on the Highbury blockchain. JINX tokens are distributed to two types of ecosystem participants:

  1. Fury stakers - any address that stakes (delegates) FURY tokens will be eligible to claim JINX tokens. For each delegator, JINX tokens are accumulated ratably based on the total number of fury tokens staked. For example, if a user stakes 1 million FURY tokens and there are 100 million staked FURY, that user will accumulate 1% of JINX tokens earmarked for stakers during the distribution period. Distribution periods are defined by a start date, an end date, and a number of JINX tokens that are distributed per second.
  2. Depositors/Borrows - any address that deposits and/or borrows eligible tokens to the jinx module will be eligible to claim JINX tokens. For each depositor, JINX tokens are accumulated ratably based on the total number of tokens staked of that denomination. For example, if a user deposits 1 million “xyz” tokens and there are 100 million xyz deposited, that user will accumulate 1% of JINX tokens earmarked for depositors of that denomination during the distribution period. Distribution periods are defined by a start date, an end date, and a number of JINX tokens that are distributed per second.

Users are not air-dropped tokens, rather they accumulate Claim objects that they may submit a transaction in order to claim. In order to better align long term incentives, when users claim JINX tokens, they have options, called ‘multipliers’, for how tokens are distributed.

The exact multipliers will be voted by governance and can be changed via a governance vote. An example multiplier schedule would be:

  • Short-term locked - 20% multiplier and 1 month transfer restriction. Users receive 20% as many tokens as users who choose long-term locked tokens.
  • Long-term locked - 100% multiplier and 1 year transfer restriction. Users receive 5x as many tokens as users who choose short-term locked tokens.

JINXY Token Distribution

The incentive module distributes the JINXY token on the Highbury blockchain. JINXY tokens are distributed to two types of ecosystem participants:

  1. Fury stakers - any address that stakes (delegates) FURY tokens will be eligible to claim JINXY tokens. For each delegator, JINXY tokens are accumulated ratably based on the total number of fury tokens staked. For example, if a user stakes 1 million FURY tokens and there are 100 million staked FURY, that user will accumulate 1% of JINXY tokens earmarked for stakers during the distribution period. Distribution periods are defined by a start date, an end date, and a number of JINXY tokens that are distributed per second.
  2. Liquidity providers - any address that provides liquidity to eligible Swap protocol pools will be eligible to claim JINXY tokens. For each liquidity provider, JINXY tokens are accumulated ratably based on the total amount of pool shares. For example, if a liquidity provider deposits “xyz” and “abc” tokens into the “abc:xyz” pool to receive 10 shares and the pool has 50 total shares, then that user will accumulate 20% of JINXY tokens earmarked for liquidity providers of that pool during the distribution period. Distribution periods are defined by a start date, an end date, and a number of JINXY tokens that are distributed per second.