mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
runtime/disputes: slashing (#5535)
* disputes: runtime part of slashing * disputes: reward winners * disputes/slashing: validate_unsigned impl * fmt * disputes/slashing: report_dispute_lost_unsigned * disputes/slashing: separate winners from losers and report winners * disputes/slashing: refactoring * impl HandleReports * enable on Wenstend * fmt * add slashing pallet to the mock and test runtimes * fix a bug in report_dispute_lost_unsigned * fmt * disputes: remove new_participants from summary * disputes: remove punish_inconclusive * impl SlashingHandler for Pallet for type-safety * do not impl slashing::Config on mainnets yet * teach spellcheck deduplication * simplify interfaces and resolve some TODOs * resolve some more TODOs * minor typos * move slashing into a folder * remove unnecessary clone * fix validator_set_count calculation * introduce ValidatorSetCount * store ValidatorSetCount * fmt * add the benchmark * fmt * unflatten slashing * post-rebase fixes * remove winners eagerly * use real slashing weights for westend * remove bench test suite * zombinet: modify disputes test to check for an offence report * zombinet: add a timeout * add slashing pallet to Rococo * zombienet: revert back to rococo-local * fmt * remove TODOs * revert some accidental changes * slashing is submodule of disputes * Change the log target Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> * wrap comments with rustfmt, more docs, constants * use Defensive trait * cargo update -p sp-io * merge offence types, remove rewards for now * cargo update -p sp-io * benchmark fixes * fmt * unused var * fix block_author impl * ressurect RewardValidators trait * remove outdated comment * more module docs * introduce BenchmarkingConfig * typo fix * teach spellcheck unapplied * use Weight::new() * fix mocking rewards * use RefTimeWeight * ".git/.scripts/bench-bot.sh" runtime westend-dev runtime_parachains::disputes::slashing * refactor maybe_identify_validators * no more ticket in disguise * remove outdated comments * lower against valid to 0.1% * bump zombienet version for debug * use from_perthousand * post-merge fixes * another day, another Weight changes * Revert "bump zombienet version for debug" This reverts commit 0d9978711f8ec9a746a5e1c45e8ffbe7c75e7b5c. * do not reward block authors * fix outdated comment * use Pays from frame_support::dispatch::Pays * add timeout to is up Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by: command-bot <> Co-authored-by: Javier Viola <javier@parity.io> Co-authored-by: Javier Viola <pepoviola@gmail.com>
This commit is contained in:
@@ -31,8 +31,8 @@ use frame_support::{
|
||||
use frame_support_test::TestRandomness;
|
||||
use parity_scale_codec::Decode;
|
||||
use primitives::v2::{
|
||||
AuthorityDiscoveryId, Balance, BlockNumber, Header, Moment, SessionIndex, UpwardMessage,
|
||||
ValidatorIndex,
|
||||
AuthorityDiscoveryId, Balance, BlockNumber, CandidateHash, Header, Moment, SessionIndex,
|
||||
UpwardMessage, ValidatorIndex,
|
||||
};
|
||||
use sp_core::H256;
|
||||
use sp_io::TestExternalities;
|
||||
@@ -243,7 +243,7 @@ impl crate::hrmp::Config for Test {
|
||||
impl crate::disputes::Config for Test {
|
||||
type RuntimeEvent = RuntimeEvent;
|
||||
type RewardValidators = Self;
|
||||
type PunishValidators = Self;
|
||||
type SlashingHandler = Self;
|
||||
type WeightInfo = crate::disputes::TestWeightInfo;
|
||||
}
|
||||
|
||||
@@ -251,7 +251,6 @@ thread_local! {
|
||||
pub static REWARD_VALIDATORS: RefCell<Vec<(SessionIndex, Vec<ValidatorIndex>)>> = RefCell::new(Vec::new());
|
||||
pub static PUNISH_VALIDATORS_FOR: RefCell<Vec<(SessionIndex, Vec<ValidatorIndex>)>> = RefCell::new(Vec::new());
|
||||
pub static PUNISH_VALIDATORS_AGAINST: RefCell<Vec<(SessionIndex, Vec<ValidatorIndex>)>> = RefCell::new(Vec::new());
|
||||
pub static PUNISH_VALIDATORS_INCONCLUSIVE: RefCell<Vec<(SessionIndex, Vec<ValidatorIndex>)>> = RefCell::new(Vec::new());
|
||||
}
|
||||
|
||||
impl crate::disputes::RewardValidators for Test {
|
||||
@@ -263,30 +262,31 @@ impl crate::disputes::RewardValidators for Test {
|
||||
}
|
||||
}
|
||||
|
||||
impl crate::disputes::PunishValidators for Test {
|
||||
impl crate::disputes::SlashingHandler<BlockNumber> for Test {
|
||||
fn punish_for_invalid(
|
||||
session: SessionIndex,
|
||||
validators: impl IntoIterator<Item = ValidatorIndex>,
|
||||
_: CandidateHash,
|
||||
losers: impl IntoIterator<Item = ValidatorIndex>,
|
||||
) {
|
||||
PUNISH_VALIDATORS_FOR
|
||||
.with(|r| r.borrow_mut().push((session, validators.into_iter().collect())))
|
||||
PUNISH_VALIDATORS_FOR.with(|r| r.borrow_mut().push((session, losers.into_iter().collect())))
|
||||
}
|
||||
|
||||
fn punish_against_valid(
|
||||
session: SessionIndex,
|
||||
validators: impl IntoIterator<Item = ValidatorIndex>,
|
||||
_: CandidateHash,
|
||||
losers: impl IntoIterator<Item = ValidatorIndex>,
|
||||
) {
|
||||
PUNISH_VALIDATORS_AGAINST
|
||||
.with(|r| r.borrow_mut().push((session, validators.into_iter().collect())))
|
||||
.with(|r| r.borrow_mut().push((session, losers.into_iter().collect())))
|
||||
}
|
||||
|
||||
fn punish_inconclusive(
|
||||
session: SessionIndex,
|
||||
validators: impl IntoIterator<Item = ValidatorIndex>,
|
||||
) {
|
||||
PUNISH_VALIDATORS_INCONCLUSIVE
|
||||
.with(|r| r.borrow_mut().push((session, validators.into_iter().collect())))
|
||||
fn initializer_initialize(_now: BlockNumber) -> Weight {
|
||||
Weight::zero()
|
||||
}
|
||||
|
||||
fn initializer_finalize() {}
|
||||
|
||||
fn initializer_on_new_session(_: SessionIndex) {}
|
||||
}
|
||||
|
||||
impl crate::scheduler::Config for Test {}
|
||||
|
||||
Reference in New Issue
Block a user