diff --git a/substrate/frame/staking/src/pallet/mod.rs b/substrate/frame/staking/src/pallet/mod.rs index 498d861660..1a8fd59d23 100644 --- a/substrate/frame/staking/src/pallet/mod.rs +++ b/substrate/frame/staking/src/pallet/mod.rs @@ -628,6 +628,8 @@ pub mod pallet { Chilled(T::AccountId), /// The stakers' rewards are getting paid. \[era_index, validator_stash\] PayoutStarted(EraIndex, T::AccountId), + /// A validator has set their preferences. + ValidatorPrefsSet(T::AccountId, ValidatorPrefs), } #[pallet::error] @@ -1016,7 +1018,9 @@ pub mod pallet { } Self::do_remove_nominator(stash); - Self::do_add_validator(stash, prefs); + Self::do_add_validator(stash, prefs.clone()); + Self::deposit_event(Event::::ValidatorPrefsSet(ledger.stash, prefs)); + Ok(()) } diff --git a/substrate/frame/staking/src/tests.rs b/substrate/frame/staking/src/tests.rs index 11dfe3e477..7161418afc 100644 --- a/substrate/frame/staking/src/tests.rs +++ b/substrate/frame/staking/src/tests.rs @@ -4598,11 +4598,21 @@ fn capped_stakers_works() { #[test] fn min_commission_works() { ExtBuilder::default().build_and_execute(|| { + // account 10 controls the stash from account 11 assert_ok!(Staking::validate( Origin::signed(10), ValidatorPrefs { commission: Perbill::from_percent(5), blocked: false } )); + // event emitted should be correct + assert_eq!( + *staking_events().last().unwrap(), + Event::ValidatorPrefsSet( + 11, + ValidatorPrefs { commission: Perbill::from_percent(5), blocked: false } + ) + ); + assert_ok!(Staking::set_staking_configs( Origin::root(), ConfigOp::Remove,