Co-authored-by: Marko <marbar3778@yahoo.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
parent
609a4e8c8b
commit
16ab635645
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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,
|
||||
},
|
||||
|
||||
@ -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)))
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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()))
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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()),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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
|
||||
},
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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}
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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})
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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()),
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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),
|
||||
)
|
||||
|
||||
|
||||
@ -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)))
|
||||
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"`
|
||||
|
||||
Loading…
Reference in New Issue
Block a user