From fa3730a5d248b8208c505bc9397b37adf38a8553 Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Mon, 22 Oct 2018 19:48:28 -0700 Subject: [PATCH] WIP looking for bug... --- cmd/gaia/app/app.go | 5 +++-- cmd/gaia/app/sim_test.go | 2 +- types/stake.go | 2 +- x/distribution/keeper/hooks.go | 5 +++-- x/slashing/hooks.go | 6 +++--- x/slashing/hooks_test.go | 4 ++-- x/stake/keeper/hooks.go | 4 ++-- x/stake/keeper/val_state_change.go | 4 +++- 8 files changed, 18 insertions(+), 14 deletions(-) diff --git a/cmd/gaia/app/app.go b/cmd/gaia/app/app.go index 24b56d406..0d0fd0636 100644 --- a/cmd/gaia/app/app.go +++ b/cmd/gaia/app/app.go @@ -341,8 +341,9 @@ func (h Hooks) OnValidatorModified(ctx sdk.Context, addr sdk.ValAddress) { func (h Hooks) OnValidatorRemoved(ctx sdk.Context, addr sdk.ValAddress) { h.dh.OnValidatorRemoved(ctx, addr) } -func (h Hooks) OnValidatorBonded(ctx sdk.Context, addr sdk.ConsAddress) { - h.sh.OnValidatorBonded(ctx, addr) +func (h Hooks) OnValidatorBonded(ctx sdk.Context, addr sdk.ConsAddress, operator sdk.ValAddress) { + h.dh.OnValidatorBonded(ctx, addr, operator) + h.sh.OnValidatorBonded(ctx, addr, operator) } func (h Hooks) OnValidatorBeginUnbonding(ctx sdk.Context, addr sdk.ConsAddress, operator sdk.ValAddress) { h.dh.OnValidatorBeginUnbonding(ctx, addr, operator) diff --git a/cmd/gaia/app/sim_test.go b/cmd/gaia/app/sim_test.go index 7dffcf672..bad747309 100644 --- a/cmd/gaia/app/sim_test.go +++ b/cmd/gaia/app/sim_test.go @@ -66,7 +66,7 @@ func appStateFn(r *rand.Rand, accs []simulation.Account) json.RawMessage { var delegations []stake.Delegation // XXX Try different numbers of initially bonded validators - numInitiallyBonded := int64(50) + numInitiallyBonded := int64(5) valAddrs := make([]sdk.ValAddress, numInitiallyBonded) for i := 0; i < int(numInitiallyBonded); i++ { valAddr := sdk.ValAddress(accs[i].Address) diff --git a/types/stake.go b/types/stake.go index 1818919ab..319dd470b 100644 --- a/types/stake.go +++ b/types/stake.go @@ -115,7 +115,7 @@ type StakingHooks interface { OnValidatorModified(ctx Context, address ValAddress) // Must be called when a validator's state changes OnValidatorRemoved(ctx Context, address ValAddress) // Must be called when a validator is deleted - OnValidatorBonded(ctx Context, address ConsAddress) // Must be called when a validator is bonded + OnValidatorBonded(ctx Context, address ConsAddress, operator ValAddress) // Must be called when a validator is bonded OnValidatorBeginUnbonding(ctx Context, address ConsAddress, operator ValAddress) // Must be called when a validator begins unbonding OnDelegationCreated(ctx Context, delAddr AccAddress, valAddr ValAddress) // Must be called when a delegation is created diff --git a/x/distribution/keeper/hooks.go b/x/distribution/keeper/hooks.go index 22ca66216..a3540c760 100644 --- a/x/distribution/keeper/hooks.go +++ b/x/distribution/keeper/hooks.go @@ -105,5 +105,6 @@ func (h Hooks) OnValidatorBeginUnbonding(ctx sdk.Context, _ sdk.ConsAddress, add h.k.onValidatorModified(ctx, addr) } -// nolint - unused hooks for interface -func (h Hooks) OnValidatorBonded(ctx sdk.Context, addr sdk.ConsAddress) {} +func (h Hooks) OnValidatorBonded(ctx sdk.Context, _ sdk.ConsAddress, addr sdk.ValAddress) { + h.k.onValidatorModified(ctx, addr) +} diff --git a/x/slashing/hooks.go b/x/slashing/hooks.go index 3ad08b864..ee794e203 100644 --- a/x/slashing/hooks.go +++ b/x/slashing/hooks.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) onValidatorBonded(ctx sdk.Context, address sdk.ConsAddress) { +func (k Keeper) onValidatorBonded(ctx sdk.Context, address sdk.ConsAddress, _ sdk.ValAddress) { // Update the signing info start height or create a new signing info _, found := k.getValidatorSigningInfo(ctx, address) if !found { @@ -51,8 +51,8 @@ func (k Keeper) Hooks() Hooks { } // Implements sdk.ValidatorHooks -func (h Hooks) OnValidatorBonded(ctx sdk.Context, address sdk.ConsAddress) { - h.k.onValidatorBonded(ctx, address) +func (h Hooks) OnValidatorBonded(ctx sdk.Context, address sdk.ConsAddress, operator sdk.ValAddress) { + h.k.onValidatorBonded(ctx, address, operator) } // Implements sdk.ValidatorHooks diff --git a/x/slashing/hooks_test.go b/x/slashing/hooks_test.go index 5da7ebafb..eb7406764 100644 --- a/x/slashing/hooks_test.go +++ b/x/slashing/hooks_test.go @@ -11,7 +11,7 @@ import ( func TestHookOnValidatorBonded(t *testing.T) { ctx, _, _, _, keeper := createTestInput(t, DefaultParams()) addr := sdk.ConsAddress(addrs[0]) - keeper.onValidatorBonded(ctx, addr) + keeper.onValidatorBonded(ctx, addr, nil) period := keeper.getValidatorSlashingPeriodForHeight(ctx, addr, ctx.BlockHeight()) require.Equal(t, ValidatorSlashingPeriod{addr, ctx.BlockHeight(), 0, sdk.ZeroDec()}, period) } @@ -19,7 +19,7 @@ func TestHookOnValidatorBonded(t *testing.T) { func TestHookOnValidatorBeginUnbonding(t *testing.T) { ctx, _, _, _, keeper := createTestInput(t, DefaultParams()) addr := sdk.ConsAddress(addrs[0]) - keeper.onValidatorBonded(ctx, addr) + keeper.onValidatorBonded(ctx, addr, nil) keeper.onValidatorBeginUnbonding(ctx, addr, addrs[0]) period := keeper.getValidatorSlashingPeriodForHeight(ctx, addr, ctx.BlockHeight()) require.Equal(t, ValidatorSlashingPeriod{addr, ctx.BlockHeight(), ctx.BlockHeight(), sdk.ZeroDec()}, period) diff --git a/x/stake/keeper/hooks.go b/x/stake/keeper/hooks.go index 14eedb693..f8c0a6e07 100644 --- a/x/stake/keeper/hooks.go +++ b/x/stake/keeper/hooks.go @@ -23,9 +23,9 @@ func (k Keeper) OnValidatorRemoved(ctx sdk.Context, address sdk.ValAddress) { } } -func (k Keeper) OnValidatorBonded(ctx sdk.Context, address sdk.ConsAddress) { +func (k Keeper) OnValidatorBonded(ctx sdk.Context, address sdk.ConsAddress, operator sdk.ValAddress) { if k.hooks != nil { - k.hooks.OnValidatorBonded(ctx, address) + k.hooks.OnValidatorBonded(ctx, address, operator) } } diff --git a/x/stake/keeper/val_state_change.go b/x/stake/keeper/val_state_change.go index 0e939e051..c1f026079 100644 --- a/x/stake/keeper/val_state_change.go +++ b/x/stake/keeper/val_state_change.go @@ -116,7 +116,9 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx sdk.Context) (updates []ab validator := k.mustGetValidator(ctx, sdk.ValAddress(operator)) // bonded to unbonding + fmt.Println("!!!!") k.bondedToUnbonding(ctx, validator) + fmt.Println("!!!!2") // remove validator if it has no more tokens if validator.Tokens.IsZero() { @@ -224,7 +226,7 @@ func (k Keeper) bondValidator(ctx sdk.Context, validator types.Validator) types. // call the bond hook if present if k.hooks != nil { - k.hooks.OnValidatorBonded(ctx, validator.ConsAddress()) + k.hooks.OnValidatorBonded(ctx, validator.ConsAddress(), validator.OperatorAddr) } return validator