dApp staking v3 - tier algorithm adjustment proosal

That’s great!
Thank you and I look forward to it.

2 Likes

That’s a great news.
Current V3 sucks big time and must be corrected ASAP if we don’t want B2E program and Astar atractivness go straigth in the drain.

1 Like

Im in full support of @you425! Thank you for being such an active voice in the community; I value all the work and effort you put into the Astar Community and ecosystem. You’re amazing!

3 Likes

Agree! and thank you @you425 for bringing this up and the solution with it for us to discuss. You have the full support from DeStore.

3 Likes

Hi everyone! We’ve been working on this feature. Here is the PR I would like your feedback. Thanks

5 Likes

Here’s a brief description on above implementation. With current implementation all dApps reaching a certain staking threshold will acquire a slot in a tier. No matter the amount staked, they’ll receive equal reward (only the slot reward). The only way to receive more reward is to win a new slot in upper tier. This new feature is aiming to improve reward distribution but with some limitation. It respects the tier system and reward cap per tier. This ranked tier system will rank dApps based on staking amount and dApps with higher rank will receive more reward (up to 2x slot reward). Closer you go to next tier threshold the higher the rank you receive. When you just enter tier you get rank 0 and as you go closer to next threshold you’ll get higher rank. The delta threshold between tier is divided into 10 pieces and reaching one of them will give you one rank. So if you are half way to next tier you will receive rank 5 which means your reward will be 150% the slot reward. Although this 50% extra reward is not guarantee all the time because this extra reward is taken from free slots. In edge cases when all the slots are acquired it will not be extra reward distributed. This approach ensures that you don’t exceeds the tier reward limit.
Here’s an example:
Let’s say Tier 2 reward portion is 50K ASTR and slot capacity is 5 then reward per slot will be 10K ASTR, therefor rank reward will be rank_reward = max(slot_reward, tier_remaining_reward) / 10 = 1K . If you classify for rank 0 then you get 10K (slot reward), if you classify rank 3 you get 10K + 3 * rank_reward = 13K . If tier has 5 slots with 3 occupied then reward of 2 slots will be used for ranking. e.i. slots occupied[rank_0, rank_3, rank_10] then calculated reward will be [10k, 13K, 20K] . In cases when there’s not enough remaining reward to satisfy full reward per rank then it will be adjust based on remaining reward, so rank reward will be less than 1K.

7 Likes

Thanks for the explanation!

Let me get this straight just to confirm.

  • ASTRs for free slots have been burned up to now, but will be used for rank rewards.
  • However, rank rewards are limited to the ASTR rewards of the free slots.
  • ASTRs not used up for rank rewards will be burned.

I have a few questions on that.

  1. is it correct to assume that there is no rank reward for Tier1? (I believe it is unnecessary)
  2. how will rank rewards be set if there are not enough free slots and rank rewards are not enough?
  3. I think the rank reward will be 100% of the maximum, but with 10 divisions, when the maximum is reached, it should be in the next tier. Would a max of 90% be accurate?
1 Like

Correct

It’s calculated based on remaining. Only if the tier slots are all occupied then there’s no rank reward. If one or more tier slots are free then there will be rank reward. Suppose we have 5 slots for tier 2 and only 1 free (using example above 10K per slot) then this 10K will be used for rank reward for tier 2. Assume we have tier_2_slots_4_of_5 = [rank_0, rank_2, rank_3, rank_5] then total ranks is 10 meaning it satisfies 1K per rank, so reward will be [10K, 12K, 13K, 15K]. If ranking is different, let’s say [rank_2, rank_5, rank_5, rank_8] then total ranks is 20 meaning rank reward will be 500 and reward will be [11K, 12.5K, 12.5K, 14K]

The only way to get rank 10 will be when you reach the threshold for upper tier but because upper tier is full, you will end up on next (lower) tier with rank 10.

3 Likes

Understood, thank you!

1 Like

Hi Ermal
Could you creat a small table to explain picturize all that? it would help with the comprehension
Also, could you tell us what would be the advantage of your methode in comparaison the dynamic rewards proposed by @you425 in the other discussion?

1 Like

The model I originally proposed could complicate the calculation because the amount of reward changes steplessly. For this reason, I believe he developed a plan like this one that is relatively simple to implement.

Now that I understand the content, I ran a simple simulation.
It was created with the current Tier parameters. (There is some margin of error)

Although the reward amount appears to change linearly, it actually changes in a staircase fashion with rank.

With the current parameters, Tier 2~4 increase the reward amount by 10% for each rank increase, regardless of the original reward amount. Therefore, the increase in reward amount for Tier 4, which has the lowest reward amount, is significantly lower than for the other tiers.

I suggest that the disparity could be reduced more by increasing the rank rewards per tier as follows. This will be the closest in behavior to the proposal I have made.

Current:

  • Tier2~4rank_reward = max(slot_reward, tier_remaining_reward) / 10

Change: (Parameters may be incorrect because we do not know the exact formula.)

  • Tier2: rank_reward = max(slot_reward, tier_remaining_reward) * 0.1
  • Tier3: rank_reward = max(slot_reward, tier_remaining_reward) * 0.18
  • Tier4: rank_reward = max(slot_reward, tier_remaining_reward)

