Conversation
|
/bench astar,shibuya,shiden pallet_inflation,pallet_dapp_staking |
|
Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/21593812398. |
|
Benchmarks have been finished. |
|
/bench astar,shibuya,shiden pallet_inflation,pallet_dapp_staking |
|
Benchmarks job is scheduled at https://github.com/AstarNetwork/Astar/actions/runs/21824706764. |
| fn eras_per_voting_subperiod() -> u32 { | ||
| 11 | ||
| 1 | ||
| } |
There was a problem hiding this comment.
This integrity check prevents it. Also, I'm not sure how the protocol will behave if we set it to 0.
There was a problem hiding this comment.
I'd suggest to explore this more after this PR is merged.
Not urgent since it's ok to change this before the next cycle starts in 2027.
I don't see why we shouldn't allow stake-and-forget, since we don't really need cycles anymore.
Only the reward expiration will need adjustment.
There was a problem hiding this comment.
Agree, actually the stake-and-forget is what we want to achieve. The inflation recalculation needs to be decoupled as well, particularly here. Otherwise, with eras_per_cycle() saturated to EraNumber::MAX, the next recalculation era is unreachable. Inflation parameters are frozen at their values forever.
|
Benchmarks have been finished. |
Dinonard
left a comment
There was a problem hiding this comment.
Forgot to post comments yesterday, sorry.
Dinonard
left a comment
There was a problem hiding this comment.
LGTM
Given the magnitude of the change, I'd prefer to do another review of the code, but I don't have capacity ATM.
0a7ab85
Minimum allowed line rate is |
Pull Request Summary
Closes #1585
This PR implements the technical foundation for Tokenomics 3.0 dApp Staking simplification,
as outlined in this forum post.
The goal is a minimal, predictable upgrade that:
Problem (Current Design)
Rank rewards currently depend on
empty_slots:This causes:
ranks_sumDesign Choice: Rank Multiplier Model
The
empty_slotsdependency is replaced with a single rank multiplier per tier, producing deterministic rewards.Core Idea
Each tier defines one value:
From this:
Reward Model (High Level)
Why This Works
Unfilled slots remain unminted (never redistributed).
Configuration Change
Add a single field to tier parameters:
Example production values:
10_000bips(default, no rank rewards)24_000bips(rank 10 earns 2.4× rank 0)46_700bips(rank 10 earns 4.67× rank 0)0bips(no rewards)This replaces multiple interacting parameters with one clear control.
What’s Preserved (Intentionally)
MAX_RANK = 10find_rank()logicRankedTierencodingDAppTierRewards)Why
MaxNumberOfContractsLegacy = 500Historical reward entries were bounded by 500 contracts.
This is preserved only to allow post-migration claims and can be removed once all legacy rewards are exhausted.
Alternatively we can claim all historical rewards ourselves and start fresh, preserving only the 16 desired dApps, so no need of the
MaxNumberOfContractsLegacyconfig parameter. This is extra operational complexity, maybe unnecessary.Rollout suggestion:
Check list
Follow up task
stake-and-forgetvia infinite Build&Earn #1589