➡️Daily Prize Pools

Daily Prize Pools are a new type of rewards introduced during Tada Phase 2. Each day, tokens from the "Community slot" are allocated and distributed to users based on specific parameters:

  • Activity: Tasks completed on a given day, and consistency over the last 10 days

  • Staking: Amount staked across Ta-da staking pools

  • LP providing: Amounts of Ta-da LP tokens held

Rewards from Daily Prize Pools are paid to a dedicated staking pool, with a 6 month bonding period.

The amount of tokens distributed each day is variable, and is computed with logics described below

Distribution Formula

Computed daily for each user, the output of this formula determines which share of a daily prize pool will be allocated to a specific user.

percent_to_distributei=scorei1+Σscorepercent\_to\_distribute_i = \dfrac{\text{score}_i}{1 + \Sigma score}

The previous value then allows for a straightforward calculation of the number of tokens to be distributed:

to_distributei=percent_to_distributeitotal_tokens_to_distributeto\_distribute_i=percent\_to\_distribute_i * total\_tokens\_to\_distribute

User Score Formula

Here is the formula for calculating a user's score:

scorei=xpi[1+(αstaking_scorei+βliquidity_scorei+γactivity_scorei)(MAX_AMPLIFICATION1)]score_{i} = xp_i * [ 1 + ( \alpha * staking\_score_i + \beta * liquidity\_score_i + \gamma * activity\_score_i ) * (MAX\_AMPLIFICATION - 1) ]

Where:

  • scoreiscore_i corresponds to the user's score (over the last 24 hours).

  • xpixp_i is the experience points of the user (over the last 24 hours).

  • staking_scoreistaking\_score_i is the user staking score (please see below).

  • liquidity_scoreiliquidity\_score_i is the user liquidity score (please see below).

  • activity_scoreiactivity\_score_i is the user activity score (please see below).

  • α\alpha is the staking score modifier.

  • β\beta is the liquidity score modifier.

  • γ\gamma is the activity score modifier.

  • MAX_AMPLIFICATIONMAX\_AMPLIFICATION is the maximum amplification.

Staking Score Formula

Here is the formula for calculating the staking score:

staking_scorei=min(log(k×weighted_stakei+1)log(k×MAX_STAKING+1),1)staking\_score_i = min(\frac{\log(k \times weighted\_stake_i + 1)}{\log(k \times \text{MAX\_STAKING} + 1)}, 1)
  • staking_scoreistaking\_score_i is the result of a user's staking score. It is a value within the range [0,1][0, 1].

  • MAX_STAKINGMAX\_STAKING is a value (in dollars) that caps the impact of staking for whales. Beyond this value, the score no longer increases.

  • weighted_stakeiweighted\_stake_i is the amount, weighted by the lock duration, of the dollar value of the user's staked tokens (see below).

  • kk is the smoothing factor of the curve. The smoothing factor allows modifying the rate of increase of the curve (see below).

weighted_stakeiweighted\_stake_i Formula

In the previous formula, weighted_stakeiweighted\_stake_i represents the weighted liquidity the user has placed in the staking pools. This value is calculated as follows:

weighted_stakei=nnb_tokens(pooln)multiplier(pooln)token_priceweighted\_stake_i=\sum_{n}^{} nb\_tokens(pool_n)*multiplier(pool_n)*token\_price

Where:

  • nb_tokens(pooln)nb\_tokens(pool_n) is the number of tokens locked by the user in the pool nn.

  • multiplier(pooln)multiplier(pool_n) is the pool factor.

  • token_pricetoken\_price is the token price.

For example, considering the values in the table below:

  • $1 staked in the "12 months" pool corresponds to a value of 1;

  • $2 staked in the "6 months" pool corresponds to a value of 1;

  • $10 provided in the "1 month" pool corresponds to a value of 0.8.

kk value

The smoothing factor allows modifying the rate of increase of the curve. Thus, in the example below (α=1)(\alpha = 1), we see that reaching a value of (0.75)(0.75), requires staking $6000 when k=1k = 1, whereas it requires staking $50000 to reach the same value when k=0.0001k = 0.0001.

Liquidity Score Formula

The liquidity score uses exactly the same formula as the one previously described:

liquidity_scorei=min(log(k×liquidityi+1)log(k×MAX_LIQUIDITY+1),1)liquidity\_score_i = min(\frac{\log(k \times liquidity_i + 1)}{\log(k \times \text{MAX\_LIQUIDITY} + 1)}, 1)

Where:

  • liquidity_scoreiliquidity\_score_i is the liquidity score of the user.

  • MAX_LIQUIDITYMAX\_LIQUIDITY is a value (in dollars) that caps the impact of liquidity provision for whales. Beyond this value, the score no longer increases.

  • liquidityiliquidity_i is the dollar value of the tokens the user has provided in the pools.

  • kk is the smoothing factor of the curve.

Activity Score Formula

The activity score encourages user engagement and incentivizes them to return to the application regularly. It rewards consistency (whereas experience encourages quantity). This score increases by 1 each day the user completes at least one task and is reset to 0 if the user fails to complete any task for a day.

It is calculated as follows:

activity_scorei=min(daily_streaki,MAX_ACTIVITY)MAX_ACTIVITYactivity\_score_i = \frac{min(daily\_streak_i, MAX\_ACTIVITY)}{MAX\_ACTIVITY}

Where

  • activity_scoreiactivity\_score_i is the activity score (between 0 and 1).

  • daily_streakidaily\_streak_i is the number of consecutive days during which the user has completed at least one task.

  • MAX_ACTIVITYMAX\_ACTIVITY is the maximum score allowed.

Since daily_streakidaily\_streak_i is reset to 0 in case of a missed day, the user is encouraged to maintain their streak of consecutive days, even after reaching the maximum score.

Choice of Parameters

The top-down strategy for selecting the various parameters is based on the following steps:

  1. Choose the desired maximum amplification.

  2. Decide on the relative importance of staking and liquidity.

  3. Determine the parameters.

Daily Prize Pools are launched with the following parameters, which are subject to possible evolutions

Last updated