github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/spec/01_concepts.md (about)

     1  <!--
     2  order: 1
     3  -->
     4  
     5  # Concepts
     6  
     7  ## States
     8  
     9  At any given time, there are any number of validators registered in the state
    10  machine. Each block, the top `MaxValidators` (defined by `x/staking`) validators
    11  who are not jailed become _bonded_, meaning that they may propose and vote on
    12  blocks. Validators who are _bonded_ are _at stake_, meaning that part or all of
    13  their stake and their delegators' stake is at risk if they commit a protocol fault.
    14  
    15  For each of these validators we keep a `ValidatorSigningInfo` record that contains
    16  information partaining to validator's liveness and other infraction related
    17  attributes.
    18  
    19  ## Tombstone Caps
    20  
    21  In order to mitigate the impact of initially likely categories of non-malicious
    22  protocol faults, the Cosmos Hub implements for each validator
    23  a _tombstone_ cap, which only allows a validator to be slashed once for a double
    24  sign fault. For example, if you misconfigure your HSM and double-sign a bunch of
    25  old blocks, you'll only be punished for the first double-sign (and then immediately tombstombed). This will still be quite expensive and desirable to avoid, but tombstone caps
    26  somewhat blunt the economic impact of unintentional misconfiguration.
    27  
    28  Liveness faults do not have caps, as they can't stack upon each other. Liveness bugs are "detected" as soon as the infraction occurs, and the validators are immediately put in jail, so it is not possible for them to commit multiple liveness faults without unjailing in between.
    29  
    30  ## Infraction Timelines
    31  
    32  To illustrate how the `x/slashing` module handles submitted evidence through
    33  Tendermint consensus, consider the following examples:
    34  
    35  **Definitions**:
    36  
    37  _[_ : timeline start  
    38  _]_ : timeline end  
    39  _C<sub>n</sub>_ : infraction `n` committed  
    40  _D<sub>n</sub>_ : infraction `n` discovered  
    41  _V<sub>b</sub>_ : validator bonded  
    42  _V<sub>u</sub>_ : validator unbonded
    43  
    44  ### Single Double Sign Infraction
    45  
    46  <----------------->
    47  [----------C<sub>1</sub>----D<sub>1</sub>,V<sub>u</sub>-----]
    48  
    49  A single infraction is committed then later discovered, at which point the
    50  validator is unbonded and slashed at the full amount for the infraction.
    51  
    52  ### Multiple Double Sign Infractions
    53  
    54  <--------------------------->
    55  [----------C<sub>1</sub>--C<sub>2</sub>---C<sub>3</sub>---D<sub>1</sub>,D<sub>2</sub>,D<sub>3</sub>V<sub>u</sub>-----]
    56  
    57  Multiple infractions are committed and then later discovered, at which point the
    58  validator is jailed and slashed for only one infraction. Because the validator
    59  is also tombstoned, they can not rejoin the validator set.