diff --git a/docs/spec/slashing/README.md b/docs/spec/slashing/README.md new file mode 100644 index 000000000..23e5e604a --- /dev/null +++ b/docs/spec/slashing/README.md @@ -0,0 +1,29 @@ +# Slashing module specification + +## Abstract + +This section specifies the slashing module of the Cosmos SDK, which implements functionality +first outlined in the [Cosmos Whitepaper](https://cosmos.network/about/whitepaper) in June 2016. + +The slashing module enables Cosmos SDK-based blockchains to disincentivize any attributable action +by a protocol-recognized actor with value at stake by "slashing" them: burning some amount of their +stake - and possibly also removing their ability to vote on future blocks for a period of time. + +This module will be used by the Cosmos Hub, the first hub in the Cosmos ecosystem. + +## Contents + +1. **[State](state.md)** + 1. SigningInfo + 1. SlashingPeriod +1. **[State Machine](state-machine.md)** + 1. Transactions + 1. Unjail + 1. Interactions + 1. Validator Bonded + 1. Validator Slashed + 1. Validator Unjailed + 1. Slashing Period Cleanup +1. **[Begin Block](begin-block.md)** + 1. Evidence handling & slashing + 1. Uptime/downtime tracking & slashing diff --git a/docs/spec/slashing/end_block.md b/docs/spec/slashing/begin-block.md similarity index 95% rename from docs/spec/slashing/end_block.md rename to docs/spec/slashing/begin-block.md index 3eec27372..bdd7d9692 100644 --- a/docs/spec/slashing/end_block.md +++ b/docs/spec/slashing/begin-block.md @@ -1,12 +1,13 @@ -# End-Block +# Begin-Block -## Slashing +## Evidence handling & slashing Tendermint blocks can include [Evidence](https://github.com/tendermint/tendermint/blob/develop/docs/spec/blockchain/blockchain.md#evidence), which indicates that a validator committed malicious behaviour. The relevant information is forwarded to the application as [ABCI -Evidence](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto#L259), so the validator an be accordingly punished. +Evidence](https://github.com/tendermint/tendermint/blob/develop/abci/types/types.proto#L259) in `abci.RequestBeginBlock` +so that the validator an be accordingly punished. For some `evidence` to be valid, it must satisfy: @@ -75,7 +76,7 @@ This ensures that offending validators are punished the same amount whether they act as a single validator with X stake or as N validators with collectively X stake. -## Automatic Unbonding +## Uptime/downtime tracking & slashing At the beginning of each block, we update the signing info for each validator and check if they should be automatically unbonded: