From abef57a9e67fc7bf26511f30419a5579c627e2d2 Mon Sep 17 00:00:00 2001 From: Christopher Goes Date: Tue, 16 Oct 2018 21:30:52 +0200 Subject: [PATCH] Utilize Tendermint power instead --- x/stake/keeper/key.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/x/stake/keeper/key.go b/x/stake/keeper/key.go index 9f6592ef3..aef685cb9 100644 --- a/x/stake/keeper/key.go +++ b/x/stake/keeper/key.go @@ -71,8 +71,15 @@ func GetBondedValidatorIndexKey(operator sdk.ValAddress) []byte { func getValidatorPowerRank(validator types.Validator) []byte { potentialPower := validator.Tokens - powerBytes := []byte(potentialPower.ToLeftPadded(maxDigitsForAccount)) // power big-endian (more powerful validators first) + + // todo: deal with cases above 2**64, ref https://github.com/cosmos/cosmos-sdk/issues/2439#issuecomment-427167556 + tendermintPower := potentialPower.RoundInt64() + tendermintPowerBytes := make([]byte, 8) + binary.BigEndian.PutUint64(tendermintPowerBytes[:], uint64(tendermintPower)) + + powerBytes := tendermintPowerBytes powerBytesLen := len(powerBytes) + // key is of format prefix || powerbytes || heightBytes || counterBytes key := make([]byte, 1+powerBytesLen+8+2)