What is slashing/jailing?
This article details how slashing & jailing functions on the Decentr network which is based on the Cosmos SDK. For a more indepth view please read here.
TL;DR: If a validator looses sync with the blockchain, they are punished (slashed) and delegator rewards are lost (burnt). This is an incentive for the validator to monitor their node, and use good infrastructure.
Slashing enables Decentr to disincentivize any attributable action by a protocol-recognized actor with value at stake by penalizing them (“slashing”).
In a blockchain, validators are the active actors that ensure the integrity and security of the network and its asset transactions. Their tasks consist — in a nutshell — of validating the transactions, voting on the next state of the blockchain and committing it when a consensus is reached.
To maintain a high level of security and performance on the network, a validator is supposed to keep signing and committing blocks permanently. However, a validator can fail to commit blocks due to multiple reasons, such as a connection loss or a server failure. To protect the network, and prevent any performance drop, an inactive validator needs to be eliminated from the validator list. In Cosmos based chains, and thus in Decentr, this process of temporarily eliminating a validator is called “Jailing”. Depending on the infrastructure used by the operator (redundant connection, alert systems…) downtimes are very likely to occur, hence, a higher risk of being jailed might exist.
On Decentr, a validator is jailed if the validator fails to validate at least 50% (min_signed_per_window) of the last 100 (signed_blocks_window) blocks. When jailed, the validator’s total stake (self delegated and delegated by others) is slashed by 0.25%. These configurations can be found at https://zeus.mainnet.decentr.xyz/slashing/parameters
A jailed validator is trapped for 1 minute as determined by the downtime_jail_duration parameter. When this jail period elapses, the validator is allowed to rejoin the validation process. However, rejoining is not automatic and needs to be triggered by a manual transaction called unjail. To broadcast an unjail transaction, an operator can use the decentrcli as follows:
decentrcli tx slashing unjail — from <account>
— broadcast-mode block — gas=auto \
— gas-adjustment=1.4 \
— gas-prices=”0.025udec” — chain-id=mainnet-1 \
Despite the ease of unjailing, getting jailed can have severe economic impact on the validators as it can lead — beside the slashing — the delegators to abandon them and switch their delegations to other validators in order to secure their funds. Therefore, a validator needs to ensure they are aware of any performance anomaly before their validator is jailed. We encourage validator operators to use an active monitoring solution that periodically probes the blockchain and alerts them in case of missed blocks.
Double signing occurs when a validating entity (private key) submits two signed messages for the same block. In this case, stake penalizes by 1.25% (slash_fraction_double_sign) and the validator loses the right to propose blocks and earn rewards without an ability to unjail. All delegators of this validator enter the unbonding period, which lasts 21 days.