-
Notifications
You must be signed in to change notification settings - Fork 97
Description
Runtime upgrade (spec version 2100, pallet version 11) introduces breaking changes to dApp Staking:
- a new field
tier_rank_multipliersinTierParameters - a new reward formula that replaces
empty_slotswith deterministic rank multipliers
The original PR is AstarNetwork/Astar#1586 and this forum post explains the revamp motivation.
Changes needed
1. Hide bonus rewards from UI
Bonus pool is set to zero but types/extrinsics remain on-chain, no need to remove TS types or service calls. Just hide bonus reward display, bonus APR, bonus claim UI, and loyalty stake section in DataList.vue.
2. Verify dApp reward estimation
The runtime pre-computes rewards[] and rankRewards[] in DAppTierRewards storage, so the existing formula still works:
reward = tierReward.rewards[tierId] + rank * tierReward.rankRewards[tierId]
Check getDappRewardsForPeriod(), it currently omits the rank component (possible pre-existing bug).
3. Remove the tiering system
Only tiers 1 and 2 are active in the protocol (tiers 0 and 3 are dummy with 0 slots/rewards). Max active dApps capped to 16. UI should skip rendering tiers and list all dApps as a single list.
4. Update ERA_LENGTHS fallback
Astar cycle config changed: periodsPerCycle: 3→1, erasPerVoting: 11→1, erasPerBuildAndEarn: 111→364. Values are fetched via RPC but the hardcoded fallback map in DappStakingRepository.ts needs updating.
5. Consider removing legacy pallet version checks
With pallet version now at 11, the existing TIER_DERIVATION_PALLET_VERSION = 8 check (which switches between PalletDappStakingV3TiersConfiguration and TiersConfigurationLegacy) may no longer be needed. All networks will be on v11 after rollout, could simplify getTiersConfiguration() by dropping the legacy path.
Timeline
- Shibuya: Feb 13, 2026 → Shiden: ~1 week later → Astar: March 2026