fix(x/slashing/keeper): hoist non-changing addresses parsing out of redelegation loop (#18035)

This commit is contained in:
Emmanuel T Odeke
2023-10-10 10:15:00 +00:00
committed by GitHub
parent f149f1baac
commit 7d7d4907f4
2 changed files with 12 additions and 10 deletions
+11 -10
View File
@@ -287,6 +287,16 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida
totalSlashAmount = math.ZeroInt()
bondedBurnedAmount, notBondedBurnedAmount := math.ZeroInt(), math.ZeroInt()
valDstAddr, err := k.validatorAddressCodec.StringToBytes(redelegation.ValidatorDstAddress)
if err != nil {
return math.ZeroInt(), fmt.Errorf("SlashRedelegation: could not parse validator destination address: %w", err)
}
delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(redelegation.DelegatorAddress)
if err != nil {
return math.ZeroInt(), fmt.Errorf("SlashRedelegation: could not parse delegator address: %w", err)
}
// perform slashing on all entries within the redelegation
for _, entry := range redelegation.Entries {
// If redelegation started before this height, stake didn't contribute to infraction
@@ -310,16 +320,7 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida
continue
}
valDstAddr, err := k.validatorAddressCodec.StringToBytes(redelegation.ValidatorDstAddress)
if err != nil {
panic(err)
}
delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(redelegation.DelegatorAddress)
if err != nil {
panic(err)
}
// Delegations can be dynamic hence need to be looked up on every redelegation entry loop.
delegation, err := k.Delegations.Get(ctx, collections.Join(sdk.AccAddress(delegatorAddress), sdk.ValAddress(valDstAddr)))
if err != nil {
// If deleted, delegation has zero shares, and we can't unbond any more