This commit is contained in:
parent
d721a760d8
commit
bec98b55e3
|
@ -166,20 +166,30 @@ func DelegatorSharesInvariant(k Keeper) sdk.Invariant {
|
||||||
)
|
)
|
||||||
|
|
||||||
validators := k.GetAllValidators(ctx)
|
validators := k.GetAllValidators(ctx)
|
||||||
|
validatorsDelegationShares := map[string]sdk.Dec{}
|
||||||
|
|
||||||
|
// initialize a map: validator -> its delegation shares
|
||||||
for _, validator := range validators {
|
for _, validator := range validators {
|
||||||
valTotalDelShares := validator.GetDelegatorShares()
|
validatorsDelegationShares[validator.GetOperator().String()] = sdk.ZeroDec()
|
||||||
totalDelShares := sdk.ZeroDec()
|
}
|
||||||
|
|
||||||
delegations := k.GetValidatorDelegations(ctx, validator.GetOperator())
|
// iterate through all the delegations to calculate the total delegation shares for each validator
|
||||||
for _, delegation := range delegations {
|
delegations := k.GetAllDelegations(ctx)
|
||||||
totalDelShares = totalDelShares.Add(delegation.Shares)
|
for _, delegation := range delegations {
|
||||||
}
|
delegationValidatorAddr := delegation.GetValidatorAddr().String()
|
||||||
|
validatorDelegationShares := validatorsDelegationShares[delegationValidatorAddr]
|
||||||
|
validatorsDelegationShares[delegationValidatorAddr] = validatorDelegationShares.Add(delegation.Shares)
|
||||||
|
}
|
||||||
|
|
||||||
if !valTotalDelShares.Equal(totalDelShares) {
|
// for each validator, check if its total delegation shares calculated from the step above equals to its expected delegation shares
|
||||||
|
for _, validator := range validators {
|
||||||
|
expValTotalDelShares := validator.GetDelegatorShares()
|
||||||
|
calculatedValTotalDelShares := validatorsDelegationShares[validator.GetOperator().String()]
|
||||||
|
if !calculatedValTotalDelShares.Equal(expValTotalDelShares) {
|
||||||
broken = true
|
broken = true
|
||||||
msg += fmt.Sprintf("broken delegator shares invariance:\n"+
|
msg += fmt.Sprintf("broken delegator shares invariance:\n"+
|
||||||
"\tvalidator.DelegatorShares: %v\n"+
|
"\tvalidator.DelegatorShares: %v\n"+
|
||||||
"\tsum of Delegator.Shares: %v\n", valTotalDelShares, totalDelShares)
|
"\tsum of Delegator.Shares: %v\n", expValTotalDelShares, calculatedValTotalDelShares)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue