# Concepts

### States <a href="#states" id="states"></a>

At any given time, there are any number of validators registered in the state machine. Each block, the top `MaxValidators` (defined by `x/staking`) validators who are not jailed become *bonded*, meaning that they may propose and vote on blocks. Validators who are *bonded* are *at stake*, meaning that part or all of their stake and their delegators' stake is at risk if they commit a protocol fault.

For each of these validators we keep a `ValidatorSigningInfo` record that contains information partaining to validator's liveness and other infraction related attributes.

### Tombstone Caps <a href="#tombstone-caps" id="tombstone-caps"></a>

In order to mitigate the impact of initially likely categories of non-malicious protocol faults, the Cosmos Hub implements for each validator a *tombstone* cap, which only allows a validator to be slashed once for a double sign fault.&#x20;

For example, if you misconfigure your HSM and double-sign a bunch of 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 somewhat blunt the economic impact of unintentional misconfiguration.

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.

### Infraction Timelines <a href="#infraction-timelines" id="infraction-timelines"></a>

To illustrate how the `x/slashing` module handles submitted evidence through Tendermint consensus, consider the following examples:

**Definitions**:

*\[* : timeline start\
\&#xNAN;*]* : timeline end\
\&#xNAN;*Cn* : infraction `n` committed\
\&#xNAN;*Dn* : infraction `n` discovered\
\&#xNAN;*Vb* : validator bonded\
\&#xNAN;*Vu* : validator unbonded

#### Single Double Sign Infraction <a href="#single-double-sign-infraction" id="single-double-sign-infraction"></a>

\[----------C1----D1,Vu-----]

A single infraction is committed then later discovered, at which point the validator is unbonded and slashed at the full amount for the infraction.

#### Multiple Double Sign Infractions <a href="#multiple-double-sign-infractions" id="multiple-double-sign-infractions"></a>

\[----------C1--C2---C3---D1,D2,D3Vu-----]

Multiple infractions are committed and then later discovered, at which point the validator is jailed and slashed for only one infraction. Because the validator is also tombstoned, they can not rejoin the validator set.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.blockxnet.com/protocol-developers/modules/slashing/concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
