diff --git a/CHANGELOG.md b/CHANGELOG.md index 80b476f25c04..bba74083aef5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,14 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog +## [Unreleased] + +### Bug Fixes + +* (x/slashing) [#1](https://github.com/xrplevm/cosmos-sdk/pull/1) [IF-FINDING-002] Slashing parameters can be modified to unexpected values + +## [v0.50.11-evmos](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.11-evmos) - 2025-01-21 + ## [v0.50.9-evmos](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.50.9-evmos) - 2024-08-07 diff --git a/tests/integration/evidence/keeper/infraction_test.go b/tests/integration/evidence/keeper/infraction_test.go index 0c17797754bf..b42624e55a62 100644 --- a/tests/integration/evidence/keeper/infraction_test.go +++ b/tests/integration/evidence/keeper/infraction_test.go @@ -224,7 +224,8 @@ func TestHandleDoubleSign(t *testing.T) { // tokens should be decreased newTokens := val.GetTokens() - assert.Assert(t, newTokens.LT(oldTokens)) + // NOTE: IF-FINDING-002 Assert that slashed fraction double sign is 0 + assert.Assert(t, newTokens.LTE(oldTokens)) // submit duplicate evidence assert.NilError(t, f.evidenceKeeper.BeginBlocker(ctx)) diff --git a/tests/integration/slashing/keeper/keeper_test.go b/tests/integration/slashing/keeper/keeper_test.go index d43c07f1df85..15c8e7e58a55 100644 --- a/tests/integration/slashing/keeper/keeper_test.go +++ b/tests/integration/slashing/keeper/keeper_test.go @@ -321,7 +321,8 @@ func TestHandleAlreadyJailed(t *testing.T) { assert.Equal(t, stakingtypes.Unbonding, validator.GetStatus()) // validator should have been slashed - resultingTokens := amt.Sub(f.stakingKeeper.TokensFromConsensusPower(f.ctx, 1)) + // NOTE: IF-FINDING-002 Assert that slashed fraction downtime is 0 + resultingTokens := amt.Sub(f.stakingKeeper.TokensFromConsensusPower(f.ctx, 0)) assert.DeepEqual(t, resultingTokens, validator.GetTokens()) // another block missed diff --git a/x/slashing/keeper/msg_server_test.go b/x/slashing/keeper/msg_server_test.go index 682379972d25..f548a0272ab3 100644 --- a/x/slashing/keeper/msg_server_test.go +++ b/x/slashing/keeper/msg_server_test.go @@ -17,10 +17,12 @@ func (s *KeeperTestSuite) TestUpdateParams() { minSignedPerWindow, err := sdkmath.LegacyNewDecFromStr("0.60") require.NoError(err) - slashFractionDoubleSign, err := sdkmath.LegacyNewDecFromStr("0.022") + // NOTE: IF-FINDING-002 Set slash fraction double sign to default value 0 + slashFractionDoubleSign, err := sdkmath.LegacyNewDecFromStr("0") require.NoError(err) - slashFractionDowntime, err := sdkmath.LegacyNewDecFromStr("0.0089") + // NOTE: IF-FINDING-002 Set slash fraction downtime to default value 0 + slashFractionDowntime, err := sdkmath.LegacyNewDecFromStr("0") require.NoError(err) invalidVal, err := sdkmath.LegacyNewDecFromStr("-1") diff --git a/x/slashing/types/params.go b/x/slashing/types/params.go index 2003922d6d2f..efd1b0358c9a 100644 --- a/x/slashing/types/params.go +++ b/x/slashing/types/params.go @@ -15,8 +15,8 @@ const ( var ( DefaultMinSignedPerWindow = math.LegacyNewDecWithPrec(5, 1) - DefaultSlashFractionDoubleSign = math.LegacyNewDec(1).Quo(math.LegacyNewDec(20)) - DefaultSlashFractionDowntime = math.LegacyNewDec(1).Quo(math.LegacyNewDec(100)) + DefaultSlashFractionDoubleSign = math.LegacyNewDec(0) + DefaultSlashFractionDowntime = math.LegacyNewDec(0) ) // NewParams creates a new Params object @@ -125,6 +125,11 @@ func validateSlashFractionDoubleSign(i interface{}) error { return fmt.Errorf("double sign slash fraction too large: %s", v) } + // NOTE: IF-FINDING-002 Assert that the double sign slash fraction is zero + if !v.IsZero() { + return fmt.Errorf("double sign slash fraction must be zero: %s", v) + } + return nil } @@ -144,5 +149,10 @@ func validateSlashFractionDowntime(i interface{}) error { return fmt.Errorf("downtime slash fraction too large: %s", v) } + // NOTE: IF-FINDING-002 Assert that the downtime slash fraction is zero + if !v.IsZero() { + return fmt.Errorf("downtime sign slash fraction must be zero: %s", v) + } + return nil }