refactor(staking): use validator & address codecs in staking (backport #16958) (#17066)

Co-authored-by: Marko <marbar3778@yahoo.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot] 2023-07-19 16:02:28 +02:00 committed by GitHub
parent 609a4e8c8b
commit 16ab635645
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 307 additions and 172 deletions

View File

@ -137,7 +137,8 @@ Ref: https://keepachangelog.com/en/1.0.0/
### API Breaking Changes
* (staking) [#16959](https://github.com/cosmos/cosmos-sdk/pull/16959) Add validator and consensus address codec as staking keeper arguments.
* (x/staking) [#16958](https://github.com/cosmos/cosmos-sdk/pull/16958) DelegationI interface `GetDelegatorAddr` & `GetValidatorAddr` have been migrated to return string instead of sdk.AccAddress and sdk.ValAddress respectively. stakingtypes.NewDelegation takes a string instead of sdk.AccAddress and sdk.ValAddress.
* (x/staking) [#16959](https://github.com/cosmos/cosmos-sdk/pull/16959) Add validator and consensus address codec as staking keeper arguments.
* (types) [#16272](https://github.com/cosmos/cosmos-sdk/pull/16272) `FeeGranter` in the `FeeTx` interface returns `[]byte` instead of `string`.
* (testutil) [#16899](https://github.com/cosmos/cosmos-sdk/pull/16899) The *cli testutil* `QueryBalancesExec` has been removed. Use the gRPC or REST query instead.
* (x/auth) [#16650](https://github.com/cosmos/cosmos-sdk/pull/16650) The *cli testutil* `QueryAccountExec` has been removed. Use the gRPC or REST query instead.

View File

@ -13395,9 +13395,9 @@ type Delegation struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"`
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
// shares define the delegation shares received.
Shares string `protobuf:"bytes,3,opt,name=shares,proto3" json:"shares,omitempty"`
@ -13451,9 +13451,9 @@ type UnbondingDelegation struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"`
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
// entries are the unbonding delegation entries.
Entries []*UnbondingDelegationEntry `protobuf:"bytes,3,rep,name=entries,proto3" json:"entries,omitempty"` // unbonding delegation entries

View File

@ -196,9 +196,9 @@ message Delegation {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"];
// shares define the delegation shares received.
string shares = 3 [
@ -214,13 +214,13 @@ message UnbondingDelegation {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
string delegator_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
string validator_address = 2 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"];
// entries are the unbonding delegation entries.
repeated UnbondingDelegationEntry entries = 3
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // unbonding delegation entries
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // unbonding delegation entries
}
// UnbondingDelegationEntry defines an unbonding object with relevant metadata.
@ -293,7 +293,7 @@ message Redelegation {
string validator_dst_address = 3 [(cosmos_proto.scalar) = "cosmos.ValidatorAddressString"];
// entries are the redelegation entries.
repeated RedelegationEntry entries = 4
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // redelegation entries
[(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; // redelegation entries
}
// Params defines the parameters for the x/staking module.

View File

@ -312,7 +312,7 @@ func (s *GRPCQueryTestSuite) TestQueryDelegatorRewardsGRPC() {
&types.QueryDelegationTotalRewardsResponse{},
&types.QueryDelegationTotalRewardsResponse{
Rewards: []types.DelegationDelegatorReward{
types.NewDelegationDelegatorReward(val.ValAddress, rewards),
types.NewDelegationDelegatorReward(val.ValAddress.String(), rewards),
},
Total: rewards,
},

View File

@ -508,7 +508,7 @@ func TestGRPCDelegationRewards(t *testing.T) {
// setup delegation
delTokens := sdk.TokensFromConsensusPower(2, sdk.DefaultPowerReduction)
validator, issuedShares := val.AddTokensFromDel(delTokens)
delegation := stakingtypes.NewDelegation(delAddr, f.valAddr, issuedShares)
delegation := stakingtypes.NewDelegation(delAddr.String(), f.valAddr.String(), issuedShares)
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation))
assert.NilError(t, f.distrKeeper.SetDelegatorStartingInfo(f.sdkCtx, validator.GetOperator(), delAddr, types.NewDelegatorStartingInfo(2, math.LegacyNewDec(initialStake), 20)))

View File

@ -194,10 +194,10 @@ func TestMsgWithdrawDelegatorReward(t *testing.T) {
// setup delegation
delTokens := sdk.TokensFromConsensusPower(2, sdk.DefaultPowerReduction)
validator, issuedShares := validator.AddTokensFromDel(delTokens)
delegation := stakingtypes.NewDelegation(delAddr, validator.GetOperator(), issuedShares)
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation))
err = f.distrKeeper.SetDelegatorStartingInfo(f.sdkCtx, validator.GetOperator(), delAddr, distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 20))
require.NoError(t, err)
delegation := stakingtypes.NewDelegation(delAddr.String(), validator.GetOperator().String(), issuedShares)
require.NoError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation))
require.NoError(t, f.distrKeeper.SetDelegatorStartingInfo(f.sdkCtx, validator.GetOperator(), delAddr, distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 20)))
// setup validator rewards
decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, math.LegacyOneDec())}
historicalRewards := distrtypes.NewValidatorHistoricalRewards(decCoins, 2)

View File

@ -51,7 +51,7 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) {
assert.Assert(math.IntEq(t, startTokens, validator.BondedTokens()))
assert.Assert(t, validator.IsBonded())
delegation := types.NewDelegation(addrDel, addrVal, issuedShares)
delegation := types.NewDelegation(addrDel.String(), addrVal.String(), issuedShares)
assert.NilError(t, f.stakingKeeper.SetDelegation(ctx, delegation))
maxEntries, err := f.stakingKeeper.MaxEntries(ctx)

View File

@ -125,7 +125,7 @@ func TestSlashRedelegation(t *testing.T) {
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd))
// set the associated delegation
del := types.NewDelegation(addrDels[0], addrVals[1], math.LegacyNewDec(10))
del := types.NewDelegation(addrDels[0].String(), addrVals[1].String(), math.LegacyNewDec(10))
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, del))
// started redelegating prior to the current height, stake didn't contribute to infraction
@ -392,7 +392,7 @@ func TestSlashWithRedelegation(t *testing.T) {
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd))
// set the associated delegation
del := types.NewDelegation(addrDels[0], addrVals[1], math.LegacyNewDecFromInt(rdTokens))
del := types.NewDelegation(addrDels[0].String(), addrVals[1].String(), math.LegacyNewDecFromInt(rdTokens))
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, del))
// update bonded tokens
@ -550,7 +550,7 @@ func TestSlashBoth(t *testing.T) {
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rdA))
// set the associated delegation
delA := types.NewDelegation(addrDels[0], addrVals[1], math.LegacyNewDecFromInt(rdATokens))
delA := types.NewDelegation(addrDels[0].String(), addrVals[1].String(), math.LegacyNewDecFromInt(rdATokens))
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delA))
// set an unbonding delegation with expiration timestamp (beyond which the

View File

@ -67,7 +67,7 @@ func SetupUnbondingTests(t *testing.T, f *fixture, hookCalled *bool, ubdeID *uin
assert.Assert(t, validator1.IsBonded())
// Create a delegator
delegation := types.NewDelegation(addrDels[0], addrVals[0], issuedShares1)
delegation := types.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares1)
assert.NilError(t, f.stakingKeeper.SetDelegation(f.sdkCtx, delegation))
// Create a validator to redelegate to

