GetValidators -> Validators, sdk.Validator=abci.Validator
This commit is contained in:
parent
fef5b6a30f
commit
755f79d52d
|
@ -16,7 +16,7 @@ func init() {
|
|||
type Validator = abci.Validator
|
||||
|
||||
type ValidatorSetKeeper interface {
|
||||
GetValidators(Context) []*Validator
|
||||
Validators(Context) []*Validator
|
||||
Size(Context) int
|
||||
IsValidator(Context, Address) bool
|
||||
GetByAddress(Context, Address) (int, *Validator)
|
||||
|
|
|
@ -171,7 +171,7 @@ func (k Keeper) setCandidate(ctx sdk.Context, candidate Candidate) {
|
|||
setAcc = true
|
||||
}
|
||||
if setAcc {
|
||||
bz, err = k.cdc.MarshalBinary(validator.ABCIValidator(k.cdc))
|
||||
bz, err = k.cdc.MarshalBinary(validator.abciValidator(k.cdc))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ func (k Keeper) removeCandidate(ctx sdk.Context, address sdk.Address) {
|
|||
if store.Get(GetRecentValidatorKey(address)) == nil {
|
||||
return
|
||||
}
|
||||
bz, err := k.cdc.MarshalBinary(candidate.validator().ABCIValidatorZero(k.cdc))
|
||||
bz, err := k.cdc.MarshalBinary(candidate.validator().abciValidatorZero(k.cdc))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ func (k Keeper) removeCandidate(ctx sdk.Context, address sdk.Address) {
|
|||
// records are updated in store with the RecentValidatorsKey. This store is
|
||||
// used to determine if a candidate is a validator without needing to iterate
|
||||
// over the subspace as we do in GetValidators
|
||||
func (k Keeper) GetValidators(ctx sdk.Context) (validators []sdk.Validator) {
|
||||
func (k Keeper) GetValidators(ctx sdk.Context) (validators []Validator) {
|
||||
store := ctx.KVStore(k.storeKey)
|
||||
|
||||
// clear the recent validators store, add to the ToKickOut Temp store
|
||||
|
@ -233,7 +233,7 @@ func (k Keeper) GetValidators(ctx sdk.Context) (validators []sdk.Validator) {
|
|||
// add the actual validator power sorted store
|
||||
maxValidators := k.GetParams(ctx).MaxValidators
|
||||
iterator = store.ReverseIterator(subspace(ValidatorsKey)) // largest to smallest
|
||||
validators = make([]sdk.Validator, maxValidators)
|
||||
validators = make([]Validator, maxValidators)
|
||||
i := 0
|
||||
for ; ; i++ {
|
||||
if !iterator.Valid() || i > int(maxValidators-1) {
|
||||
|
@ -241,7 +241,7 @@ func (k Keeper) GetValidators(ctx sdk.Context) (validators []sdk.Validator) {
|
|||
break
|
||||
}
|
||||
bz := iterator.Value()
|
||||
var validator sdk.Validator
|
||||
var validator Validator
|
||||
err := k.cdc.UnmarshalBinary(bz, &validator)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -265,12 +265,12 @@ func (k Keeper) GetValidators(ctx sdk.Context) (validators []sdk.Validator) {
|
|||
|
||||
// get the zero abci validator from the ToKickOut iterator value
|
||||
bz := iterator.Value()
|
||||
var validator sdk.Validator
|
||||
var validator Validator
|
||||
err := k.cdc.UnmarshalBinary(bz, &validator)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
bz, err = k.cdc.MarshalBinary(validator.ABCIValidatorZero(k.cdc))
|
||||
bz, err = k.cdc.MarshalBinary(validator.abciValidatorZero(k.cdc))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ func (k Keeper) isNewValidator(ctx sdk.Context, store sdk.KVStore, address sdk.A
|
|||
break
|
||||
}
|
||||
bz := iterator.Value()
|
||||
var val sdk.Validator
|
||||
var val Validator
|
||||
err := k.cdc.UnmarshalBinary(bz, &val)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -496,7 +496,21 @@ func (k Keeper) setPool(ctx sdk.Context, p Pool) {
|
|||
|
||||
//__________________________________________________________________________
|
||||
|
||||
// Implements sdk.ValidatorSetKeeper
|
||||
// Implements ValidatorSetKeeper
|
||||
|
||||
var _ sdk.ValidatorSetKeeper = Keeper{}
|
||||
|
||||
func (k Keeper) Validators(ctx sdk.Context) []*sdk.Validator {
|
||||
vals := k.GetValidators(ctx)
|
||||
res := make([]*sdk.Validator, len(vals))
|
||||
|
||||
for i, val := range vals {
|
||||
abcival := val.abciValidator(k.cdc)
|
||||
res[i] = &abcival
|
||||
}
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func (k Keeper) Size(ctx sdk.Context) int {
|
||||
return len(k.GetValidators(ctx))
|
||||
|
|
|
@ -474,7 +474,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
|
|||
assert.True(t, candidates[0].Assets.Equal(sdk.NewRat(600)))
|
||||
acc = keeper.getAccUpdateValidators(ctx)
|
||||
require.Equal(t, 1, len(acc))
|
||||
assert.Equal(t, candidates[0].validator().ABCIValidator(keeper.cdc), acc[0])
|
||||
assert.Equal(t, candidates[0].validator().abciValidator(keeper.cdc), acc[0])
|
||||
|
||||
// test multiple value change
|
||||
// candidate set: {c1, c3} -> {c1', c3'}
|
||||
|
@ -492,8 +492,8 @@ func TestGetAccUpdateValidators(t *testing.T) {
|
|||
require.Equal(t, 2, len(acc))
|
||||
candidates = keeper.GetCandidates(ctx, 5)
|
||||
require.Equal(t, 2, len(candidates))
|
||||
require.Equal(t, candidates[0].validator().ABCIValidator(keeper.cdc), acc[0])
|
||||
require.Equal(t, candidates[1].validator().ABCIValidator(keeper.cdc), acc[1])
|
||||
require.Equal(t, candidates[0].validator().abciValidator(keeper.cdc), acc[0])
|
||||
require.Equal(t, candidates[1].validator().abciValidator(keeper.cdc), acc[1])
|
||||
|
||||
// test validtor added at the beginning
|
||||
// candidate set: {c1, c3} -> {c0, c1, c3}
|
||||
|
@ -507,7 +507,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
|
|||
require.Equal(t, 1, len(acc))
|
||||
candidates = keeper.GetCandidates(ctx, 5)
|
||||
require.Equal(t, 3, len(candidates))
|
||||
assert.Equal(t, candidates[0].validator().ABCIValidator(keeper.cdc), acc[0])
|
||||
assert.Equal(t, candidates[0].validator().abciValidator(keeper.cdc), acc[0])
|
||||
|
||||
// test validator added at the middle
|
||||
// candidate set: {c0, c1, c3} -> {c0, c1, c2, c3]
|
||||
|
@ -521,7 +521,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
|
|||
require.Equal(t, 1, len(acc))
|
||||
candidates = keeper.GetCandidates(ctx, 5)
|
||||
require.Equal(t, 4, len(candidates))
|
||||
assert.Equal(t, candidates[2].validator().ABCIValidator(keeper.cdc), acc[0])
|
||||
assert.Equal(t, candidates[2].validator().abciValidator(keeper.cdc), acc[0])
|
||||
|
||||
// test candidate added at the end but not inserted in the valset
|
||||
// candidate set: {c0, c1, c2, c3} -> {c0, c1, c2, c3, c4}
|
||||
|
@ -580,7 +580,7 @@ func TestGetAccUpdateValidators(t *testing.T) {
|
|||
|
||||
assert.Equal(t, candidatesIn[0].PubKey.Bytes(), acc[0].PubKey)
|
||||
assert.Equal(t, int64(0), acc[0].Power)
|
||||
assert.Equal(t, vals[0].ABCIValidator(keeper.cdc), acc[1])
|
||||
assert.Equal(t, vals[0].abciValidator(keeper.cdc), acc[1])
|
||||
|
||||
// test from something to nothing
|
||||
// candidate set: {c0, c1, c2, c3, c4} -> {}
|
||||
|
@ -732,50 +732,3 @@ func TestValidatorsetKeeper(t *testing.T) {
|
|||
|
||||
assert.Equal(t, total, keeper.TotalPower(ctx).Evaluate())
|
||||
}
|
||||
|
||||
func TestValidatorsetKeeper(t *testing.T) {
|
||||
ctx, _, keeper := createTestInput(t, false, 0)
|
||||
|
||||
total := int64(0)
|
||||
amts := []int64{9, 8, 7}
|
||||
var candidates [3]Candidate
|
||||
for i, amt := range amts {
|
||||
candidates[i] = Candidate{
|
||||
Address: addrVals[i],
|
||||
PubKey: pks[i],
|
||||
Assets: sdk.NewRat(amt),
|
||||
Liabilities: sdk.NewRat(amt),
|
||||
}
|
||||
|
||||
keeper.setCandidate(ctx, candidates[i])
|
||||
|
||||
total += amt
|
||||
}
|
||||
|
||||
assert.Equal(t, 3, keeper.Size(ctx))
|
||||
|
||||
for _, addr := range addrVals[:3] {
|
||||
assert.True(t, keeper.IsValidator(ctx, addr))
|
||||
}
|
||||
for _, addr := range addrVals[3:] {
|
||||
assert.False(t, keeper.IsValidator(ctx, addr))
|
||||
}
|
||||
|
||||
for i, addr := range addrVals[:3] {
|
||||
index, val := keeper.GetByAddress(ctx, addr)
|
||||
assert.Equal(t, i, index)
|
||||
assert.Equal(t, candidates[i].validator(), *val)
|
||||
}
|
||||
|
||||
for _, addr := range addrVals[3:] {
|
||||
index, val := keeper.GetByAddress(ctx, addr)
|
||||
assert.Equal(t, -1, index)
|
||||
assert.Nil(t, val)
|
||||
}
|
||||
|
||||
for i, can := range candidates {
|
||||
assert.Equal(t, can.validator(), *keeper.GetByIndex(ctx, i))
|
||||
}
|
||||
|
||||
assert.Equal(t, total, keeper.TotalPower(ctx).Evaluate())
|
||||
}
|
||||
|
|
|
@ -134,8 +134,8 @@ func (c Candidate) delegatorShareExRate() sdk.Rat {
|
|||
|
||||
// Validator returns a copy of the Candidate as a Validator.
|
||||
// Should only be called when the Candidate qualifies as a validator.
|
||||
func (c Candidate) validator() sdk.Validator {
|
||||
return sdk.Validator{
|
||||
func (c Candidate) validator() Validator {
|
||||
return Validator{
|
||||
Address: c.Address,
|
||||
PubKey: c.PubKey,
|
||||
Power: c.Assets,
|
||||
|
|
Loading…
Reference in New Issue