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)                {}