mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 03:01:02 +00:00
babe: report equivocations (#6362)
* slots: create primitives crate for consensus slots * offences: add method to check if an offence is unknown * babe: initial equivocation reporting implementation * babe: organize imports * babe: working equivocation reporting * babe: add slot number to equivocation proof * session: move duplicate traits to session primitives * babe: move equivocation stuff to its own file * offences: fix test * session: don't have primitives depend on frame_support * babe: use opaque type for key owner proof * babe: cleanup client equivocation reporting * babe: cleanup equivocation code in pallet * babe: allow sending signed equivocation reports * node: fix compilation * fix test compilation * babe: return bool on check_equivocation_proof * babe: add test for equivocation reporting * babe: add more tests * babe: add test for validate unsigned * babe: take slot number in generate_key_ownership_proof API * babe: add benchmark for equivocation proof checking * session: add benchmark for membership proof checking * offences: fix babe benchmark * babe: add weights based on benchmark results * babe: adjust weights after benchmarking on reference hardware * babe: reorder checks in check_and_report_equivocation
This commit is contained in:
@@ -323,21 +323,16 @@ benchmarks! {
|
||||
}
|
||||
|
||||
report_offence_babe {
|
||||
let r in 1 .. MAX_REPORTERS;
|
||||
let n in 0 .. MAX_NOMINATORS.min(MAX_NOMINATIONS as u32);
|
||||
let o = 1;
|
||||
|
||||
// Make r reporters
|
||||
let mut reporters = vec![];
|
||||
for i in 0 .. r {
|
||||
let reporter = account("reporter", i, SEED);
|
||||
reporters.push(reporter);
|
||||
}
|
||||
// for babe equivocation reports the number of reporters
|
||||
// and offenders is always 1
|
||||
let reporters = vec![account("reporter", 1, SEED)];
|
||||
|
||||
// make sure reporters actually get rewarded
|
||||
Staking::<T>::set_slash_reward_fraction(Perbill::one());
|
||||
|
||||
let (mut offenders, raw_offenders) = make_offenders::<T>(o, n)?;
|
||||
let (mut offenders, raw_offenders) = make_offenders::<T>(1, n)?;
|
||||
let keys = ImOnline::<T>::keys();
|
||||
|
||||
let offence = BabeEquivocationOffence {
|
||||
@@ -357,9 +352,9 @@ benchmarks! {
|
||||
assert_eq!(
|
||||
System::<T>::event_count(), 0
|
||||
+ 1 // offence
|
||||
+ 2 * r // reporter (reward + endowment)
|
||||
+ o // offenders slashed
|
||||
+ o * n // nominators slashed
|
||||
+ 2 // reporter (reward + endowment)
|
||||
+ 1 // offenders slashed
|
||||
+ n // nominators slashed
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user