View File

@ -1,6 +1,7 @@
package keeper_test
import (
"bytes"
"fmt"
"testing"
@ -59,8 +60,11 @@ func BenchmarkGetValidatorDelegations(b *testing.B) {
delegator := sdk.AccAddress(fmt.Sprintf("address%d", i))
banktestutil.FundAccount(f.sdkCtx, f.bankKeeper, delegator,
sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(int64(i)))))
NewDel := types.NewDelegation(delegator, val, math.LegacyNewDec(int64(i)))
f.stakingKeeper.SetDelegation(f.sdkCtx, NewDel)
NewDel := types.NewDelegation(delegator.String(), val.String(), math.LegacyNewDec(int64(i)))
if err := f.stakingKeeper.SetDelegation(f.sdkCtx, NewDel); err != nil {
panic(err)
}
}
}
@ -90,10 +94,11 @@ func BenchmarkGetValidatorDelegationsLegacy(b *testing.B) {
for _, val := range valAddrs {
for i := 0; i < delegationsNum; i++ {
delegator := sdk.AccAddress(fmt.Sprintf("address%d", i))
banktestutil.FundAccount(f.sdkCtx, f.bankKeeper, delegator,
sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(int64(i)))))
NewDel := types.NewDelegation(delegator, val, math.LegacyNewDec(int64(i)))
f.stakingKeeper.SetDelegation(f.sdkCtx, NewDel)
banktestutil.FundAccount(f.sdkCtx, f.bankKeeper, delegator, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(int64(i)))))
NewDel := types.NewDelegation(delegator.String(), val.String(), math.LegacyNewDec(int64(i)))
if err := f.stakingKeeper.SetDelegation(f.sdkCtx, NewDel); err != nil {
panic(err)
}
}
}
@ -114,8 +119,15 @@ func updateValidatorDelegationsLegacy(f *fixture, existingValAddr, newValAddr sd
for ; iterator.Valid(); iterator.Next() {
delegation := types.MustUnmarshalDelegation(cdc, iterator.Value())
if delegation.GetValidatorAddr().Equals(existingValAddr) {
k.RemoveDelegation(f.sdkCtx, delegation)
valAddr, err := k.ValidatorAddressCodec().StringToBytes(delegation.GetValidatorAddr())
if err != nil {
panic(err)
}
if bytes.EqualFold(valAddr, existingValAddr) {
if err := k.RemoveDelegation(f.sdkCtx, delegation); err != nil {
panic(err)
}
delegation.ValidatorAddress = newValAddr.String()
k.SetDelegation(f.sdkCtx, delegation)
}

View File

@ -223,7 +223,7 @@ func GenesisStateWithValSet(
MinSelfDelegation: sdkmath.ZeroInt(),
}
validators = append(validators, validator)
delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress(), val.Address.Bytes(), sdkmath.LegacyOneDec()))
delegations = append(delegations, stakingtypes.NewDelegation(genAccs[0].GetAddress().String(), sdk.ValAddress(val.Address).String(), sdkmath.LegacyOneDec()))
}

View File

@ -80,8 +80,19 @@ func (k Keeper) calculateDelegationRewardsBetween(ctx context.Context, val staki
// calculate the total rewards accrued by a delegation
func (k Keeper) CalculateDelegationRewards(ctx context.Context, val stakingtypes.ValidatorI, del stakingtypes.DelegationI, endingPeriod uint64) (rewards sdk.DecCoins, err error) {
addrCodec := k.authKeeper.AddressCodec()
delAddr, err := addrCodec.StringToBytes(del.GetDelegatorAddr())
if err != nil {
return sdk.DecCoins{}, err
}
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(del.GetValidatorAddr())
if err != nil {
return sdk.DecCoins{}, err
}
// fetch starting info for delegation
startingInfo, err := k.GetDelegatorStartingInfo(ctx, del.GetValidatorAddr(), del.GetDelegatorAddr())
startingInfo, err := k.GetDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr))
if err != nil {
return
}
@ -107,7 +118,7 @@ func (k Keeper) CalculateDelegationRewards(ctx context.Context, val stakingtypes
// for them for the stake sanity check below.
endingHeight := uint64(sdkCtx.BlockHeight())
if endingHeight > startingHeight {
k.IterateValidatorSlashEventsBetween(ctx, del.GetValidatorAddr(), startingHeight, endingHeight,
k.IterateValidatorSlashEventsBetween(ctx, valAddr, startingHeight, endingHeight,
func(height uint64, event types.ValidatorSlashEvent) (stop bool) {
endingPeriod := event.ValidatorPeriod
if endingPeriod > startingPeriod {
@ -176,8 +187,19 @@ func (k Keeper) CalculateDelegationRewards(ctx context.Context, val stakingtypes
}
func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.ValidatorI, del stakingtypes.DelegationI) (sdk.Coins, error) {
addrCodec := k.authKeeper.AddressCodec()
delAddr, err := addrCodec.StringToBytes(del.GetDelegatorAddr())
if err != nil {
return nil, err
}
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(del.GetValidatorAddr())
if err != nil {
return nil, err
}
// check existence of delegator starting info
hasInfo, err := k.HasDelegatorStartingInfo(ctx, del.GetValidatorAddr(), del.GetDelegatorAddr())
hasInfo, err := k.HasDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr))
if err != nil {
return nil, err
}
@ -197,7 +219,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
return nil, err
}
outstanding, err := k.GetValidatorOutstandingRewardsCoins(ctx, del.GetValidatorAddr())
outstanding, err := k.GetValidatorOutstandingRewardsCoins(ctx, sdk.ValAddress(valAddr))
if err != nil {
return nil, err
}
@ -209,7 +231,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
logger := k.Logger(ctx)
logger.Info(
"rounding error withdrawing rewards from validator",
"delegator", del.GetDelegatorAddr().String(),
"delegator", del.GetDelegatorAddr(),
"validator", val.GetOperator().String(),
"got", rewards.String(),
"expected", rewardsRaw.String(),
@ -221,7 +243,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
// add coins to user account
if !finalRewards.IsZero() {
withdrawAddr, err := k.GetDelegatorWithdrawAddr(ctx, del.GetDelegatorAddr())
withdrawAddr, err := k.GetDelegatorWithdrawAddr(ctx, delAddr)
if err != nil {
return nil, err
}
@ -234,7 +256,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
// update the outstanding rewards and the community pool only if the
// transaction was successful
err = k.SetValidatorOutstandingRewards(ctx, del.GetValidatorAddr(), types.ValidatorOutstandingRewards{Rewards: outstanding.Sub(rewards)})
err = k.SetValidatorOutstandingRewards(ctx, sdk.ValAddress(valAddr), types.ValidatorOutstandingRewards{Rewards: outstanding.Sub(rewards)})
if err != nil {
return nil, err
}
@ -251,19 +273,19 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
}
// decrement reference count of starting period
startingInfo, err := k.GetDelegatorStartingInfo(ctx, del.GetValidatorAddr(), del.GetDelegatorAddr())
startingInfo, err := k.GetDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr))
if err != nil {
return nil, err
}
startingPeriod := startingInfo.PreviousPeriod
err = k.decrementReferenceCount(ctx, del.GetValidatorAddr(), startingPeriod)
err = k.decrementReferenceCount(ctx, sdk.ValAddress(valAddr), startingPeriod)
if err != nil {
return nil, err
}
// remove delegator starting info
err = k.DeleteDelegatorStartingInfo(ctx, del.GetValidatorAddr(), del.GetDelegatorAddr())
err = k.DeleteDelegatorStartingInfo(ctx, sdk.ValAddress(valAddr), sdk.AccAddress(delAddr))
if err != nil {
return nil, err
}
@ -285,7 +307,7 @@ func (k Keeper) withdrawDelegationRewards(ctx context.Context, val stakingtypes.
types.EventTypeWithdrawRewards,
sdk.NewAttribute(sdk.AttributeKeyAmount, finalRewards.String()),
sdk.NewAttribute(types.AttributeKeyValidator, val.GetOperator().String()),
sdk.NewAttribute(types.AttributeKeyDelegator, del.GetDelegatorAddr().String()),
sdk.NewAttribute(types.AttributeKeyDelegator, del.GetDelegatorAddr()),
),
)

View File

@ -10,6 +10,7 @@ import (
"cosmossdk.io/math"
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/runtime"
"github.com/cosmos/cosmos-sdk/testutil"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -35,6 +36,8 @@ func TestCalculateRewardsBasic(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -58,7 +61,7 @@ func TestCalculateRewardsBasic(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// delegation mock
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(3)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil)
@ -118,6 +121,8 @@ func TestCalculateRewardsAfterSlash(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -142,7 +147,7 @@ func TestCalculateRewardsAfterSlash(t *testing.T) {
require.NoError(t, err)
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
// set mock calls
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(4)
@ -218,6 +223,8 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -243,7 +250,7 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// delegation mocks
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(4)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil)
@ -338,6 +345,8 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -361,7 +370,7 @@ func TestCalculateRewardsMultiDelegator(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
del0 := stakingtypes.NewDelegation(addr0, valAddr, val.DelegatorShares)
del0 := stakingtypes.NewDelegation(addr0.String(), valAddr.String(), val.DelegatorShares)
// set mock calls
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(4)
@ -433,6 +442,8 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -457,7 +468,7 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// delegation mock
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(5)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil).Times(3)
@ -506,6 +517,8 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -530,7 +543,7 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// delegation mock
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(5)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil)
@ -618,6 +631,8 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -643,7 +658,7 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// validator and delegation mocks
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(3)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil)
@ -750,6 +765,8 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -773,7 +790,7 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
// validator and delegation mocks
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(3)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil).Times(5)
@ -946,6 +963,8 @@ func Test100PercentCommissionReward(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec(sdk.Bech32PrefixValAddr)).AnyTimes()
accountKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec(sdk.Bech32MainPrefix)).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -969,7 +988,7 @@ func Test100PercentCommissionReward(t *testing.T) {
val.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(10, 1), math.LegacyNewDecWithPrec(10, 1), math.LegacyNewDec(0))
// validator and delegation mocks
del := stakingtypes.NewDelegation(addr, valAddr, val.DelegatorShares)
del := stakingtypes.NewDelegation(addr.String(), valAddr.String(), val.DelegatorShares)
stakingKeeper.EXPECT().Validator(gomock.Any(), valAddr).Return(val, nil).Times(3)
stakingKeeper.EXPECT().Delegation(gomock.Any(), addr, valAddr).Return(del, nil).Times(3)

