By default a withdrawal address is delegator address. If a delegator wants to change it's
withdrawal address it must send
Under special circumstances a delegator may wish to withdraw rewards from only a single validator.
# Withdraw Validator Rewards All
When a validator wishes to withdraw their rewards it must send an
MsgWithdrawDelegatorReward. Note that parts of this transaction logic are also
triggered each with any change in individual delegations, such as an unbond,
redelegation, or delegation of additional tokens to a specific validator. This
transaction withdraws the validators commission fee, as well as any rewards
earning on their self-delegation.
# Common calculations
# Update total validator accum
The total amount of validator accum must be calculated in order to determine the amount of pool tokens which a validator is entitled to at a particular block. The accum is always additive to the existing accum. This term is to be updated each time rewards are withdrawn from the system.
# Update validator's accums
The total amount of delegator accum must be updated in order to determine the amount of pool tokens which each delegator is entitled to, relative to the other delegators for that validator. The accum is always additive to the existing accum. This term is to be updated each time a withdrawal is made from a validator.
# FeePool pool to validator pool
Every time a validator or delegator executes a withdrawal or the validator is the proposer and receives new tokens, the relevant validator must move tokens from the passive global pool to their own pool. It is at this point that the commission is withdrawn
# Delegation reward withdrawal
For delegations (including validator's self-delegation) all rewards from reward pool have already had the validator's commission taken away.
# Validator commission withdrawal
Commission is calculated each time rewards enter into the validator.