Skip to main content
Version: 1.0.0

Slashing Module

ZIGChain Slashing Module is based on the Cosmos SDK - Slashing Module but with the specific parameters that you can find in the Slashing Parameters section.

If you want to understand more about the Consensus and Slashing in ZIGChain, you can check the Validators FAQ.

If you are looking for just to have the fast commands you can use the Validator Quick Sheet.

Slashing Parameters

The slashing module in ZIGChain has set up the following parameters for Mainnet:

ParametersTestnet ValueMainnet Value
downtime_jail_duration600s600s
min_signed_per_window0.050.05
signed_blocks_window3500035000
slash_fraction_double_sign0.050.05
slash_fraction_downtime0.00010.0001

Parameters Overview

downtime_jail_duration

Description: Specifies the amount of time a validator must remain jailed after being slashed for downtime before they can submit an unjail request.

  • If a validator fails to meet the minimum block signing requirement (min_signed_per_window), they are jailed for the specified duration.
  • Once the jail time is served, the validator must manually submit an unjail transaction to re-enter the active validator set.

Default: 600s
Note: The downtime_jail_duration aims to provide a sufficient penalty without overly disrupting the validator's operations. This encourages validators to maintain high availability while allowing them to quickly recover from temporary issues.


min_signed_per_window

Description: Defines the minimum fraction of blocks a validator is required to sign within a given window to avoid slashing.

  • If a validator signs less than min_signed_per_window of the blocks in the current signed_blocks_window, they are jailed and may face slashing penalties depending on slash_fraction_downtime.

Example: For a signed_blocks_window of 100 blocks and min_signed_per_window of 0.5 (50%), if a validator signs fewer than 50 blocks, they will be penalized.

Default: 0.5 (50%)


signed_blocks_window

Description: Defines the number of recent blocks used to assess a validator's performance. If a validator fails to meet the min_signed_per_window requirement within this window, they are penalized.

  • This is a rolling window, meaning it continuously updates as new blocks are added.
  • A shorter window makes slashing penalties more responsive to validator behavior, while a longer window provides more tolerance for occasional missed blocks.

Default: 100 blocks


slash_fraction_double_sign

Description: The percentage of a validator's stake (including delegator's stake) that is slashed if they are found guilty of double-signing (i.e., signing two conflicting blocks at the same height).

Example: If a validator has 10,000 ZIG tokens bonded, a double-signing event would result in the loss of 500 tokens (5% of their stake) if slash_fraction_double_sign = 0.05 (5%).

Default: 0.05 (5%)


slash_fraction_downtime

Description: The fraction of a validator's stake that is slashed for failing to sign blocks due to downtime.

  • Downtime is considered less severe than double-signing; hence, the penalty is lower. However, consistent downtime can still degrade network performance.

Example: A validator with 10,000 ZIG tokens bonded would lose 100 tokens (1% of their stake) if penalized for downtime.

Default: 0.01 (1%)


Slashing CLI Quick Sheet

Check when your validator will be unjailed:

VALIDATOR_CON_ADDRESS=$(zigchaind comet show-address)
zigchaind query slashing signing-info $VALIDATOR_CON_ADDRESS
zigchaind query slashing signing-info $(zigchaind tendermint show-validator) --chain-id=zigchain

Unjail your validator:

zigchaind tx slashing unjail --chain-id="zigchain" \
--gas="auto" \
--gas-prices="0.00025uzig" \
--from=zuser1 \
--gas-adjustment=1.5

Get your slashing info and unjail period end for all validators:

zigchaind query slashing signing-infos

Get slashing params:

zigchaind query slashing params

References