github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/keeper/hooks.go (about) 1 package keeper 2 3 import ( 4 "time" 5 6 "github.com/Finschia/ostracon/crypto" 7 8 sdk "github.com/Finschia/finschia-sdk/types" 9 "github.com/Finschia/finschia-sdk/x/slashing/types" 10 ) 11 12 func (k Keeper) AfterValidatorBonded(ctx sdk.Context, address sdk.ConsAddress, _ sdk.ValAddress) { 13 // Update the signing info voter set counter or create a new signing info 14 _, found := k.GetValidatorSigningInfo(ctx, address) 15 if !found { 16 signingInfo := types.NewValidatorSigningInfo( 17 address, 18 ctx.BlockHeight(), 19 0, 20 time.Unix(0, 0), 21 false, 22 0, 23 ) 24 k.SetValidatorSigningInfo(ctx, address, signingInfo) 25 } 26 } 27 28 // AfterValidatorCreated adds the address-pubkey relation when a validator is created. 29 func (k Keeper) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) error { 30 validator := k.sk.Validator(ctx, valAddr) 31 consPk, err := validator.ConsPubKey() 32 if err != nil { 33 return err 34 } 35 if err = k.AddPubkey(ctx, consPk); err != nil { 36 return err 37 } 38 39 return nil 40 } 41 42 // AfterValidatorRemoved deletes the address-pubkey relation when a validator is removed, 43 func (k Keeper) AfterValidatorRemoved(ctx sdk.Context, address sdk.ConsAddress) { 44 k.deleteAddrPubkeyRelation(ctx, crypto.Address(address)) 45 } 46 47 // Hooks wrapper struct for slashing keeper 48 type Hooks struct { 49 k Keeper 50 } 51 52 var _ types.StakingHooks = Hooks{} 53 54 // Return the wrapper struct 55 func (k Keeper) Hooks() Hooks { 56 return Hooks{k} 57 } 58 59 // Implements sdk.ValidatorHooks 60 func (h Hooks) AfterValidatorBonded(ctx sdk.Context, consAddr sdk.ConsAddress, valAddr sdk.ValAddress) { 61 h.k.AfterValidatorBonded(ctx, consAddr, valAddr) 62 } 63 64 // Implements sdk.ValidatorHooks 65 func (h Hooks) AfterValidatorRemoved(ctx sdk.Context, consAddr sdk.ConsAddress, _ sdk.ValAddress) { 66 h.k.AfterValidatorRemoved(ctx, consAddr) 67 } 68 69 // Implements sdk.ValidatorHooks 70 func (h Hooks) AfterValidatorCreated(ctx sdk.Context, valAddr sdk.ValAddress) { 71 h.k.AfterValidatorCreated(ctx, valAddr) 72 } 73 74 func (h Hooks) AfterValidatorBeginUnbonding(_ sdk.Context, _ sdk.ConsAddress, _ sdk.ValAddress) {} 75 func (h Hooks) BeforeValidatorModified(_ sdk.Context, _ sdk.ValAddress) {} 76 func (h Hooks) BeforeDelegationCreated(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress) {} 77 func (h Hooks) BeforeDelegationSharesModified(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress) {} 78 func (h Hooks) BeforeDelegationRemoved(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress) {} 79 func (h Hooks) AfterDelegationModified(_ sdk.Context, _ sdk.AccAddress, _ sdk.ValAddress) {} 80 func (h Hooks) BeforeValidatorSlashed(_ sdk.Context, _ sdk.ValAddress, _ sdk.Dec) {}