I think this parameter should be determined by how much the community wants to reward dApps. I feel that the definition of the role of dApp Staking is currently shaky. The community should reconsider.

If we are going to approach the previous dApp Staking role, then the parameters I suggested would be suitable. However, that could also mean overpaying some dApps (although I would like to think that would be ok as long as they are voted on).

For reference, we have also simulated how this update will change the actual amount of rewards.

  • Current(yellow): Model before change
  • New Model(pink): Model with 10% reward increase per rank
  • New Model2(purple): The model proposed here

Emission Increase(ERA)

  • New Model: +6,134.34 ASTR (inflation rate+0.031%)
  • New Model2: +11,387.53 ASTR (inflation rate+0.051%)

My proposed Model 2 will not have enough reward pool due to the large increase in the amount of rewards per Tier 4 rank. Therefore, distribution is made from what can be distributed as rewards.

Even in Model 2, where rewards are larger, nearly 80% of dApp rewards will be burned. The difference in the amount of burn from the previous model is about 5% of the dApp reward allocation.

3 Likes

Thx @you425 for the simulation.

it give a better understanding of the proposal.

I’m definitely more in favor the your Model 2 as it will give more support to Tier 4 dApp which i beleive are the more in need of support.

1 Like

You’re adding different percentage so tier 3 & 4 can receive more rewards, but that’s not how a formula should work. If you want tier 3&4 to receive more rewards then simply request for tier reward distribution change so the base slot reward per tier 3 & 4 is increased.

1 Like

This is the reward change for era 742 (passed) with new system.

I certainly like the idea of changing the Tier setting in the first place.
However, my suggestion was to make the rewards on the way from the current tier to the next tier as linear as possible. The current implementation does not do that (of course, if the community thinks this is fine, this is fine too).

Why should we not set different percentages?

I think the most appropriate thing to do is to change both the Tier parameters and the percentages of ranks per Tier.

As a concrete example, here first is a model with the following parameter changes.

Slot Portions

  • Tier1: 5% → 4% (-1%)
  • Tier2: 20% → 16% (-4%)
  • Tier3: 30%
  • Tier4: 45% → 50% (+5%)

Rewards

  • Tier1: 25% → 22% (-3%)
  • Tier2: 47% → 40% (-7%)
  • Tier3: 25% → 30% (+5%)
  • Tier4: 3% → 8% (+5%)

The criteria for the parameter change is to balance the rewards so that Tier 4 rank 0 is equivalent to v2 (5% APR), while the rewards for the other tiers do not change significantly.

Here we make the same changes to the coefficients for rank rewards as before: the coefficients are changed to match the TIer parameter changes.

  • Tier2: rank_reward = max(slot_reward, tier_remaining_reward) * 0.1
  • Tier3: rank_reward = max(slot_reward, tier_remaining_reward) * 0.15
  • Tier4: rank_reward = max(slot_reward, tier_remaining_reward) * 0.5



The impact on inflation remains minimal.

Emission Increase(ERA)

  • New Model3: +6,265.65 ASTR (inflation rate+0.065%)
  • New Model4: +14,084.50 ASTR (inflation rate+0.102%)
2 Likes

Less moving parts the better. The formula is already complicated. Entering tier will give you slot reward, getting ranks will give you up to twice the slot reward. Current tier system is not designed to be linear. If lower tier can make almost equal the upper tier then what’s the point of tier? Having different rank percentage will complicate the formula even more. Then you’ll have to adjust parameters different for shibuya, shiden and astar, basically more room for error. If you think tier 4 is not receiving enough then you should advocate to increase reward portion for those tier. Let’s keep the ranking simple :slight_smile:

There is no need to be concerned about that, is there?
Tier is only a basis for reward; the higher the Tier, the more rewarding it will be.

Strangely enough, nowadays, the sadness when the Tier goes down is greater than the joy from going up. People feel greater emotion when they lose. This can be positive or negative, but right now it seems to be working negatively.

Currently Astar and Shiden are the same and Shibuya is different. Why not just make them all the same? I honestly don’t understand why only Shibuya is different (the parameters in v3 suddenly changed when it was implemented, so I assume it is a remnant of that change).

I’ve written a lot, but if you need to keep the system simple, I respect that. I am not an engineer, so it is difficult for me to assume how much of an impact there would be on whether or not to simplify this calculation.

If you are going to go with what you have now regarding rank rewards, I suggest that you rethink the balance between slots and rewards as I wrote before.
Slot Portions

  • Tier1: 5% → 4% (-1%)
  • Tier2: 20% → 16% (-4%)
  • Tier3: 30%
  • Tier4: 45% → 50% (+5%)

Rewards

  • Tier1: 25% → 22% (-3%)
  • Tier2: 47% → 40% (-7%)
  • Tier3: 25% → 30% (+5%)
  • Tier4: 3% → 8% (+5%)

I agree with your suggestions. Simplifying the system while adjusting the balance between slots and rewards could lead to a more streamlined and fairer distribution.

That’s the idea so you compete for upper tier to unlock more reward but at the same time ranking will reward best performing dApps among same tier.

Well, the purpose of testnet is to test things.

Why? What is the purpose of creating a new system? not complicate your life in the calculations and leave teams that are given promises to their destiny? We really don’t understand this position.
The discontent will grow, now there are more teams in tier 4.

:100:

1 Like