diff --git a/app/baseapp.go b/app/baseapp.go index 8b090521b..d023fbd84 100644 --- a/app/baseapp.go +++ b/app/baseapp.go @@ -716,7 +716,7 @@ func (app *BaseApp) runTx(mode RunTxMode, txBytes []byte, tx sdk.Tx) (result sdk return err.Result() } - if mode == RunTxModeDeliver { + if mode == RunTxModeDeliver { app.deliverState.ctx = app.deliverState.ctx.WithCheckValidNum(app.deliverState.ctx.CheckValidNum() + 1) } diff --git a/modules/slashing/keeper.go b/modules/slashing/keeper.go index f027776b9..87d758d2a 100644 --- a/modules/slashing/keeper.go +++ b/modules/slashing/keeper.go @@ -5,9 +5,9 @@ import ( "time" "github.com/irisnet/irishub/codec" - sdk "github.com/irisnet/irishub/types" "github.com/irisnet/irishub/modules/params" stake "github.com/irisnet/irishub/modules/stake/types" + sdk "github.com/irisnet/irishub/types" "github.com/tendermint/tendermint/crypto" ) @@ -201,7 +201,7 @@ func (k Keeper) handleProposerCensorship(ctx sdk.Context, addr crypto.Address, i // ABCI, and now received as evidence. // The revisedFraction (which is the new fraction to be slashed) is passed // in separately to separately slash unbonding and rebonding delegations. - tags = k.validatorSet.Slash(ctx, consAddr, distributionHeight, validator.GetPower().RoundInt64(),k.SlashFractionCensorship(ctx)) + tags = k.validatorSet.Slash(ctx, consAddr, distributionHeight, validator.GetPower().RoundInt64(), k.SlashFractionCensorship(ctx)) // Jail validator if not already jailed if !validator.GetJailed() { diff --git a/modules/slashing/params.go b/modules/slashing/params.go index 36b14413c..1b9f38682 100644 --- a/modules/slashing/params.go +++ b/modules/slashing/params.go @@ -3,10 +3,10 @@ package slashing import ( "time" + "fmt" "github.com/irisnet/irishub/codec" "github.com/irisnet/irishub/modules/params" sdk "github.com/irisnet/irishub/types" - "fmt" "strconv" ) @@ -192,29 +192,29 @@ func (p *Params) StringFromBytes(cdc *codec.Codec, key string, bytes []byte) (st // Default parameters used by Iris Hub func DefaultParams() Params { return Params{ - MaxEvidenceAge: sdk.Day, - DoubleSignJailDuration: 5 * sdk.Day, - SignedBlocksWindow: 20000, - DowntimeJailDuration: 2 * sdk.Day, - MinSignedPerWindow: sdk.NewDecWithPrec(5, 1), + MaxEvidenceAge: sdk.Day, + DoubleSignJailDuration: 5 * sdk.Day, + SignedBlocksWindow: 20000, + DowntimeJailDuration: 2 * sdk.Day, + MinSignedPerWindow: sdk.NewDecWithPrec(5, 1), SlashFractionDoubleSign: sdk.NewDecWithPrec(1, 2), - SlashFractionDowntime: sdk.NewDecWithPrec(5, 3), + SlashFractionDowntime: sdk.NewDecWithPrec(5, 3), SlashFractionCensorship: sdk.NewDecWithPrec(2, 2), - CensorshipJailDuration: 7 * sdk.Day, + CensorshipJailDuration: 7 * sdk.Day, } } func DefaultParamsForTestnet() Params { return Params{ - MaxEvidenceAge: 10 * time.Minute, - DoubleSignJailDuration: 60 * 5 * time.Second, - SignedBlocksWindow: 100, - DowntimeJailDuration: 60 * 10 * time.Second, - MinSignedPerWindow: sdk.NewDecWithPrec(5, 1), + MaxEvidenceAge: 10 * time.Minute, + DoubleSignJailDuration: 60 * 5 * time.Second, + SignedBlocksWindow: 100, + DowntimeJailDuration: 60 * 10 * time.Second, + MinSignedPerWindow: sdk.NewDecWithPrec(5, 1), SlashFractionDoubleSign: sdk.NewDec(1).Quo(sdk.NewDec(20)), - SlashFractionDowntime: sdk.NewDec(1).Quo(sdk.NewDec(100)), + SlashFractionDowntime: sdk.NewDec(1).Quo(sdk.NewDec(100)), SlashFractionCensorship: sdk.NewDecWithPrec(2, 2), - CensorshipJailDuration: 60 * 7 * time.Second, + CensorshipJailDuration: 60 * 7 * time.Second, } } @@ -258,21 +258,21 @@ func validateMaxEvidenceAge(p time.Duration) sdk.Error { if p < sdk.Day { return sdk.NewError(params.DefaultCodespace, params.CodeInvalidSlashParams, fmt.Sprintf("Slash MaxEvidenceAge [%s] should be between [1day,) ", p.String())) } - } else if p < 10 * time.Minute { + } else if p < 10*time.Minute { return sdk.NewError(params.DefaultCodespace, params.CodeInvalidSlashParams, fmt.Sprintf("Slash MaxEvidenceAge [%s] should be between [10min,) ", p.String())) } return nil } func validateJailDuration(p time.Duration) sdk.Error { - if p <= 0 || p >= 4 * sdk.Week { + if p <= 0 || p >= 4*sdk.Week { return sdk.NewError(params.DefaultCodespace, params.CodeInvalidSlashParams, fmt.Sprintf("Slash DoubleSignJailDuration and DowntimeJailDuration [%s] should be between (0, 4week) ", p.String())) } return nil } func validateCensorshipJailDuration(p time.Duration) sdk.Error { - if p <= 0 || p >= 4 * sdk.Week { + if p <= 0 || p >= 4*sdk.Week { return sdk.NewError(params.DefaultCodespace, params.CodeInvalidSlashParams, fmt.Sprintf("Slash CensorshipJailDuration should be between (0, 4week) ", p.String())) } return nil @@ -312,6 +312,7 @@ func validateSlashFractionCensorship(p sdk.Dec) sdk.Error { } return nil } + //______________________________________________________________________ // get inflation params from the global param store @@ -380,4 +381,4 @@ func (k Keeper) SlashFractionCensorship(ctx sdk.Context) (res sdk.Dec) { func (k Keeper) CensorshipUnbondDuration(ctx sdk.Context) (res time.Duration) { k.paramspace.Get(ctx, keyCensorshipJailDuration, &res) return -} \ No newline at end of file +} diff --git a/modules/slashing/tick.go b/modules/slashing/tick.go index 518b4e1db..7e20c100c 100644 --- a/modules/slashing/tick.go +++ b/modules/slashing/tick.go @@ -42,7 +42,7 @@ func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, sk Keeper) (tags } // slashing end block functionality -func EndBlocker(ctx sdk.Context,req abci.RequestEndBlock, sk Keeper) (tags sdk.Tags) { +func EndBlocker(ctx sdk.Context, req abci.RequestEndBlock, sk Keeper) (tags sdk.Tags) { // Tag the height heightBytes := make([]byte, 8) @@ -56,4 +56,4 @@ func EndBlocker(ctx sdk.Context,req abci.RequestEndBlock, sk Keeper) (tags sdk.T tags = tags.AppendTags(proposalCensorshipTag) } return -} \ No newline at end of file +} diff --git a/modules/stake/keeper/slash.go b/modules/stake/keeper/slash.go index 1cae045e9..2aaf931f0 100644 --- a/modules/stake/keeper/slash.go +++ b/modules/stake/keeper/slash.go @@ -3,8 +3,8 @@ package keeper import ( "fmt" - sdk "github.com/irisnet/irishub/types" "github.com/irisnet/irishub/modules/stake/types" + sdk "github.com/irisnet/irishub/types" ) const ( @@ -17,6 +17,7 @@ const ( // slash-validator-redelegation-[validatorAddrDst]-[validatorAddrSrc]-[delegatorAddr] SlashValidatorRedelegation = "slash-validator-redelegation-%s-%s-%s" ) + // Slash a validator for an infraction committed at a known height // Find the contributing stake at that height and burn the specified slashFactor // of it, updating unbonding delegation & redelegations appropriately @@ -114,7 +115,7 @@ func (k Keeper) Slash(ctx sdk.Context, consAddr sdk.ConsAddress, infractionHeigh // cannot decrease balance below zero tokensToBurn := sdk.MinDec(remainingSlashAmount, validator.Tokens) tokensToBurn = sdk.MaxDec(tokensToBurn, sdk.ZeroDec()) // defensive. - tags = tags.AppendTag(fmt.Sprintf(SlashValidator, validator.OperatorAddr),[]byte(tokensToBurn.String())) + tags = tags.AppendTag(fmt.Sprintf(SlashValidator, validator.OperatorAddr), []byte(tokensToBurn.String())) // Deduct from validator's bonded tokens and update the validator. // The deducted tokens are returned to pool.LooseTokens. validator = k.RemoveValidatorTokens(ctx, validator, tokensToBurn) @@ -122,7 +123,7 @@ func (k Keeper) Slash(ctx sdk.Context, consAddr sdk.ConsAddress, infractionHeigh panic("slash decimal token in redelegation") } k.bankKeeper.DecreaseLoosenToken(ctx, sdk.Coins{sdk.Coin{ - Denom: types.StakeDenom, + Denom: types.StakeDenom, Amount: tokensToBurn.TruncateInt(), }}) // Log that a slash occurred! @@ -187,10 +188,10 @@ func (k Keeper) slashUnbondingDelegation(ctx sdk.Context, unbondingDelegation ty // Update unbonding delegation if necessary if !unbondingSlashAmount.IsZero() { unbondingDelegation.Balance.Amount = unbondingDelegation.Balance.Amount.Sub(unbondingSlashAmount) - tags = tags.AppendTag(fmt.Sprintf(SlashUnbondindDelegation, unbondingDelegation.DelegatorAddr, unbondingDelegation.ValidatorAddr),[]byte(unbondingSlashAmount.String())) + tags = tags.AppendTag(fmt.Sprintf(SlashUnbondindDelegation, unbondingDelegation.DelegatorAddr, unbondingDelegation.ValidatorAddr), []byte(unbondingSlashAmount.String())) k.SetUnbondingDelegation(ctx, unbondingDelegation) k.bankKeeper.DecreaseLoosenToken(ctx, sdk.Coins{sdk.Coin{ - Denom: types.StakeDenom, + Denom: types.StakeDenom, Amount: unbondingSlashAmount, }}) } @@ -254,7 +255,7 @@ func (k Keeper) slashRedelegation(ctx sdk.Context, validator types.Validator, re } tags = tags.AppendTag(fmt.Sprintf(SlashValidatorRedelegation, redelegation.ValidatorDstAddr, redelegation.ValidatorSrcAddr, redelegation.DelegatorAddr), []byte(tokensToBurn.String())) k.bankKeeper.DecreaseLoosenToken(ctx, sdk.Coins{sdk.Coin{ - Denom: types.StakeDenom, + Denom: types.StakeDenom, Amount: tokensToBurn.TruncateInt(), }}) }