github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/doc.go (about)

     1  /*
     2  Package evidence implements a Cosmos SDK module, per ADR 009, that allows for the
     3  submission and handling of arbitrary evidence of misbehavior.
     4  
     5  All concrete evidence types must implement the Evidence interface contract. Submitted
     6  evidence is first routed through the evidence module's Router in which it attempts
     7  to find a corresponding Handler for that specific evidence type. Each evidence type
     8  must have a Handler registered with the evidence module's keeper in order for it
     9  to be successfully executed.
    10  
    11  Each corresponding handler must also fulfill the Handler interface contract. The
    12  Handler for a given Evidence type can perform any arbitrary state transitions
    13  such as slashing, jailing, and tombstoning. This provides developers with great
    14  flexibility in designing evidence handling.
    15  
    16  A full setup of the evidence module may look something as follows:
    17  
    18  	ModuleBasics = module.NewBasicManager(
    19  	  // ...,
    20  	  evidence.AppModuleBasic{},
    21  	)
    22  
    23  	// First, create the keeper
    24  	evidenceKeeper := evidence.NewKeeper(
    25  	  appCodec, keys[evidence.StoreKey], &app.StakingKeeper, app.SlashingKeeper,
    26  	)
    27  
    28  	// Second, create the evidence Handler and register all desired routes.
    29  	evidenceRouter := evidence.NewRouter().
    30  	  AddRoute(evidenceRoute, evidenceHandler).
    31  	  AddRoute(..., ...)
    32  
    33  	evidenceKeeper.SetRouter(evidenceRouter)
    34  
    35  	app.EvidenceKeeper = *evidenceKeeper
    36  
    37  	app.mm = module.NewManager(
    38  	  // ...
    39  	  evidence.NewAppModule(app.EvidenceKeeper),
    40  	)
    41  
    42  	// Remaining application bootstrapping...
    43  */
    44  package evidence