# Hooks
Available hooks that can be called by and from this module.
# Create or modify delegation distribution
- triggered-by:
staking.MsgDelegate
,staking.MsgBeginRedelegate
,staking.MsgUndelegate
# Before
- The delegation rewards are withdrawn to the withdraw address of the delegator. The rewards include the current period and exclude the starting period.
- The validator period is incremented. The validator period is incremented because the validator's power and share distribution might have changed.
- The reference count for the delegator's starting period is decremented.
# After
The starting height of the delegation is set to the previous period.
Because of the Before
-hook, this period is the last period for which the delegator was rewarded.
# Validator created
- triggered-by:
staking.MsgCreateValidator
When a validator is created, the following validator variables are initialized:
- Historical rewards
- Current accumulated rewards
- Accumulated commission
- Total outstanding rewards
- Period
By default, all values are set to a 0
, except period, which is set to 1
.
# Validator removed
- triggered-by:
staking.RemoveValidator
Outstanding commission is sent to the validator's self-delegation withdrawal address. Remaining delegator rewards get sent to the community fee pool.
Note: The validator gets removed only when it has no remaining delegations. At that time, all outstanding delegator rewards will have been withdrawn. Any remaining rewards are dust amounts.
# Validator is slashed
triggered-by:
staking.Slash
The current validator period reference count is incremented. The reference count is incremented because the slash event has created a reference to it.
The validator period is incremented.
The slash event is stored for later use. The slash event will be referenced when calculating delegator rewards.