github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/evidence/spec/README.md (about)

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