mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-01 10:07:56 +00:00
Remove Offence delay (#8414)
* Removed can_report api from OnOffenceHandler * Removed DeferredOffences and create a storage migration * Removed missing comments * Mock set_deferred_offences and deferred_offences methods * OnOffenceHandler::on_offence always succeed * Fix benchmark tests * Fix runtime-benchmark cfg methods * Removed 'applied' attribute from Offence event * refactor deprecated deferred offences getter * Validate if offences are submited after on_runtime_upgrade * update changelog * Remove empty lines * Fix remove_deferred_storage weights * Remove Offence::on_runtime_upgrade benchmark * Revert CHANGELOG.md update * Deprecate DeferredOffenceOf type * Update copyright Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Add migration logs Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * Fix migration log * Remove unused import * Add migration tests * rustfmt * use generate_storage_alias! macro * Refactor should_resubmit_deferred_offences test * Replace spaces by tabs * Refactor should_resubmit_deferred_offences test * Removed WeightSoftLimit * Removed WeightSoftLimit from tests and mocks * Remove unused imports * Apply suggestions from code review Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
c786fb21a0
commit
ffca28ba59
@@ -26,13 +26,13 @@ use sp_std::vec;
|
||||
|
||||
use frame_system::{RawOrigin, Pallet as System, Config as SystemConfig};
|
||||
use frame_benchmarking::{benchmarks, account, impl_benchmark_test_suite};
|
||||
use frame_support::traits::{Currency, OnInitialize, ValidatorSet, ValidatorSetWithIdentification};
|
||||
use frame_support::traits::{Currency, ValidatorSet, ValidatorSetWithIdentification};
|
||||
|
||||
use sp_runtime::{
|
||||
Perbill,
|
||||
traits::{Convert, StaticLookup, Saturating, UniqueSaturatedInto},
|
||||
};
|
||||
use sp_staking::offence::{ReportOffence, Offence, OffenceDetails};
|
||||
use sp_staking::offence::{ReportOffence, Offence};
|
||||
|
||||
use pallet_balances::Config as BalancesConfig;
|
||||
use pallet_babe::BabeEquivocationOffence;
|
||||
@@ -51,7 +51,6 @@ const SEED: u32 = 0;
|
||||
const MAX_REPORTERS: u32 = 100;
|
||||
const MAX_OFFENDERS: u32 = 100;
|
||||
const MAX_NOMINATORS: u32 = 100;
|
||||
const MAX_DEFERRED_OFFENCES: u32 = 100;
|
||||
|
||||
pub struct Pallet<T: Config>(Offences<T>);
|
||||
|
||||
@@ -271,8 +270,6 @@ benchmarks! {
|
||||
);
|
||||
}
|
||||
verify {
|
||||
// make sure the report was not deferred
|
||||
assert!(Offences::<T>::deferred_offences().is_empty());
|
||||
let bond_amount: u32 = UniqueSaturatedInto::<u32>::unique_saturated_into(bond_amount::<T>());
|
||||
let slash_amount = slash_fraction * bond_amount;
|
||||
let reward_amount = slash_amount * (1 + n) / 2;
|
||||
@@ -306,7 +303,6 @@ benchmarks! {
|
||||
pallet_offences::Event::Offence(
|
||||
UnresponsivenessOffence::<T>::ID,
|
||||
0_u32.to_le_bytes().to_vec(),
|
||||
true
|
||||
)
|
||||
).into()))
|
||||
);
|
||||
@@ -336,8 +332,6 @@ benchmarks! {
|
||||
let _ = Offences::<T>::report_offence(reporters, offence);
|
||||
}
|
||||
verify {
|
||||
// make sure the report was not deferred
|
||||
assert!(Offences::<T>::deferred_offences().is_empty());
|
||||
// make sure that all slashes have been applied
|
||||
assert_eq!(
|
||||
System::<T>::event_count(), 0
|
||||
@@ -372,8 +366,6 @@ benchmarks! {
|
||||
let _ = Offences::<T>::report_offence(reporters, offence);
|
||||
}
|
||||
verify {
|
||||
// make sure the report was not deferred
|
||||
assert!(Offences::<T>::deferred_offences().is_empty());
|
||||
// make sure that all slashes have been applied
|
||||
assert_eq!(
|
||||
System::<T>::event_count(), 0
|
||||
@@ -383,42 +375,6 @@ benchmarks! {
|
||||
+ n // nominators slashed
|
||||
);
|
||||
}
|
||||
|
||||
on_initialize {
|
||||
let d in 1 .. MAX_DEFERRED_OFFENCES;
|
||||
let o = 10;
|
||||
let n = 100;
|
||||
|
||||
let mut deferred_offences = vec![];
|
||||
let offenders = make_offenders::<T>(o, n)?.0;
|
||||
let offence_details = offenders.into_iter()
|
||||
.map(|offender| OffenceDetails {
|
||||
offender: T::convert(offender),
|
||||
reporters: vec![],
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
for i in 0 .. d {
|
||||
let fractions = offence_details.iter()
|
||||
.map(|_| Perbill::from_percent(100 * (i + 1) / MAX_DEFERRED_OFFENCES))
|
||||
.collect::<Vec<_>>();
|
||||
deferred_offences.push((offence_details.clone(), fractions.clone(), 0u32));
|
||||
}
|
||||
|
||||
Offences::<T>::set_deferred_offences(deferred_offences);
|
||||
assert!(!Offences::<T>::deferred_offences().is_empty());
|
||||
}: {
|
||||
Offences::<T>::on_initialize(0u32.into());
|
||||
}
|
||||
verify {
|
||||
// make sure that all deferred offences were reported with Ok status.
|
||||
assert!(Offences::<T>::deferred_offences().is_empty());
|
||||
assert_eq!(
|
||||
System::<T>::event_count(), d * (0
|
||||
+ o // offenders slashed
|
||||
+ o * n // nominators slashed
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
impl_benchmark_test_suite!(
|
||||
|
||||
Reference in New Issue
Block a user