Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
3 changes: 2 additions & 1 deletion tests/integration/evidence/keeper/infraction_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
3 changes: 2 additions & 1 deletion tests/integration/slashing/keeper/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions x/slashing/keeper/msg_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
14 changes: 12 additions & 2 deletions x/slashing/types/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
}

Expand All @@ -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
}
Loading