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