View File

@ -276,7 +276,11 @@ func (k Querier) DelegationTotalRewards(ctx context.Context, req *types.QueryDel
err = k.stakingKeeper.IterateDelegations(
ctx, delAdr,
func(_ int64, del stakingtypes.DelegationI) (stop bool) {
valAddr := del.GetValidatorAddr()
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(del.GetValidatorAddr())
if err != nil {
panic(err)
}
val, err := k.stakingKeeper.Validator(ctx, valAddr)
if err != nil {
panic(err)
@ -292,7 +296,7 @@ func (k Querier) DelegationTotalRewards(ctx context.Context, req *types.QueryDel
panic(err)
}
delRewards = append(delRewards, types.NewDelegationDelegatorReward(valAddr, delReward))
delRewards = append(delRewards, types.NewDelegationDelegatorReward(del.GetValidatorAddr(), delReward))
total = total.Add(delReward...)
return false
},
@ -323,7 +327,7 @@ func (k Querier) DelegatorValidators(ctx context.Context, req *types.QueryDelega
err = k.stakingKeeper.IterateDelegations(
ctx, delAdr,
func(_ int64, del stakingtypes.DelegationI) (stop bool) {
validators = append(validators, del.GetValidatorAddr().String())
validators = append(validators, del.GetValidatorAddr())
return false
},
)

View File

@ -69,15 +69,19 @@ func CanWithdrawInvariant(k Keeper) sdk.Invariant {
var remaining sdk.DecCoins
valDelegationAddrs := make(map[string][]sdk.AccAddress)
valDelegationAddrs := make(map[string][][]byte)
allDelegations, err := k.stakingKeeper.GetAllSDKDelegations(ctx)
if err != nil {
panic(err)
}
for _, del := range allDelegations {
valAddr := del.GetValidatorAddr().String()
valDelegationAddrs[valAddr] = append(valDelegationAddrs[valAddr], del.GetDelegatorAddr())
delAddr, err := k.authKeeper.AddressCodec().StringToBytes(del.GetDelegatorAddr())
if err != nil {
panic(err)
}
valAddr := del.GetValidatorAddr()
valDelegationAddrs[valAddr] = append(valDelegationAddrs[valAddr], delAddr)
}
// iterate over all validators

View File

@ -134,7 +134,11 @@ func SimulateMsgWithdrawDelegatorReward(txConfig client.TxConfig, ak types.Accou
delegation := delegations[r.Intn(len(delegations))]
validator, err := sk.Validator(ctx, delegation.GetValidatorAddr())
delAddr, err := sk.ValidatorAddressCodec().StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(&types.MsgWithdrawDelegatorReward{}), "error converting validator address"), nil, err
}
validator, err := sk.Validator(ctx, delAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(&types.MsgWithdrawDelegatorReward{}), "error getting validator"), nil, err
}

View File

@ -109,8 +109,9 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() {
delTokens := sdk.TokensFromConsensusPower(2, sdk.DefaultPowerReduction)
validator0, issuedShares := validator0.AddTokensFromDel(delTokens)
delegator := accounts[1]
delegation := stakingtypes.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares)
suite.stakingKeeper.SetDelegation(suite.ctx, delegation)
delegation := stakingtypes.NewDelegation(delegator.Address.String(), validator0.GetOperator().String(), issuedShares)
suite.Require().NoError(suite.stakingKeeper.SetDelegation(suite.ctx, delegation))
suite.distrKeeper.SetDelegatorStartingInfo(suite.ctx, validator0.GetOperator(), delegator.Address, types.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200))
suite.setupValidatorRewards(validator0.GetOperator())

View File

@ -338,6 +338,20 @@ func (mr *MockStakingKeeperMockRecorder) Validator(arg0, arg1 interface{}) *gomo
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Validator", reflect.TypeOf((*MockStakingKeeper)(nil).Validator), arg0, arg1)
}
// ValidatorAddressCodec mocks base method.
func (m *MockStakingKeeper) ValidatorAddressCodec() address.Codec {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ValidatorAddressCodec")
ret0, _ := ret[0].(address.Codec)
return ret0
}
// ValidatorAddressCodec indicates an expected call of ValidatorAddressCodec.
func (mr *MockStakingKeeperMockRecorder) ValidatorAddressCodec() *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ValidatorAddressCodec", reflect.TypeOf((*MockStakingKeeper)(nil).ValidatorAddressCodec))
}
// ValidatorByConsAddr mocks base method.
func (m *MockStakingKeeper) ValidatorByConsAddr(arg0 context.Context, arg1 types.ConsAddress) (types0.ValidatorI, error) {
m.ctrl.T.Helper()

View File

@ -111,7 +111,7 @@ func Delegate(
err = distrKeeper.Hooks().BeforeDelegationSharesModified(ctx, delegator, validator.GetOperator())
} else {
err = distrKeeper.Hooks().BeforeDelegationCreated(ctx, delegator, validator.GetOperator())
del := stakingtypes.NewDelegation(delegator, validator.GetOperator(), math.LegacyZeroDec())
del := stakingtypes.NewDelegation(delegator.String(), validator.GetOperator().String(), math.LegacyZeroDec())
delegation = &del
}

View File

@ -34,6 +34,7 @@ type BankKeeper interface {
// StakingKeeper expected staking keeper (noalias)
type StakingKeeper interface {
ValidatorAddressCodec() address.Codec
// iterate through validators by operator address, execute func for each validator
IterateValidators(context.Context,
func(index int64, validator stakingtypes.ValidatorI) (stop bool)) error

View File

@ -32,6 +32,6 @@ func (res QueryDelegatorTotalRewardsResponse) String() string {
}
// NewDelegationDelegatorReward constructs a DelegationDelegatorReward.
func NewDelegationDelegatorReward(valAddr sdk.ValAddress, reward sdk.DecCoins) DelegationDelegatorReward {
return DelegationDelegatorReward{ValidatorAddress: valAddr.String(), Reward: reward}
func NewDelegationDelegatorReward(valAddr string, reward sdk.DecCoins) DelegationDelegatorReward {
return DelegationDelegatorReward{ValidatorAddress: valAddr, Reward: reward}
}

View File

@ -58,7 +58,7 @@ func (keeper Keeper) Tally(ctx context.Context, proposal v1.Proposal) (passes, b
// iterate over all delegations from voter, deduct from any delegated-to validators
err = keeper.sk.IterateDelegations(ctx, voter, func(index int64, delegation stakingtypes.DelegationI) (stop bool) {
valAddrStr := delegation.GetValidatorAddr().String()
valAddrStr := delegation.GetValidatorAddr()
if val, ok := currValidators[valAddrStr]; ok {
// There is no need to handle the special case that validator address equal to voter address.

View File

@ -24,10 +24,12 @@ import (
)
func TestBeginBlocker(t *testing.T) {
var interfaceRegistry codectypes.InterfaceRegistry
var bankKeeper bankkeeper.Keeper
var stakingKeeper *stakingkeeper.Keeper
var slashingKeeper slashingkeeper.Keeper
var (
interfaceRegistry codectypes.InterfaceRegistry
bankKeeper bankkeeper.Keeper
stakingKeeper *stakingkeeper.Keeper
slashingKeeper slashingkeeper.Keeper
)
app, err := simtestutil.Setup(
depinject.Configs(

View File

@ -214,7 +214,7 @@ func (s *KeeperTestSuite) TestUnjail() {
s.slashingKeeper.SetValidatorSigningInfo(s.ctx, sdk.ConsAddress(addr), info)
s.stakingKeeper.EXPECT().Validator(s.ctx, valAddr).Return(val, nil)
del := types.NewDelegation(addr, valAddr, sdkmath.LegacyNewDec(100))
del := types.NewDelegation(addr.String(), valAddr.String(), sdkmath.LegacyNewDec(100))
s.stakingKeeper.EXPECT().Delegation(s.ctx, addr, valAddr).Return(del, nil)
@ -244,7 +244,7 @@ func (s *KeeperTestSuite) TestUnjail() {
s.slashingKeeper.SetValidatorSigningInfo(s.ctx, sdk.ConsAddress(addr), info)
s.stakingKeeper.EXPECT().Validator(s.ctx, valAddr).Return(val, nil)
del := types.NewDelegation(addr, valAddr, sdkmath.LegacyNewDec(100))
del := types.NewDelegation(addr.String(), valAddr.String(), sdkmath.LegacyNewDec(100))
s.stakingKeeper.EXPECT().Delegation(s.ctx, addr, valAddr).Return(del, nil)
@ -274,7 +274,7 @@ func (s *KeeperTestSuite) TestUnjail() {
s.slashingKeeper.SetValidatorSigningInfo(s.ctx, sdk.ConsAddress(addr), info)
s.stakingKeeper.EXPECT().Validator(s.ctx, valAddr).Return(val, nil)
del := types.NewDelegation(addr, valAddr, sdkmath.LegacyNewDec(10000))
del := types.NewDelegation(addr.String(), valAddr.String(), sdkmath.LegacyNewDec(10000))
s.stakingKeeper.EXPECT().Delegation(s.ctx, addr, valAddr).Return(del, nil)
@ -304,7 +304,7 @@ func (s *KeeperTestSuite) TestUnjail() {
s.slashingKeeper.SetValidatorSigningInfo(s.ctx, sdk.ConsAddress(addr), info)
s.stakingKeeper.EXPECT().Validator(s.ctx, valAddr).Return(val, nil)
del := types.NewDelegation(addr, valAddr, sdkmath.LegacyNewDec(100))
del := types.NewDelegation(addr.String(), valAddr.String(), sdkmath.LegacyNewDec(100))
s.stakingKeeper.EXPECT().Delegation(s.ctx, addr, valAddr).Return(del, nil)
s.stakingKeeper.EXPECT().Unjail(s.ctx, sdk.ConsAddress(addr)).Return(nil)

View File

@ -175,9 +175,10 @@ func (suite *SimTestSuite) TestSimulateMsgUnjail() {
validator0, issuedShares := validator0.AddTokensFromDel(delTokens)
val0AccAddress, err := sdk.ValAddressFromBech32(validator0.OperatorAddress)
suite.Require().NoError(err)
selfDelegation := stakingtypes.NewDelegation(val0AccAddress.Bytes(), validator0.GetOperator(), issuedShares)
suite.stakingKeeper.SetDelegation(ctx, selfDelegation)
suite.distrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), val0AccAddress.Bytes(), distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200))
selfDelegation := stakingtypes.NewDelegation(suite.accounts[0].Address.String(), validator0.GetOperator().String(), issuedShares)
suite.Require().NoError(suite.stakingKeeper.SetDelegation(ctx, selfDelegation))
suite.Require().NoError(suite.distrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), val0AccAddress.Bytes(), distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200)))
// begin a new block
suite.app.FinalizeBlock(&abci.RequestFinalizeBlock{Height: suite.app.LastBlockHeight() + 1, Hash: suite.app.LastCommitID().Hash, Time: blockTime})

View File

@ -129,15 +129,20 @@ func (k Keeper) SetDelegation(ctx context.Context, delegation types.Delegation)
return err
}
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return err
}
store := k.storeService.OpenKVStore(ctx)
b := types.MustMarshalDelegation(k.cdc, delegation)
err = store.Set(types.GetDelegationKey(delegatorAddress, delegation.GetValidatorAddr()), b)
err = store.Set(types.GetDelegationKey(delegatorAddress, valAddr), b)
if err != nil {
return err
}
// set the delegation in validator delegator index
return store.Set(types.GetDelegationsByValKey(delegation.GetValidatorAddr(), delegatorAddress), []byte{})
return store.Set(types.GetDelegationsByValKey(valAddr, delegatorAddress), []byte{})
}
// RemoveDelegation removes a delegation
@ -147,18 +152,23 @@ func (k Keeper) RemoveDelegation(ctx context.Context, delegation types.Delegatio
return err
}
// TODO: Consider calling hooks outside of the store wrapper functions, it's unobvious.
if err := k.Hooks().BeforeDelegationRemoved(ctx, delegatorAddress, delegation.GetValidatorAddr()); err != nil {
return err
}
store := k.storeService.OpenKVStore(ctx)
err = store.Delete(types.GetDelegationKey(delegatorAddress, delegation.GetValidatorAddr()))
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return err
}
return store.Delete(types.GetDelegationsByValKey(delegation.GetValidatorAddr(), delegatorAddress))
// TODO: Consider calling hooks outside of the store wrapper functions, it's unobvious.
if err := k.Hooks().BeforeDelegationRemoved(ctx, delegatorAddress, valAddr); err != nil {
return err
}
store := k.storeService.OpenKVStore(ctx)
err = store.Delete(types.GetDelegationKey(delegatorAddress, valAddr))
if err != nil {
return err
}
return store.Delete(types.GetDelegationsByValKey(valAddr, delegatorAddress))
}
// GetUnbondingDelegations returns a given amount of all the delegator unbonding-delegations.
@ -868,7 +878,17 @@ func (k Keeper) Delegate(
err = k.Hooks().BeforeDelegationSharesModified(ctx, delAddr, validator.GetOperator())
} else if errors.Is(err, types.ErrNoDelegation) {
// not found
delegation = types.NewDelegation(delAddr, validator.GetOperator(), math.LegacyZeroDec())
delAddrStr, err1 := k.authKeeper.AddressCodec().BytesToString(delAddr)
if err1 != nil {
return math.LegacyDec{}, err1
}
valAddrStr, err1 := k.validatorAddressCodec.BytesToString(validator.GetOperator())
if err1 != nil {
return math.LegacyDec{}, err1
}
delegation = types.NewDelegation(delAddrStr, valAddrStr, math.LegacyZeroDec())
err = k.Hooks().BeforeDelegationCreated(ctx, delAddr, validator.GetOperator())
} else {
return math.LegacyZeroDec(), err
@ -878,11 +898,6 @@ func (k Keeper) Delegate(
return math.LegacyZeroDec(), err
}
delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(delegation.DelegatorAddress)
if err != nil {
return math.LegacyZeroDec(), err
}
// if subtractAccount is true then we are
// performing a delegation and not a redelegation, thus the source tokens are
// all non bonded
@ -908,7 +923,7 @@ func (k Keeper) Delegate(
}
coins := sdk.NewCoins(sdk.NewCoin(bondDenom, bondAmt))
if err := k.bankKeeper.DelegateCoinsFromAccountToModule(ctx, delegatorAddress, sendName, coins); err != nil {
if err := k.bankKeeper.DelegateCoinsFromAccountToModule(ctx, delAddr, sendName, coins); err != nil {
return math.LegacyDec{}, err
}
} else {
@ -947,7 +962,7 @@ func (k Keeper) Delegate(
}
// Call the after-modification hook
if err := k.Hooks().AfterDelegationModified(ctx, delegatorAddress, delegation.GetValidatorAddr()); err != nil {
if err := k.Hooks().AfterDelegationModified(ctx, delAddr, validator.GetOperator()); err != nil {
return newShares, err
}
@ -1009,8 +1024,14 @@ func (k Keeper) Unbond(
if err = k.SetDelegation(ctx, delegation); err != nil {
return amount, err
}
valAddr, err1 := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return amount, err1
}
// call the after delegation modification hook
err = k.Hooks().AfterDelegationModified(ctx, delegatorAddress, delegation.GetValidatorAddr())
err = k.Hooks().AfterDelegationModified(ctx, delegatorAddress, valAddr)
}
if err != nil {

View File

@ -42,7 +42,7 @@ func (s *KeeperTestSuite) TestDelegation() {
}
// first add a validators[0] to delegate too
bond1to1 := stakingtypes.NewDelegation(addrDels[0], valAddrs[0], math.LegacyNewDec(9))
bond1to1 := stakingtypes.NewDelegation(addrDels[0].String(), valAddrs[0].String(), math.LegacyNewDec(9))
// check the empty keeper first
_, err := keeper.GetDelegation(ctx, addrDels[0], valAddrs[0])
@ -62,11 +62,11 @@ func (s *KeeperTestSuite) TestDelegation() {
require.Equal(bond1to1, resBond)
// add some more records
bond1to2 := stakingtypes.NewDelegation(addrDels[0], valAddrs[1], math.LegacyNewDec(9))
bond1to3 := stakingtypes.NewDelegation(addrDels[0], valAddrs[2], math.LegacyNewDec(9))
bond2to1 := stakingtypes.NewDelegation(addrDels[1], valAddrs[0], math.LegacyNewDec(9))
bond2to2 := stakingtypes.NewDelegation(addrDels[1], valAddrs[1], math.LegacyNewDec(9))
bond2to3 := stakingtypes.NewDelegation(addrDels[1], valAddrs[2], math.LegacyNewDec(9))
bond1to2 := stakingtypes.NewDelegation(addrDels[0].String(), valAddrs[1].String(), math.LegacyNewDec(9))
bond1to3 := stakingtypes.NewDelegation(addrDels[0].String(), valAddrs[2].String(), math.LegacyNewDec(9))
bond2to1 := stakingtypes.NewDelegation(addrDels[1].String(), valAddrs[0].String(), math.LegacyNewDec(9))
bond2to2 := stakingtypes.NewDelegation(addrDels[1].String(), valAddrs[1].String(), math.LegacyNewDec(9))
bond2to3 := stakingtypes.NewDelegation(addrDels[1].String(), valAddrs[2].String(), math.LegacyNewDec(9))
require.NoError(keeper.SetDelegation(ctx, bond1to2))
require.NoError(keeper.SetDelegation(ctx, bond1to3))
require.NoError(keeper.SetDelegation(ctx, bond2to1))
@ -375,7 +375,7 @@ func (s *KeeperTestSuite) TestUnbondDelegation() {
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any())
_ = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(delAddrs[0], valAddrs[0], issuedShares)
delegation := stakingtypes.NewDelegation(delAddrs[0].String(), valAddrs[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
bondTokens := keeper.TokensFromConsensusPower(ctx, 6)
@ -415,7 +415,7 @@ func (s *KeeperTestSuite) TestUndelegateSelfDelegationBelowMinSelfDelegation() {
require.NoError(keeper.SetValidatorByConsAddr(ctx, validator))
require.True(validator.IsBonded())
selfDelegation := stakingtypes.NewDelegation(sdk.AccAddress(addrVals[0].Bytes()), addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(sdk.AccAddress(addrVals[0].Bytes()).String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -425,7 +425,7 @@ func (s *KeeperTestSuite) TestUndelegateSelfDelegationBelowMinSelfDelegation() {
require.Equal(delTokens, issuedShares.RoundInt())
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(addrDels[0], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
@ -462,7 +462,7 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() {
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
require.True(validator.IsBonded())
selfDelegation := stakingtypes.NewDelegation(addrVals[0].Bytes(), addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -472,7 +472,7 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondingValidator() {
require.Equal(delTokens, issuedShares.RoundInt())
stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(addrDels[1], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[1].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
header := ctx.BlockHeader()
@ -539,7 +539,7 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() {
require.True(validator.IsBonded())
val0AccAddr := sdk.AccAddress(addrVals[0])
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -548,7 +548,7 @@ func (s *KeeperTestSuite) TestUndelegateFromUnbondedValidator() {
require.Equal(delTokens, issuedShares.RoundInt())
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
require.True(validator.IsBonded())
delegation := stakingtypes.NewDelegation(addrDels[1], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[1].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
ctx = ctx.WithBlockHeight(10)
@ -618,7 +618,7 @@ func (s *KeeperTestSuite) TestUnbondingAllDelegationFromValidator() {
require.True(validator.IsBonded())
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -629,7 +629,7 @@ func (s *KeeperTestSuite) TestUnbondingAllDelegationFromValidator() {
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
require.True(validator.IsBonded())
delegation := stakingtypes.NewDelegation(addrDels[1], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[1].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
ctx = ctx.WithBlockHeight(10)
@ -789,7 +789,7 @@ func (s *KeeperTestSuite) TestRedelegateToSameValidator() {
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
_, err := keeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[0], math.LegacyNewDec(5))
@ -811,7 +811,7 @@ func (s *KeeperTestSuite) TestRedelegationMaxEntries() {
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any())
_ = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second validator
@ -866,7 +866,7 @@ func (s *KeeperTestSuite) TestRedelegateSelfDelegation() {
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
val0AccAddr := sdk.AccAddress(addrVals[0])
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second validator
@ -883,7 +883,7 @@ func (s *KeeperTestSuite) TestRedelegateSelfDelegation() {
require.Equal(delTokens, issuedShares.RoundInt())
stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(addrDels[0], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[0].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
_, err := keeper.BeginRedelegation(ctx, val0AccAddr, addrVals[0], addrVals[1], math.LegacyNewDecFromInt(delTokens))
@ -915,7 +915,7 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() {
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any())
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -924,7 +924,7 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondingValidator() {
validator, issuedShares = validator.AddTokensFromDel(delTokens)
require.Equal(delTokens, issuedShares.RoundInt())
stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(addrDels[1], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[1].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
// create a second validator
@ -996,7 +996,7 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() {
s.bankKeeper.EXPECT().SendCoinsFromModuleToModule(gomock.Any(), stakingtypes.NotBondedPoolName, stakingtypes.BondedPoolName, gomock.Any())
validator = stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
val0AccAddr := sdk.AccAddress(addrVals[0].Bytes())
selfDelegation := stakingtypes.NewDelegation(val0AccAddr, addrVals[0], issuedShares)
selfDelegation := stakingtypes.NewDelegation(val0AccAddr.String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, selfDelegation))
// create a second delegation to this validator
@ -1005,7 +1005,7 @@ func (s *KeeperTestSuite) TestRedelegateFromUnbondedValidator() {
validator, issuedShares = validator.AddTokensFromDel(delTokens)
require.Equal(delTokens, issuedShares.RoundInt())
stakingkeeper.TestingUpdateValidator(keeper, ctx, validator, true)
delegation := stakingtypes.NewDelegation(addrDels[1], addrVals[0], issuedShares)
delegation := stakingtypes.NewDelegation(addrDels[1].String(), addrVals[0].String(), issuedShares)
require.NoError(keeper.SetDelegation(ctx, delegation))
// create a second validator

View File

@ -84,9 +84,14 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) (res
panic(fmt.Errorf("invalid delegator address: %s", err))
}
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
panic(err)
}
// Call the before-creation hook if not exported
if !data.Exported {
if err := k.Hooks().BeforeDelegationCreated(ctx, delegatorAddress, delegation.GetValidatorAddr()); err != nil {
if err := k.Hooks().BeforeDelegationCreated(ctx, delegatorAddress, valAddr); err != nil {
panic(err)
}
}
@ -97,7 +102,7 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) (res
// Call the after-modification hook if not exported
if !data.Exported {
if err := k.Hooks().AfterDelegationModified(ctx, delegatorAddress, delegation.GetValidatorAddr()); err != nil {
if err := k.Hooks().AfterDelegationModified(ctx, delegatorAddress, valAddr); err != nil {
panic(err)
}
}

View File

@ -148,12 +148,12 @@ func (k Querier) getValidatorDelegationsLegacy(ctx context.Context, req *types.Q
valStore := prefix.NewStore(store, types.DelegationKey)
return query.GenericFilteredPaginate(k.cdc, valStore, req.Pagination, func(key []byte, delegation *types.Delegation) (*types.Delegation, error) {
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
_, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
if !delegation.GetValidatorAddr().Equals(valAddr) {
if !strings.EqualFold(delegation.GetValidatorAddr(), req.ValidatorAddr) {
return nil, nil
}
@ -452,7 +452,12 @@ func (k Querier) DelegatorValidators(ctx context.Context, req *types.QueryDelega
return err
}
validator, err := k.GetValidator(ctx, delegation.GetValidatorAddr())
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return err
}
validator, err := k.GetValidator(ctx, valAddr)
if err != nil {
return err
}
@ -565,12 +570,17 @@ func queryAllRedelegations(store storetypes.KVStore, k Querier, req *types.Query
// util
func delegationToDelegationResponse(ctx context.Context, k *Keeper, del types.Delegation) (types.DelegationResponse, error) {
val, err := k.GetValidator(ctx, del.GetValidatorAddr())
valAddr, err := k.validatorAddressCodec.StringToBytes(del.GetValidatorAddr())
if err != nil {
return types.DelegationResponse{}, err
}
delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(del.DelegatorAddress)
val, err := k.GetValidator(ctx, valAddr)
if err != nil {
return types.DelegationResponse{}, err
}
_, err = k.authKeeper.AddressCodec().StringToBytes(del.DelegatorAddress)
if err != nil {
return types.DelegationResponse{}, err
}
@ -581,7 +591,7 @@ func delegationToDelegationResponse(ctx context.Context, k *Keeper, del types.De
}
return types.NewDelegationResp(
delegatorAddress,
del.DelegatorAddress,
del.GetValidatorAddr(),
del.Shares,
sdk.NewCoin(bondDenom, val.TokensFromShares(del.Shares).TruncateInt()),

View File

@ -199,7 +199,7 @@ func DelegatorSharesInvariant(k *Keeper) sdk.Invariant {
}
for _, delegation := range delegations {
delegationValidatorAddr := delegation.GetValidatorAddr().String()
delegationValidatorAddr := delegation.GetValidatorAddr()
validatorDelegationShares := validatorsDelegationShares[delegationValidatorAddr]
validatorsDelegationShares[delegationValidatorAddr] = validatorDelegationShares.Add(delegation.Shares)
}

View File

@ -239,7 +239,7 @@ func (k msgServer) EditValidator(ctx context.Context, msg *types.MsgEditValidato
// Delegate defines a method for performing a delegation of coins from a delegator to a validator
func (k msgServer) Delegate(ctx context.Context, msg *types.MsgDelegate) (*types.MsgDelegateResponse, error) {
valAddr, valErr := sdk.ValAddressFromBech32(msg.ValidatorAddress)
valAddr, valErr := k.validatorAddressCodec.StringToBytes(msg.ValidatorAddress)
if valErr != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", valErr)
}

View File

@ -566,7 +566,7 @@ func (s *KeeperTestSuite) TestMsgBeginRedelegate() {
require.NotNil(res)
shares := math.LegacyNewDec(100)
del := stakingtypes.NewDelegation(Addr, srcValAddr, shares)
del := stakingtypes.NewDelegation(Addr.String(), srcValAddr.String(), shares)
require.NoError(keeper.SetDelegation(ctx, del))
_, err = keeper.GetDelegation(ctx, Addr, srcValAddr)
require.NoError(err)
@ -720,7 +720,7 @@ func (s *KeeperTestSuite) TestMsgUndelegate() {
require.NotNil(res)
shares := math.LegacyNewDec(100)
del := stakingtypes.NewDelegation(Addr, ValAddr, shares)
del := stakingtypes.NewDelegation(Addr.String(), ValAddr.String(), shares)
require.NoError(keeper.SetDelegation(ctx, del))
_, err = keeper.GetDelegation(ctx, Addr, ValAddr)
require.NoError(err)
@ -845,7 +845,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() {
require.NotNil(res)
shares := math.LegacyNewDec(100)
del := stakingtypes.NewDelegation(Addr, ValAddr, shares)
del := stakingtypes.NewDelegation(Addr.String(), ValAddr.String(), shares)
require.NoError(keeper.SetDelegation(ctx, del))
resDel, err := keeper.GetDelegation(ctx, Addr, ValAddr)
require.NoError(err)

View File

@ -27,7 +27,12 @@ func (k Keeper) GetDelegatorValidators(
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
validator, err := k.GetValidator(ctx, delegation.GetValidatorAddr())
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return nil, err
}
validator, err := k.GetValidator(ctx, valAddr)
if err != nil {
return nil, err
}
@ -48,7 +53,12 @@ func (k Keeper) GetDelegatorValidator(
return validator, err
}
return k.GetValidator(ctx, delegation.GetValidatorAddr())
valAddr, err := k.validatorAddressCodec.StringToBytes(delegation.GetValidatorAddr())
if err != nil {
return validator, err
}
return k.GetValidator(ctx, valAddr)
}
// GetAllDelegatorDelegations returns all delegations of a delegator

View File

@ -90,7 +90,7 @@ func TestDelegationsByValidatorMigrations(t *testing.T) {
var addedDels []stakingtypes.Delegation
for i := 1; i < 11; i++ {
del1 := stakingtypes.NewDelegation(accAddrs[i], valAddrs[0], sdkmath.LegacyNewDec(100))
del1 := stakingtypes.NewDelegation(accAddrs[i].String(), valAddrs[0].String(), sdkmath.LegacyNewDec(100))
store.Set(stakingtypes.GetDelegationKey(accAddrs[i], valAddrs[0]), stakingtypes.MustMarshalDelegation(cdc, del1))
addedDels = append(addedDels, del1)
}

View File

@ -30,7 +30,7 @@ func TestDecodeStore(t *testing.T) {
val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test"))
require.NoError(t, err)
del := types.NewDelegation(delAddr1, valAddr1, math.LegacyOneDec())
del := types.NewDelegation(delAddr1.String(), valAddr1.String(), math.LegacyOneDec())
ubd := types.NewUnbondingDelegation(delAddr1, valAddr1, 15, bondTime, math.OneInt(), 1)
red := types.NewRedelegation(delAddr1, valAddr1, valAddr1, 12, bondTime, math.OneInt(), math.LegacyOneDec(), 0)

View File

@ -84,7 +84,7 @@ func RandomizedGenState(simState *module.SimulationState) {
validator.DelegatorShares = sdkmath.LegacyNewDecFromInt(simState.InitialStake)
validator.Commission = commission
delegation := types.NewDelegation(simState.Accounts[i].Address, valAddr, sdkmath.LegacyNewDecFromInt(simState.InitialStake))
delegation := types.NewDelegation(simState.Accounts[i].Address.String(), valAddr.String(), sdkmath.LegacyNewDecFromInt(simState.InitialStake))
validators = append(validators, validator)
delegations = append(delegations, delegation)

View File

@ -379,7 +379,12 @@ func SimulateMsgUndelegate(
delegation := delegations[r.Intn(len(delegations))]
delAddr := delegation.GetDelegatorAddr()
hasMaxUD, err := k.HasMaxUnbondingDelegationEntries(ctx, delAddr, valAddr)
delAddrBz, err := ak.AddressCodec().StringToBytes(delAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting delegator address bytes"), nil, err
}
hasMaxUD, err := k.HasMaxUnbondingDelegationEntries(ctx, delAddrBz, valAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting max unbonding delegation entries"), nil, err
}
@ -408,14 +413,14 @@ func SimulateMsgUndelegate(
}
msg := types.NewMsgUndelegate(
delAddr, valAddr, sdk.NewCoin(bondDenom, unbondAmt),
delAddrBz, valAddr, sdk.NewCoin(bondDenom, unbondAmt),
)
// need to retrieve the simulation account associated with delegation to retrieve PrivKey
var simAccount simtypes.Account
for _, simAcc := range accs {
if simAcc.Address.Equals(delAddr) {
if simAcc.Address.Equals(sdk.AccAddress(delAddrBz)) {
simAccount = simAcc
break
}
@ -425,7 +430,7 @@ func SimulateMsgUndelegate(
return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "account private key is nil"), nil, nil
}
account := ak.GetAccount(ctx, delAddr)
account := ak.GetAccount(ctx, delAddrBz)
spendable := bk.SpendableCoins(ctx, account.GetAddress())
txCtx := simulation.OperationInput{
@ -583,7 +588,12 @@ func SimulateMsgBeginRedelegate(
delegation := delegations[r.Intn(len(delegations))]
delAddr := delegation.GetDelegatorAddr()
hasRecRedel, err := k.HasReceivingRedelegation(ctx, delAddr, srcAddr)
delAddrBz, err := ak.AddressCodec().StringToBytes(delAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting delegator address bytes"), nil, err
}
hasRecRedel, err := k.HasReceivingRedelegation(ctx, delAddrBz, srcAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting receiving redelegation"), nil, err
}
@ -599,7 +609,7 @@ func SimulateMsgBeginRedelegate(
}
destAddr := destVal.GetOperator()
hasMaxRedel, err := k.HasMaxRedelegationEntries(ctx, delAddr, srcAddr, destAddr)
hasMaxRedel, err := k.HasMaxRedelegationEntries(ctx, delAddrBz, srcAddr, destAddr)
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, msgType, "error getting max redelegation entries"), nil, err
}
@ -636,7 +646,7 @@ func SimulateMsgBeginRedelegate(
var simAccount simtypes.Account
for _, simAcc := range accs {
if simAcc.Address.Equals(delAddr) {
if simAcc.Address.Equals(sdk.AccAddress(delAddrBz)) {
simAccount = simAcc
break
}
@ -647,7 +657,7 @@ func SimulateMsgBeginRedelegate(
return simtypes.NoOpMsg(types.ModuleName, msgType, "account private key is nil"), nil, nil
}
account := ak.GetAccount(ctx, delAddr)
account := ak.GetAccount(ctx, delAddrBz)
spendable := bk.SpendableCoins(ctx, account.GetAddress())
bondDenom, err := k.BondDenom(ctx)
@ -656,7 +666,7 @@ func SimulateMsgBeginRedelegate(
}
msg := types.NewMsgBeginRedelegate(
delAddr, srcAddr, destAddr,
delAddrBz, srcAddr, destAddr,
sdk.NewCoin(bondDenom, redAmt),
)

View File

@ -196,7 +196,7 @@ func (s *SimTestSuite) TestSimulateMsgCancelUnbondingDelegation() {
delTokens := s.stakingKeeper.TokensFromConsensusPower(ctx, 2)
validator0, issuedShares := validator0.AddTokensFromDel(delTokens)
delegator := s.accounts[2]
delegation := types.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares)
delegation := types.NewDelegation(delegator.Address.String(), validator0.GetOperator().String(), issuedShares)
require.NoError(s.stakingKeeper.SetDelegation(ctx, delegation))
require.NoError(s.distrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200)))
@ -290,7 +290,7 @@ func (s *SimTestSuite) TestSimulateMsgUndelegate() {
delTokens := s.stakingKeeper.TokensFromConsensusPower(ctx, 2)
validator0, issuedShares := validator0.AddTokensFromDel(delTokens)
delegator := s.accounts[2]
delegation := types.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares)
delegation := types.NewDelegation(delegator.Address.String(), validator0.GetOperator().String(), issuedShares)
require.NoError(s.stakingKeeper.SetDelegation(ctx, delegation))
require.NoError(s.distrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200)))
@ -332,7 +332,7 @@ func (s *SimTestSuite) TestSimulateMsgBeginRedelegate() {
// setup accounts[3] as delegator
delegator := s.accounts[3]
delegation := types.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares)
delegation := types.NewDelegation(delegator.Address.String(), validator0.GetOperator().String(), issuedShares)
require.NoError(s.stakingKeeper.SetDelegation(ctx, delegation))
require.NoError(s.distrKeeper.SetDelegatorStartingInfo(ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, math.LegacyOneDec(), 200)))

View File

@ -15,10 +15,10 @@ import (
var _ DelegationI = Delegation{}
// NewDelegation creates a new delegation object
func NewDelegation(delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, shares math.LegacyDec) Delegation {
func NewDelegation(delegatorAddr, validatorAddr string, shares math.LegacyDec) Delegation {
return Delegation{
DelegatorAddress: delegatorAddr.String(),
ValidatorAddress: validatorAddr.String(),
DelegatorAddress: delegatorAddr,
ValidatorAddress: validatorAddr,
Shares: shares,
}
}
@ -45,18 +45,12 @@ func UnmarshalDelegation(cdc codec.BinaryCodec, value []byte) (delegation Delega
return delegation, err
}
func (d Delegation) GetDelegatorAddr() sdk.AccAddress {
delAddr := sdk.MustAccAddressFromBech32(d.DelegatorAddress)
return delAddr
func (d Delegation) GetDelegatorAddr() string {
return d.DelegatorAddress
}
func (d Delegation) GetValidatorAddr() sdk.ValAddress {
addr, err := sdk.ValAddressFromBech32(d.ValidatorAddress)
if err != nil {
panic(err)
}
return addr
func (d Delegation) GetValidatorAddr() string {
return d.ValidatorAddress
}
func (d Delegation) GetShares() math.LegacyDec { return d.Shares }
@ -273,7 +267,7 @@ func (d Redelegations) String() (out string) {
// NewDelegationResp creates a new DelegationResponse instance
func NewDelegationResp(
delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress, shares math.LegacyDec, balance sdk.Coin,
delegatorAddr, validatorAddr string, shares math.LegacyDec, balance sdk.Coin,
) DelegationResponse {
return DelegationResponse{
Delegation: NewDelegation(delegatorAddr, validatorAddr, shares),

View File

@ -16,7 +16,7 @@ import (
)
func TestDelegationEqual(t *testing.T) {
d1 := types.NewDelegation(sdk.AccAddress(valAddr1), valAddr2, math.LegacyNewDec(100))
d1 := types.NewDelegation(sdk.AccAddress(valAddr1).String(), valAddr2.String(), math.LegacyNewDec(100))
d2 := d1
ok := d1.String() == d2.String()
@ -30,7 +30,7 @@ func TestDelegationEqual(t *testing.T) {
}
func TestDelegationString(t *testing.T) {
d := types.NewDelegation(sdk.AccAddress(valAddr1), valAddr2, math.LegacyNewDec(100))
d := types.NewDelegation(sdk.AccAddress(valAddr1).String(), valAddr2.String(), math.LegacyNewDec(100))
require.NotEmpty(t, d.String())
}
@ -80,9 +80,9 @@ func TestRedelegationString(t *testing.T) {
func TestDelegationResponses(t *testing.T) {
cdc := codec.NewLegacyAmino()
dr1 := types.NewDelegationResp(sdk.AccAddress(valAddr1), valAddr2, math.LegacyNewDec(5),
dr1 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr2.String(), math.LegacyNewDec(5),
sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)))
dr2 := types.NewDelegationResp(sdk.AccAddress(valAddr1), valAddr3, math.LegacyNewDec(5),
dr2 := types.NewDelegationResp(sdk.AccAddress(valAddr1).String(), valAddr3.String(), math.LegacyNewDec(5),
sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(5)))
drs := types.DelegationResponses{dr1, dr2}

View File

@ -11,9 +11,9 @@ import (
// DelegationI delegation bond for a delegated proof of stake system
type DelegationI interface {
GetDelegatorAddr() sdk.AccAddress // delegator sdk.AccAddress for the bond
GetValidatorAddr() sdk.ValAddress // validator operator address
GetShares() math.LegacyDec // amount of validator's shares held in this delegation
GetDelegatorAddr() string // delegator string for the bond
GetValidatorAddr() string // validator operator address
GetShares() math.LegacyDec // amount of validator's shares held in this delegation
}
// ValidatorI expected validator functions

View File

@ -633,9 +633,9 @@ func (m *DVVTriplets) GetTriplets() []DVVTriplet {
// owned by one delegator, and is associated with the voting power of one
// validator.
type Delegation struct {
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"`
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
// shares define the delegation shares received.
Shares cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=shares,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"shares"`
@ -677,9 +677,9 @@ var xxx_messageInfo_Delegation proto.InternalMessageInfo
// UnbondingDelegation stores all of a single delegator's unbonding bonds
// for a single validator in an time-ordered list.
type UnbondingDelegation struct {
// delegator_address is the bech32-encoded address of the delegator.
// delegator_address is the encoded address of the delegator.
DelegatorAddress string `protobuf:"bytes,1,opt,name=delegator_address,json=delegatorAddress,proto3" json:"delegator_address,omitempty"`
// validator_address is the bech32-encoded address of the validator.
// validator_address is the encoded address of the validator.
ValidatorAddress string `protobuf:"bytes,2,opt,name=validator_address,json=validatorAddress,proto3" json:"validator_address,omitempty"`
// entries are the unbonding delegation entries.
Entries []UnbondingDelegationEntry `protobuf:"bytes,3,rep,name=entries,proto3" json:"entries"`