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:
Lohann Paterno Coutinho Ferreira
2021-05-03 04:53:09 -03:00
committed by GitHub
parent c786fb21a0
commit ffca28ba59
13 changed files with 132 additions and 314 deletions
@@ -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!(