mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-16 10:51:16 +00:00
Implements a % cap on staking rewards from era inflation (#1660)
This PR implements an (optional) cap of the era inflation that is allocated to staking rewards. The remaining is minted directly into the [`RewardRemainder`](https://github.com/paritytech/polkadot-sdk/blob/fb0fd3e62445eb2dee2b2456a0c8574d1ecdcc73/substrate/frame/staking/src/pallet/mod.rs#L160) account, which is the treasury pot account in Polkadot and Kusama. The staking pallet now has a percent storage item, `MaxStakersRewards`, which defines the max percentage of the era inflation that should be allocated to staking rewards. The remaining era inflation (i.e. `remaining = max_era_payout - staking_payout.min(staking_payout * MaxStakersRewards))` is minted directly into the treasury. The `MaxStakersRewards` can be set by a privileged origin through the `set_staking_configs` extrinsic. **To finish** - [x] run benchmarks for westend-runtime Replaces https://github.com/paritytech/polkadot-sdk/pull/1483 Closes https://github.com/paritytech/polkadot-sdk/issues/403 --------- Co-authored-by: command-bot <>
This commit is contained in:
@@ -855,7 +855,8 @@ benchmarks! {
|
||||
ConfigOp::Set(u32::MAX),
|
||||
ConfigOp::Set(u32::MAX),
|
||||
ConfigOp::Set(Percent::max_value()),
|
||||
ConfigOp::Set(Perbill::max_value())
|
||||
ConfigOp::Set(Perbill::max_value()),
|
||||
ConfigOp::Set(Percent::max_value())
|
||||
) verify {
|
||||
assert_eq!(MinNominatorBond::<T>::get(), BalanceOf::<T>::max_value());
|
||||
assert_eq!(MinValidatorBond::<T>::get(), BalanceOf::<T>::max_value());
|
||||
@@ -863,6 +864,7 @@ benchmarks! {
|
||||
assert_eq!(MaxValidatorsCount::<T>::get(), Some(u32::MAX));
|
||||
assert_eq!(ChillThreshold::<T>::get(), Some(Percent::from_percent(100)));
|
||||
assert_eq!(MinCommission::<T>::get(), Perbill::from_percent(100));
|
||||
assert_eq!(MaxStakedRewards::<T>::get(), Some(Percent::from_percent(100)));
|
||||
}
|
||||
|
||||
set_staking_configs_all_remove {
|
||||
@@ -873,6 +875,7 @@ benchmarks! {
|
||||
ConfigOp::Remove,
|
||||
ConfigOp::Remove,
|
||||
ConfigOp::Remove,
|
||||
ConfigOp::Remove,
|
||||
ConfigOp::Remove
|
||||
) verify {
|
||||
assert!(!MinNominatorBond::<T>::exists());
|
||||
@@ -881,6 +884,7 @@ benchmarks! {
|
||||
assert!(!MaxValidatorsCount::<T>::exists());
|
||||
assert!(!ChillThreshold::<T>::exists());
|
||||
assert!(!MinCommission::<T>::exists());
|
||||
assert!(!MaxStakedRewards::<T>::exists());
|
||||
}
|
||||
|
||||
chill_other {
|
||||
@@ -904,6 +908,7 @@ benchmarks! {
|
||||
ConfigOp::Set(0),
|
||||
ConfigOp::Set(Percent::from_percent(0)),
|
||||
ConfigOp::Set(Zero::zero()),
|
||||
ConfigOp::Noop,
|
||||
)?;
|
||||
|
||||
let caller = whitelisted_caller();
|
||||
|
||||
Reference in New Issue
Block a user