github.com/Finschia/finschia-sdk@v0.48.1/x/evidence/abci.go (about) 1 package evidence 2 3 import ( 4 "fmt" 5 "time" 6 7 ocabci "github.com/Finschia/ostracon/abci/types" 8 abci "github.com/tendermint/tendermint/abci/types" 9 10 "github.com/Finschia/finschia-sdk/telemetry" 11 sdk "github.com/Finschia/finschia-sdk/types" 12 "github.com/Finschia/finschia-sdk/x/evidence/keeper" 13 "github.com/Finschia/finschia-sdk/x/evidence/types" 14 ) 15 16 // BeginBlocker iterates through and handles any newly discovered evidence of 17 // misbehavior submitted by Tendermint. Currently, only equivocation is handled. 18 func BeginBlocker(ctx sdk.Context, req ocabci.RequestBeginBlock, k keeper.Keeper) { 19 defer telemetry.ModuleMeasureSince(types.ModuleName, time.Now(), telemetry.MetricKeyBeginBlocker) 20 21 for _, tmEvidence := range req.ByzantineValidators { 22 switch tmEvidence.Type { 23 // It's still ongoing discussion how should we treat and slash attacks with 24 // premeditation. So for now we agree to treat them in the same way. 25 case abci.EvidenceType_DUPLICATE_VOTE, abci.EvidenceType_LIGHT_CLIENT_ATTACK: 26 evidence := types.FromABCIEvidence(tmEvidence) 27 k.HandleEquivocationEvidence(ctx, evidence.(*types.Equivocation)) 28 29 default: 30 k.Logger(ctx).Error(fmt.Sprintf("ignored unknown evidence type: %s", tmEvidence.Type)) 31 } 32 } 33 }