# Hooks This section contains a description of the module's `hooks`. Hooks are operations that are executed automatically when events are raised. ## Staking hooks The slashing module implements the `StakingHooks` defined in `x/staking` and are used as record-keeping of validators information. During the app initialization, these hooks should be registered in the staking module struct. The following hooks impact the slashing state: + `AfterValidatorBonded` creates a `ValidatorSigningInfo` instance as described in the following section. + `AfterValidatorCreated` stores a validator's consensus key. + `AfterValidatorRemoved` removes a validator's consensus key. ## Validator Bonded Upon successful first-time bonding of a new validator, we create a new `ValidatorSigningInfo` structure for the now-bonded validator, which `StartHeight` of the current block. ``` onValidatorBonded(address sdk.ValAddress) signingInfo, found = GetValidatorSigningInfo(address) if !found { signingInfo = ValidatorSigningInfo { StartHeight : CurrentHeight, IndexOffset : 0, JailedUntil : time.Unix(0, 0), Tombstone : false, MissedBloskCounter : 0 } setValidatorSigningInfo(signingInfo) } return ```