From ab75758636ab3550af79cbe3f15b4f166cb7a59d Mon Sep 17 00:00:00 2001 From: Jack Zampolin Date: Mon, 26 Jul 2021 10:26:22 -0700 Subject: [PATCH] Merge PR #96: Remove the nil ethsigner addresses from valset --- module/x/gravity/keeper/keeper.go | 12 +++++------- module/x/gravity/keeper/keeper_test.go | 4 +++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/module/x/gravity/keeper/keeper.go b/module/x/gravity/keeper/keeper.go index f27459e60..b275467d3 100644 --- a/module/x/gravity/keeper/keeper.go +++ b/module/x/gravity/keeper/keeper.go @@ -286,19 +286,17 @@ func (k Keeper) CreateSignerSetTx(ctx sdk.Context) *types.SignerSetTx { // implementations are involved. func (k Keeper) CurrentSignerSet(ctx sdk.Context) types.EthereumSigners { validators := k.StakingKeeper.GetBondedValidatorsByPower(ctx) - ethereumSigners := make([]*types.EthereumSigner, len(validators)) + ethereumSigners := make([]*types.EthereumSigner, 0) var totalPower uint64 - // TODO someone with in depth info on Cosmos staking should determine - // if this is doing what I think it's doing - for i, validator := range validators { + for _, validator := range validators { val := validator.GetOperator() p := uint64(k.StakingKeeper.GetLastValidatorPower(ctx, val)) - totalPower += p - ethereumSigners[i] = &types.EthereumSigner{Power: p} if ethAddr := k.GetValidatorEthereumAddress(ctx, val); ethAddr.Hex() != "0x0000000000000000000000000000000000000000" { - ethereumSigners[i].EthereumAddress = ethAddr.Hex() + es := &types.EthereumSigner{Power: p, EthereumAddress: ethAddr.Hex()} + ethereumSigners = append(ethereumSigners, es) + totalPower += p } } // normalize power values diff --git a/module/x/gravity/keeper/keeper_test.go b/module/x/gravity/keeper/keeper_test.go index de45313f3..d7ce3bce7 100644 --- a/module/x/gravity/keeper/keeper_test.go +++ b/module/x/gravity/keeper/keeper_test.go @@ -33,11 +33,13 @@ func TestCurrentValsetNormalization(t *testing.T) { t.Run(msg, func(t *testing.T) { operators := make([]MockStakingValidatorData, len(spec.srcPowers)) for i, v := range spec.srcPowers { + cAddr := bytes.Repeat([]byte{byte(i)}, sdk.AddrLen) operators[i] = MockStakingValidatorData{ // any unique addr - Operator: bytes.Repeat([]byte{byte(i)}, sdk.AddrLen), + Operator: cAddr, Power: int64(v), } + input.GravityKeeper.setValidatorEthereumAddress(ctx, cAddr, common.HexToAddress("0xf71402f886b45c134743F4c00750823Bbf5Fd045")) } input.GravityKeeper.StakingKeeper = NewStakingKeeperWeightedMock(operators...) r := input.GravityKeeper.CreateSignerSetTx(ctx)