feat: set slashing mode in genesis config (#264)

In this PR we set the slashing mode value in the genesis config. For the
3 different runtime we specify the slashing mode : `mainnet/testnet` is
set to `Disabled` and for `stagenet` to `LogOnly`.

Co-authored-by: Steve Degosserie <723552+stiiifff@users.noreply.github.com>
This commit is contained in:
undercover-cactus 2025-10-29 17:24:49 +01:00 committed by GitHub
parent 70a505e9d8
commit 7c8227f1ab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 36 additions and 1 deletions

1
operator/Cargo.lock generated
View file

@ -9479,6 +9479,7 @@ dependencies = [
"pallet-timestamp",
"parity-scale-codec",
"scale-info",
"serde",
"snowbridge-core 0.3.1",
"snowbridge-outbound-queue-primitives",
"sp-core",

View file

@ -27,6 +27,7 @@ sp-core = { workspace = true }
sp-runtime = { workspace = true }
pallet-external-validators = { workspace = true }
sp-staking = { workspace = true }
serde = { features = ["alloc", "derive"], workspace = true }
[dev-dependencies]
pallet-timestamp = { workspace = true, features = ["std"] }

View file

@ -186,7 +186,9 @@ pub mod pallet {
}
#[apply(derive_storage_traits)]
#[derive(MaxEncodedLen, DecodeWithMemTracking, Default)]
#[derive(
MaxEncodedLen, DecodeWithMemTracking, serde::Deserialize, serde::Serialize, Default,
)]
pub enum SlashingModeOption {
#[default]
Enabled,
@ -235,6 +237,22 @@ pub mod pallet {
#[pallet::storage]
pub type SlashingMode<T: Config> = StorageValue<_, SlashingModeOption, ValueQuery>;
#[pallet::genesis_config]
#[derive(frame_support::DefaultNoBound)]
pub struct GenesisConfig<T: Config> {
// Slashing mode
pub slashing_mode: SlashingModeOption,
#[serde(skip)]
pub _config: PhantomData<T>,
}
#[pallet::genesis_build]
impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
<SlashingMode<T>>::put(self.slashing_mode.clone());
}
}
#[pallet::call]
impl<T: Config> Pallet<T> {
/// Cancel a slash that was deferred for a later era

View file

@ -6,6 +6,7 @@ use crate::{
use alloc::{format, vec, vec::Vec};
use fp_evm::GenesisAccount;
use hex_literal::hex;
use pallet_external_validator_slashes::SlashingModeOption;
use pallet_im_online::sr25519::AuthorityId as ImOnlineId;
use serde_json::Value;
use sp_consensus_babe::AuthorityId as BabeId;
@ -106,6 +107,10 @@ fn testnet_genesis(
phantom: Default::default(),
members: treasury_council_members,
},
external_validators_slashes: pallet_external_validator_slashes::GenesisConfig {
slashing_mode: SlashingModeOption::Disabled,
..Default::default()
},
..Default::default()
};

View file

@ -6,6 +6,7 @@ use crate::{
use alloc::{format, vec, vec::Vec};
use fp_evm::GenesisAccount;
use hex_literal::hex;
use pallet_external_validator_slashes::SlashingModeOption;
use pallet_im_online::sr25519::AuthorityId as ImOnlineId;
use serde_json::Value;
use sp_consensus_babe::AuthorityId as BabeId;
@ -106,6 +107,10 @@ fn testnet_genesis(
phantom: Default::default(),
members: treasury_council_members,
},
external_validators_slashes: pallet_external_validator_slashes::GenesisConfig {
slashing_mode: SlashingModeOption::LogOnly,
..Default::default()
},
..Default::default()
};

View file

@ -6,6 +6,7 @@ use crate::{
use alloc::{format, vec, vec::Vec};
use fp_evm::GenesisAccount;
use hex_literal::hex;
use pallet_external_validator_slashes::SlashingModeOption;
use pallet_im_online::sr25519::AuthorityId as ImOnlineId;
use serde_json::Value;
use sp_consensus_babe::AuthorityId as BabeId;
@ -106,6 +107,10 @@ fn testnet_genesis(
phantom: Default::default(),
members: treasury_council_members,
},
external_validators_slashes: pallet_external_validator_slashes::GenesisConfig {
slashing_mode: SlashingModeOption::Disabled,
..Default::default()
},
..Default::default()
};