Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Add some important events to batch & staking to ensure ease of analysis #9462

Merged
4 commits merged into from Jul 29, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 7 additions & 4 deletions frame/staking/src/pallet/impls.rs
Expand Up @@ -154,11 +154,13 @@ impl<T: Config> Pallet<T> {
let validator_exposure_part = Perbill::from_rational(exposure.own, exposure.total);
let validator_staking_payout = validator_exposure_part * validator_leftover_payout;

Self::deposit_event(Event::<T>::PayoutStarted(era, ledger.stash.clone()));

// We can now make total validator payout:
if let Some(imbalance) =
Self::make_payout(&ledger.stash, validator_staking_payout + validator_commission_payout)
{
Self::deposit_event(Event::<T>::Reward(ledger.stash, imbalance.peek()));
Self::deposit_event(Event::<T>::Rewarded(ledger.stash, imbalance.peek()));
}

// Track the number of payout ops to nominators. Note: `WeightInfo::payout_stakers_alive_staked`
Expand All @@ -176,7 +178,8 @@ impl<T: Config> Pallet<T> {
if let Some(imbalance) = Self::make_payout(&nominator.who, nominator_reward) {
// Note: this logic does not count payouts for `RewardDestination::None`.
nominator_payout_count += 1;
Self::deposit_event(Event::<T>::Reward(nominator.who.clone(), imbalance.peek()));
let e = Event::<T>::Rewarded(nominator.who.clone(), imbalance.peek());
Self::deposit_event(e);
}
}

Expand Down Expand Up @@ -354,7 +357,7 @@ impl<T: Config> Pallet<T> {
let issuance = T::Currency::total_issuance();
let (validator_payout, rest) = T::EraPayout::era_payout(staked, issuance, era_duration);

Self::deposit_event(Event::<T>::EraPayout(active_era.index, validator_payout, rest));
Self::deposit_event(Event::<T>::EraPaid(active_era.index, validator_payout, rest));

// Set ending era reward.
<ErasValidatorReward<T>>::insert(&active_era.index, validator_payout);
Expand Down Expand Up @@ -446,7 +449,7 @@ impl<T: Config> Pallet<T> {
return None
}

Self::deposit_event(Event::StakingElection);
Self::deposit_event(Event::StakersElected);
Some(Self::trigger_new_era(start_session_index, exposures))
}

Expand Down
12 changes: 7 additions & 5 deletions frame/staking/src/pallet/mod.rs
Expand Up @@ -525,17 +525,17 @@ pub mod pallet {
/// The era payout has been set; the first balance is the validator-payout; the second is
/// the remainder from the maximum amount of reward.
/// \[era_index, validator_payout, remainder\]
EraPayout(EraIndex, BalanceOf<T>, BalanceOf<T>),
/// The staker has been rewarded by this amount. \[stash, amount\]
Reward(T::AccountId, BalanceOf<T>),
EraPaid(EraIndex, BalanceOf<T>, BalanceOf<T>),
/// The nominator has been rewarded by this amount. \[era_index, stash, amount\]
gavofyork marked this conversation as resolved.
Show resolved Hide resolved
Rewarded(T::AccountId, BalanceOf<T>),
/// One validator (and its nominators) has been slashed by the given amount.
/// \[validator, amount\]
Slash(T::AccountId, BalanceOf<T>),
Slashed(T::AccountId, BalanceOf<T>),
/// An old slashing report from a prior era was discarded because it could
/// not be processed. \[session_index\]
OldSlashingReportDiscarded(SessionIndex),
/// A new set of stakers was elected.
StakingElection,
StakersElected,
/// An account has bonded this amount. \[stash, amount\]
///
/// NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,
Expand All @@ -553,6 +553,8 @@ pub mod pallet {
/// An account has stopped participating as either a validator or nominator.
/// \[stash\]
Chilled(T::AccountId),
/// The stakers' rewards are getting paid. \[era_index, validator_stash\]
PayoutStarted(EraIndex, T::AccountId),
}

#[pallet::error]
Expand Down
2 changes: 1 addition & 1 deletion frame/staking/src/slashing.rs
Expand Up @@ -584,7 +584,7 @@ pub fn do_slash<T: Config>(
<Pallet<T>>::update_ledger(&controller, &ledger);

// trigger the event
<Pallet<T>>::deposit_event(super::Event::<T>::Slash(stash.clone(), value));
<Pallet<T>>::deposit_event(super::Event::<T>::Slashed(stash.clone(), value));
}
}

Expand Down
10 changes: 5 additions & 5 deletions frame/staking/src/tests.rs
Expand Up @@ -257,7 +257,7 @@ fn rewards_should_work() {
);
assert_eq!(
*mock::staking_events().last().unwrap(),
Event::EraPayout(0, total_payout_0, maximum_payout - total_payout_0)
Event::EraPaid(0, total_payout_0, maximum_payout - total_payout_0)
);
mock::make_all_reward_payment(0);

Expand Down Expand Up @@ -295,7 +295,7 @@ fn rewards_should_work() {
);
assert_eq!(
*mock::staking_events().last().unwrap(),
Event::EraPayout(1, total_payout_1, maximum_payout - total_payout_1)
Event::EraPaid(1, total_payout_1, maximum_payout - total_payout_1)
);
mock::make_all_reward_payment(1);

Expand Down Expand Up @@ -3942,7 +3942,7 @@ mod election_data_provider {
run_to_block(20);
assert_eq!(Staking::next_election_prediction(System::block_number()), 45);
assert_eq!(staking_events().len(), 1);
assert_eq!(*staking_events().last().unwrap(), Event::StakingElection);
assert_eq!(*staking_events().last().unwrap(), Event::StakersElected);

for b in 21..45 {
run_to_block(b);
Expand All @@ -3953,7 +3953,7 @@ mod election_data_provider {
run_to_block(45);
assert_eq!(Staking::next_election_prediction(System::block_number()), 70);
assert_eq!(staking_events().len(), 3);
assert_eq!(*staking_events().last().unwrap(), Event::StakingElection);
assert_eq!(*staking_events().last().unwrap(), Event::StakersElected);

Staking::force_no_eras(Origin::root()).unwrap();
assert_eq!(Staking::next_election_prediction(System::block_number()), u64::MAX);
Expand All @@ -3976,7 +3976,7 @@ mod election_data_provider {
run_to_block(55);
assert_eq!(Staking::next_election_prediction(System::block_number()), 55 + 25);
assert_eq!(staking_events().len(), 6);
assert_eq!(*staking_events().last().unwrap(), Event::StakingElection);
assert_eq!(*staking_events().last().unwrap(), Event::StakersElected);
// The new era has been planned, forcing is changed from `ForceNew` to `NotForcing`.
assert_eq!(ForceEra::<Test>::get(), Forcing::NotForcing);
})
Expand Down
4 changes: 4 additions & 0 deletions frame/utility/src/lib.rs
Expand Up @@ -108,6 +108,8 @@ pub mod pallet {
BatchInterrupted(u32, DispatchError),
/// Batch of dispatches completed fully with no error.
BatchCompleted,
/// A single item within a Batch of dispatches has completed with no error.
ItemCompleted,
}

#[pallet::call]
Expand Down Expand Up @@ -173,6 +175,7 @@ pub mod pallet {
// Return the actual used weight + base_weight of this call.
return Ok(Some(base_weight + weight).into())
}
Self::deposit_event(Event::ItemCompleted);
gavofyork marked this conversation as resolved.
Show resolved Hide resolved
}
Self::deposit_event(Event::BatchCompleted);
let base_weight = T::WeightInfo::batch(calls_len as u32);
Expand Down Expand Up @@ -289,6 +292,7 @@ pub mod pallet {
err.post_info = Some(base_weight + weight).into();
err
})?;
Self::deposit_event(Event::ItemCompleted);
}
Self::deposit_event(Event::BatchCompleted);
let base_weight = T::WeightInfo::batch_all(calls_len as u32);
Expand Down