Skip to content

Commit f4755d5

Browse files
committed
clean up for PR
1 parent bd3b7b6 commit f4755d5

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

pallets/capacity/src/lib.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,9 @@ pub mod pallet {
242242
pub type EpochLength<T: Config> =
243243
StorageValue<_, T::BlockNumber, ValueQuery, EpochLengthDefault<T>>;
244244

245-
/// Information about the current staking reward era.
245+
/// Information about the current staking reward era. Checked every block.
246246
#[pallet::storage]
247+
#[pallet::whitelist_storage]
247248
#[pallet::getter(fn get_current_era)]
248249
pub type CurrentEraInfo<T: Config> =
249250
StorageValue<_, RewardEraInfo<T::RewardEra, T::BlockNumber>, ValueQuery>;
@@ -767,26 +768,26 @@ impl<T: Config> Pallet<T> {
767768

768769
fn start_new_reward_era_if_needed(current_block: T::BlockNumber) -> Weight {
769770
let current_era_info: RewardEraInfo<T::RewardEra, T::BlockNumber> = Self::get_current_era(); // 1r
771+
770772
if current_block.saturating_sub(current_era_info.started_at) >= T::EraLength::get().into() {
771-
// 1r
772773
let new_era_info = RewardEraInfo {
773774
era_index: current_era_info.era_index.saturating_add(One::one()),
774775
started_at: current_block,
775776
};
776777

777778
let current_reward_pool_info =
778779
Self::get_reward_pool_for_era(current_era_info.era_index).unwrap_or_default(); // 1r
780+
779781
let past_eras_max = T::StakingRewardsPastErasMax::get();
780-
let entries: u32 = StakingRewardPool::<T>::count();
782+
let entries: u32 = StakingRewardPool::<T>::count(); // 1r
783+
781784
if past_eras_max.eq(&entries.into()) {
782-
// 2r
783-
let current_era = Self::get_current_era().era_index;
784-
let earliest_era = current_era.saturating_sub(past_eras_max).add(One::one());
785+
let earliest_era =
786+
current_era_info.era_index.saturating_sub(past_eras_max).add(One::one());
785787
StakingRewardPool::<T>::remove(earliest_era); // 1w
786788
}
787789
CurrentEraInfo::<T>::set(new_era_info); // 1w
788790

789-
// let msa_handle = T::HandleProvider::get_handle_for_msa(msa_id);
790791
let total_reward_pool =
791792
T::RewardsProvider::reward_pool_size(current_reward_pool_info.total_staked_token);
792793
let new_reward_pool = RewardPoolInfo {
@@ -797,10 +798,10 @@ impl<T: Config> Pallet<T> {
797798
StakingRewardPool::<T>::insert(new_era_info.era_index, new_reward_pool); // 1w
798799

799800
T::WeightInfo::on_initialize()
800-
.saturating_add(T::DbWeight::get().reads(5))
801+
.saturating_add(T::DbWeight::get().reads(3))
801802
.saturating_add(T::DbWeight::get().writes(3))
802803
} else {
803-
T::DbWeight::get().reads(2)
804+
T::DbWeight::get().reads(1)
804805
}
805806
}
806807

@@ -821,8 +822,7 @@ impl<T: Config> Pallet<T> {
821822
Self::get_staking_account_for(staker).ok_or(Error::<T>::NotAStakingAccount)?;
822823

823824
let current_era: T::RewardEra = Self::get_current_era().era_index;
824-
let thaw_eras = T::ChangeStakingTargetThawEras::get();
825-
let thaw_at = current_era.saturating_add(thaw_eras);
825+
let thaw_at = current_era.saturating_add(T::ChangeStakingTargetThawEras::get());
826826
staking_account_details.update_stake_change_unlocking(amount, &thaw_at, &current_era)?;
827827
Self::set_staking_account(staker, &staking_account_details);
828828
Ok(())
@@ -842,8 +842,11 @@ impl<T: Config> Pallet<T> {
842842
let mut to_msa_target = Self::get_target_for(staker, to_msa).unwrap_or_default();
843843

844844
if to_msa_target.amount.is_zero() {
845+
// it's a new StakingTargetDetails record.
845846
to_msa_target.staking_type = staking_type.clone();
846847
} else {
848+
// make sure they are not retargeting to a StakingTargetDetails with a different staking
849+
// type, otherwise it could interfere with staking rewards.
847850
ensure!(
848851
to_msa_target.staking_type.eq(staking_type),
849852
Error::<T>::CannotChangeStakingType

pallets/capacity/src/tests/eras_tests.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fn start_new_era_if_needed_updates_reward_pool() {
4848
);
4949
system_run_to_block(8);
5050

51-
// TODO: Provider boost, after staking updates reward pool info
51+
// TODO: Provider boost, after staking updates reward pool info #1699
5252
// let staker = 10_000;
5353
// let provider_msa: MessageSourceId = 1;
5454
// let stake_amount = 600u64;
@@ -67,7 +67,7 @@ fn start_new_era_if_needed_updates_reward_pool() {
6767
}
6868
);
6969

70-
// TODO: after staking updates reward pool info
70+
// TODO: after staking updates reward pool info #1699
7171
// system_run_to_block(19);
7272
// run_to_block(20);
7373
});

pallets/capacity/src/tests/unstaking_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use sp_core::bounded::BoundedVec;
1212
#[test]
1313
fn unstake_happy_path() {
1414
new_test_ext().execute_with(|| {
15-
// TODO: ProviderBoost after unstake affects reward pool info
15+
// TODO: ProviderBoost after unstake affects reward pool info #1699
1616
let token_account = 200;
1717
let target: MessageSourceId = 1;
1818
let staking_amount = 100;

pallets/capacity/src/types.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
//! Types for the Capacity Pallet
22
use super::*;
3-
use codec::{Decode, Encode, MaxEncodedLen};
3+
use codec::{Decode, Encode, EncodeLike, MaxEncodedLen};
44
use frame_support::{
55
log::warn, BoundedVec, EqNoBound, PartialEqNoBound, RuntimeDebug, RuntimeDebugNoBound,
66
};
77
use scale_info::TypeInfo;
8-
use sp_runtime::traits::{CheckedAdd, CheckedSub, Saturating, Zero};
8+
use sp_runtime::traits::{AtLeast32BitUnsigned, CheckedAdd, CheckedSub, Saturating, Zero};
99

1010
use common_primitives::capacity::StakingType;
1111
#[cfg(any(feature = "runtime-benchmarks", test))]
@@ -342,7 +342,7 @@ pub trait StakingRewardsProvider<T: Config> {
342342

343343
/// Validate a payout claim for `accountId`, using `proof` and the provided `payload` StakingRewardClaim.
344344
/// Returns whether the claim passes validation. Accounts must first pass `payoutEligible` test.
345-
/// Errors::
345+
/// Errors:
346346
/// - NotAStakingAccount
347347
/// - MaxUnlockingChunksExceeded
348348
/// - All other conditions that would prevent a reward from being claimed return 'false'
@@ -371,7 +371,10 @@ pub trait StakingRewardsProvider<T: Config> {
371371
TypeInfo,
372372
MaxEncodedLen,
373373
)]
374-
pub struct RewardEraInfo<RewardEra, BlockNumber> {
374+
pub struct RewardEraInfo<RewardEra, BlockNumber>
375+
where
376+
RewardEra: AtLeast32BitUnsigned + EncodeLike,
377+
{
375378
/// the index of this era
376379
pub era_index: RewardEra,
377380
/// the starting block of this era

0 commit comments

Comments
 (0)