From 997ba7bd2ed43908b2944393b33693273d4e5fb7 Mon Sep 17 00:00:00 2001 From: Prathamesh Musale Date: Fri, 16 Aug 2024 10:34:54 +0530 Subject: [PATCH] Integrate slashing module in the app --- app/app.go | 4 ++++ app/app.yaml | 7 +++++-- app/export.go | 13 +++++++++++++ go.mod | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/app.go b/app/app.go index b320a5e4..ae4ae6ba 100644 --- a/app/app.go +++ b/app/app.go @@ -34,6 +34,7 @@ import ( distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/cosmos/cosmos-sdk/x/genutil" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects @@ -48,6 +49,7 @@ import ( _ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects + _ "github.com/cosmos/cosmos-sdk/x/slashing" // import for side-effects _ "github.com/cosmos/cosmos-sdk/x/staking" // import for side-effects ) @@ -76,6 +78,7 @@ type LaconicApp struct { AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper StakingKeeper *stakingkeeper.Keeper + SlashingKeeper slashingkeeper.Keeper DistrKeeper distrkeeper.Keeper CrisisKeeper *crisiskeeper.Keeper ConsensusParamsKeeper consensuskeeper.Keeper @@ -142,6 +145,7 @@ func NewLaconicApp( &app.AccountKeeper, &app.BankKeeper, &app.StakingKeeper, + &app.SlashingKeeper, &app.DistrKeeper, &app.CrisisKeeper, &app.ConsensusParamsKeeper, diff --git a/app/app.yaml b/app/app.yaml index 3d05d67c..56fcbe31 100644 --- a/app/app.yaml +++ b/app/app.yaml @@ -6,11 +6,11 @@ modules: # During begin block slashing happens after distr.BeginBlocker so that # there is nothing left over in the validator fee pool, so as to keep the CanWithdrawInvariant invariant. # NOTE: staking module is required if HistoricalEntries param > 0 - begin_blockers: [distribution, staking] + begin_blockers: [distribution, slashing, staking] end_blockers: [crisis, staking, auction, registry] # NOTE: The genutils module must occur after staking so that pools are properly initialized with tokens from genesis accounts. # NOTE: The genutils module must also occur after auth so that it can access the params from auth. - init_genesis: [auth, bank, distribution, staking, crisis, genutil, auction, bond, registry, onboarding] + init_genesis: [auth, bank, distribution, staking, slashing, crisis, genutil, auction, bond, registry, onboarding] override_store_keys: - module_name: auth kv_store_key: acc @@ -39,6 +39,9 @@ modules: - name: staking config: "@type": cosmos.staking.module.v1.Module + - name: slashing + config: + "@type": cosmos.slashing.module.v1.Module - name: distribution config: "@type": cosmos.distribution.module.v1.Module diff --git a/app/export.go b/app/export.go index ad1b8129..f38a3098 100644 --- a/app/export.go +++ b/app/export.go @@ -10,6 +10,7 @@ import ( tmproto "github.com/cometbft/cometbft/proto/tendermint/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" "github.com/cosmos/cosmos-sdk/x/staking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -221,4 +222,16 @@ func (app *LaconicApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddr if err != nil { log.Fatal(err) } + + /* Handle slashing state. */ + + // reset start height on signing infos + app.SlashingKeeper.IterateValidatorSigningInfos( + ctx, + func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { + info.StartHeight = 0 + app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) + return false + }, + ) } diff --git a/go.mod b/go.mod index c4befb72..a41ec79a 100644 --- a/go.mod +++ b/go.mod @@ -61,6 +61,7 @@ require ( github.com/agnivade/levenshtein v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/btcsuite/btcd/btcutil v1.1.5 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect -- 2.45.2