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:
Parameters | Testnet Value | Mainnet Value |
---|---|---|
downtime_jail_duration | 600s | 600s |
min_signed_per_window | 0.05 | 0.05 |
signed_blocks_window | 35000 | 35000 |
slash_fraction_double_sign | 0.05 | 0.05 |
slash_fraction_downtime | 0.0001 | 0.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 currentsigned_blocks_window
, they are jailed and may face slashing penalties depending onslash_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