github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/spec/README.md (about) 1 <!-- 2 order: 0 3 title: Evidence Overview 4 parent: 5 title: "evidence" 6 --> 7 8 # `x/evidence` 9 10 ## Table of Contents 11 12 <!-- TOC --> 13 14 1. **[Concepts](01_concepts.md)** 15 2. **[State](02_state.md)** 16 3. **[Messages](03_messages.md)** 17 4. **[Events](04_events.md)** 18 5. **[Params](05_params.md)** 19 6. **[BeginBlock](06_begin_block.md)** 20 21 ## Abstract 22 23 `x/evidence` is an implementation of a Cosmos SDK module, per [ADR 009](./../../../docs/architecture/adr-009-evidence-module.md), 24 that allows for the submission and handling of arbitrary evidence of misbehavior such 25 as equivocation and counterfactual signing. 26 27 The evidence module differs from standard evidence handling which typically expects the 28 underlying consensus engine, e.g. Tendermint, to automatically submit evidence when 29 it is discovered by allowing clients and foreign chains to submit more complex evidence 30 directly. 31 32 All concrete evidence types must implement the `Evidence` interface contract. Submitted 33 `Evidence` is first routed through the evidence module's `Router` in which it attempts 34 to find a corresponding registered `Handler` for that specific `Evidence` type. 35 Each `Evidence` type must have a `Handler` registered with the evidence module's 36 keeper in order for it to be successfully routed and executed. 37 38 Each corresponding handler must also fulfill the `Handler` interface contract. The 39 `Handler` for a given `Evidence` type can perform any arbitrary state transitions 40 such as slashing, jailing, and tombstoning.