refactor: remove global valaddress bech32 codec calls (1/2) (#17098)

Co-authored-by: Devon Bear <itsdevbear@berachain.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
Marko 2023-07-26 21:01:21 +02:00 committed by GitHub
parent 026073ba19
commit 58855c6859
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
91 changed files with 543 additions and 349 deletions

View File

@ -75,6 +75,15 @@ Ref: https://keepachangelog.com/en/1.0.0/
* remove `Keeper`: `IterateValidatorHistoricalRewards`, `GetValidatorHistoricalRewards`, `SetValidatorHistoricalRewards`, `DeleteValidatorHistoricalRewards`, `DeleteValidatorHistoricalReward`, `DeleteAllValidatorHistoricalRewards`
* (x/slashing) [#16441](https://github.com/cosmos/cosmos-sdk/pull/16441) Params state is migrated to collections. `GetParams` has been removed.
* (types) [#16918](https://github.com/cosmos/cosmos-sdk/pull/16918) Remove `IntProto` and `DecProto`. Instead, `math.Int` and `math.LegacyDec` should be used respectively. Both types support `Marshal` and `Unmarshal` which should be used for binary marshaling.
* (x/staking) [#17098](https://github.com/cosmos/cosmos-sdk/pull/17098) `NewMsgCreateValidator`, `NewValidator`, `NewMsgCancelUnbondingDelegation`, `NewMsgUndelegate`, `NewMsgBeginRedelegate`, `NewMsgDelegate` and `NewMsgEditValidator` takes a string instead of `sdk.ValAddress` or `sdk.AccAddress`
* `NewMsgCreateValidator.Validate()` takes an address codec in order to decode the address
* `NewRedelegationResponse` takes a string instead of `sdk.ValAddress` or `sdk.AccAddress`
* `NewRedelegation` and `NewUnbondingDelegation` takes a validatorAddressCodec and a delegatorAddressCodec in order to decode the addresses
* `BuildCreateValidatorMsg` takes a ValidatorAddressCodec in order to decode addresses
* (x/slashing) [#17098](https://github.com/cosmos/cosmos-sdk/pull/17098) `NewMsgUnjail` takes a string instead of `sdk.ValAddress`
* (x/genutil) [#17098](https://github.com/cosmos/cosmos-sdk/pull/17098) `GenAppStateFromConfig`, AddGenesisAccountCmd and `GenTxCmd` takes an addresscodec to decode addresses
* (x/distribution) [#17098](https://github.com/cosmos/cosmos-sdk/pull/17098) `NewMsgDepositValidatorRewardsPool`, `NewMsgFundCommunityPool`, `NewMsgWithdrawValidatorCommission` and `NewMsgWithdrawDelegatorReward` takes a string instead of `sdk.ValAddress` or `sdk.AccAddress`
### CLI Breaking Changes

View File

@ -23,6 +23,7 @@ import (
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types"
"github.com/cosmos/cosmos-sdk/runtime"
"github.com/cosmos/cosmos-sdk/server"
srvconfig "github.com/cosmos/cosmos-sdk/server/config"
"github.com/cosmos/cosmos-sdk/testutil"
@ -144,7 +145,7 @@ Example:
args.numValidators, _ = cmd.Flags().GetInt(flagNumValidators)
args.algo, _ = cmd.Flags().GetString(flags.FlagKeyType)
return initTestnetFiles(clientCtx, cmd, config, mbm, genBalIterator, args)
return initTestnetFiles(clientCtx, cmd, config, mbm, genBalIterator, clientCtx.TxConfig.SigningContext().ValidatorAddressCodec(), args)
},
}
@ -204,6 +205,7 @@ func initTestnetFiles(
nodeConfig *cmtconfig.Config,
mbm module.BasicManager,
genBalIterator banktypes.GenesisBalancesIterator,
valAddrCodec runtime.ValidatorAddressCodec,
args initArgs,
) error {
if args.chainID == "" {
@ -296,9 +298,13 @@ func initTestnetFiles(
genBalances = append(genBalances, banktypes.Balance{Address: addr.String(), Coins: coins.Sort()})
genAccounts = append(genAccounts, authtypes.NewBaseAccount(addr, nil, 0, 0))
valStr, err := valAddrCodec.BytesToString(sdk.ValAddress(addr))
if err != nil {
return err
}
valTokens := sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction)
createValMsg, err := stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(addr),
valStr,
valPubKeys[i],
sdk.NewCoin(sdk.DefaultBondDenom, valTokens),
stakingtypes.NewDescription(nodeDirName, "", "", "", ""),
@ -345,7 +351,7 @@ func initTestnetFiles(
err := collectGenFiles(
clientCtx, nodeConfig, args.chainID, nodeIDs, valPubKeys, args.numValidators,
args.outputDir, args.nodeDirPrefix, args.nodeDaemonHome, genBalIterator,
args.outputDir, args.nodeDirPrefix, args.nodeDaemonHome, genBalIterator, valAddrCodec,
)
if err != nil {
return err
@ -402,7 +408,7 @@ func initGenFiles(
func collectGenFiles(
clientCtx client.Context, nodeConfig *cmtconfig.Config, chainID string,
nodeIDs []string, valPubKeys []cryptotypes.PubKey, numValidators int,
outputDir, nodeDirPrefix, nodeDaemonHome string, genBalIterator banktypes.GenesisBalancesIterator,
outputDir, nodeDirPrefix, nodeDaemonHome string, genBalIterator banktypes.GenesisBalancesIterator, valAddrCodec runtime.ValidatorAddressCodec,
) error {
var appState json.RawMessage
genTime := cmttime.Now()
@ -423,7 +429,8 @@ func collectGenFiles(
return err
}
nodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.Codec, clientCtx.TxConfig, nodeConfig, initCfg, appGenesis, genBalIterator, genutiltypes.DefaultMessageValidator)
nodeAppState, err := genutil.GenAppStateFromConfig(clientCtx.Codec, clientCtx.TxConfig, nodeConfig, initCfg, appGenesis, genBalIterator, genutiltypes.DefaultMessageValidator,
valAddrCodec)
if err != nil {
return err
}

View File

@ -172,7 +172,7 @@ var (
)
func execDelegate(val *network.Validator, args []string) (testutil.BufferWriter, error) {
cmd := stakingcli.NewDelegateCmd()
cmd := stakingcli.NewDelegateCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
clientCtx := val.ClientCtx
return clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
}

View File

@ -139,7 +139,7 @@ func (s *E2ETestSuite) TestNewWithdrawRewardsCmd() {
_, _ = s.network.WaitForHeightWithTimeout(10, time.Minute)
ctx := svrcmd.CreateExecuteContext(context.Background())
cmd := cli.NewWithdrawRewardsCmd()
cmd := cli.NewWithdrawRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
cmd.SetContext(ctx)
cmd.SetArgs(args)
s.Require().NoError(client.SetCmdClientContextHandler(clientCtx, cmd))
@ -227,7 +227,7 @@ func (s *E2ETestSuite) TestNewWithdrawAllRewardsCmd() {
tc := tc
s.Run(tc.name, func() {
cmd := cli.NewWithdrawAllRewardsCmd()
cmd := cli.NewWithdrawAllRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
clientCtx := val.ClientCtx
_, _ = s.network.WaitForHeightWithTimeout(10, time.Minute)
@ -367,7 +367,7 @@ func (s *E2ETestSuite) TestNewFundCommunityPoolCmd() {
tc := tc
s.Run(tc.name, func() {
cmd := cli.NewFundCommunityPoolCmd()
cmd := cli.NewFundCommunityPoolCmd(address.NewBech32Codec("cosmos"))
clientCtx := val.ClientCtx
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)

View File

@ -10,7 +10,7 @@ import (
"cosmossdk.io/simapp"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
"github.com/cosmos/cosmos-sdk/testutil"
@ -66,7 +66,7 @@ func (s *WithdrawAllTestSuite) TestNewWithdrawAllRewardsGenerateOnly() {
val.ClientCtx,
val.Address,
newAddr,
sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(2000))), addresscodec.NewBech32Codec("cosmos"), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(2000))), address.NewBech32Codec("cosmos"), fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(10))).String()),
)
@ -82,7 +82,7 @@ func (s *WithdrawAllTestSuite) TestNewWithdrawAllRewardsGenerateOnly() {
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(10))).String()),
}
cmd := stakingcli.NewDelegateCmd()
cmd := stakingcli.NewDelegateCmd(clientCtx.InterfaceRegistry.SigningContext().ValidatorAddressCodec(), clientCtx.InterfaceRegistry.SigningContext().AddressCodec())
_, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
require.NoError(err)
require.NoError(s.network.WaitForNextBlock())
@ -109,7 +109,7 @@ func (s *WithdrawAllTestSuite) TestNewWithdrawAllRewardsGenerateOnly() {
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(10))).String()),
}
cmd = cli.NewWithdrawAllRewardsCmd()
cmd = cli.NewWithdrawAllRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
if err != nil {
return err
@ -132,7 +132,7 @@ func (s *WithdrawAllTestSuite) TestNewWithdrawAllRewardsGenerateOnly() {
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, math.NewInt(10))).String()),
}
cmd = cli.NewWithdrawAllRewardsCmd()
cmd = cli.NewWithdrawAllRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
out, err = clitestutil.ExecTestCLICmd(clientCtx, cmd, args)
require.NoError(err)
// expect 1 transaction in the generated file when --max-msgs in a tx set 2, since there are only delegations.

View File

@ -115,7 +115,7 @@ func (s *E2ETestSuite) TestBlockResults() {
require.NoError(s.network.WaitForNextBlock())
// Use CLI to create a delegation from the new account to validator `val`.
cmd := cli.NewDelegateCmd()
cmd := cli.NewDelegateCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
_, err = clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, []string{
val.ValAddress.String(),
sdk.NewCoin(s.cfg.BondDenom, math.NewInt(150)).String(),

View File

@ -7,6 +7,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/testutil"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -31,7 +32,7 @@ func MsgRedelegateExec(clientCtx client.Context, from, src, dst, amount fmt.Stri
args = append(args, extraArgs...)
args = append(args, commonArgs...)
return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewRedelegateCmd(), args)
return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewRedelegateCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")), args)
}
// MsgUnbondExec creates a unbond message.
@ -47,5 +48,5 @@ func MsgUnbondExec(clientCtx client.Context, from, valAddress,
args = append(args, commonArgs...)
args = append(args, extraArgs...)
return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewUnbondCmd(), args)
return clitestutil.ExecTestCLICmd(clientCtx, stakingcli.NewUnbondCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos")), args)
}

View File

@ -776,7 +776,7 @@ func createValidator(t *testing.T, ctx sdk.Context, bankKeeper bankkeeper.Keeper
valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs)
pks := simtestutil.CreateTestPubKeys(1)
val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{})
val1, err := stakingtypes.NewValidator(valAddrs[0].String(), pks[0], stakingtypes.Description{})
require.NoError(t, err)
require.NoError(t, stakingKeeper.SetValidator(ctx, val1))

View File

@ -174,7 +174,7 @@ func TestMsgWithdrawDelegatorReward(t *testing.T) {
}
// setup staking validator
validator, err := stakingtypes.NewValidator(f.valAddr, PKS[0], stakingtypes.Description{})
validator, err := stakingtypes.NewValidator(f.valAddr.String(), PKS[0], stakingtypes.Description{})
assert.NilError(t, err)
commission := stakingtypes.NewCommission(math.LegacyZeroDec(), math.LegacyOneDec(), math.LegacyOneDec())
validator, err = validator.SetInitialCommission(commission)

View File

@ -41,11 +41,11 @@ func createValidators(t *testing.T, f *fixture, powers []int64) ([]sdk.AccAddres
valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs)
pks := simtestutil.CreateTestPubKeys(5)
val1, err := stakingtypes.NewValidator(valAddrs[0], pks[0], stakingtypes.Description{})
val1, err := stakingtypes.NewValidator(valAddrs[0].String(), pks[0], stakingtypes.Description{})
assert.NilError(t, err)
val2, err := stakingtypes.NewValidator(valAddrs[1], pks[1], stakingtypes.Description{})
val2, err := stakingtypes.NewValidator(valAddrs[1].String(), pks[1], stakingtypes.Description{})
assert.NilError(t, err)
val3, err := stakingtypes.NewValidator(valAddrs[2], pks[2], stakingtypes.Description{})
val3, err := stakingtypes.NewValidator(valAddrs[2].String(), pks[2], stakingtypes.Description{})
assert.NilError(t, err)
assert.NilError(t, f.stakingKeeper.SetValidator(f.ctx, val1))

View File

@ -196,7 +196,7 @@ func TestInitGenesisLargeValidatorSet(t *testing.T) {
bondedPoolAmt := math.ZeroInt()
for i := range validators {
validators[i], err = types.NewValidator(
sdk.ValAddress(addrs[i]),
sdk.ValAddress(addrs[i]).String(),
PKs[i],
types.NewDescription(fmt.Sprintf("#%d", i), "", "", "", ""),
)

View File

@ -568,7 +568,7 @@ func TestGRPCQueryUnbondingDelegation(t *testing.T) {
}
},
false,
"invalid Bech32",
"hrp does not match bech32 prefix",
},
{
"delegation not found for validator",

View File

@ -8,6 +8,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec/address"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/bank/testutil"
@ -40,7 +41,7 @@ func TestCancelUnbondingDelegation(t *testing.T) {
delegatorAddr := addrs[1]
// setup a new validator with bonded status
validator, err := types.NewValidator(valAddr, PKs[0], types.NewDescription("Validator", "", "", "", ""))
validator, err := types.NewValidator(valAddr.String(), PKs[0], types.NewDescription("Validator", "", "", "", ""))
validator.Status = types.Bonded
assert.NilError(t, err)
assert.NilError(t, f.stakingKeeper.SetValidator(ctx, validator))
@ -55,6 +56,7 @@ func TestCancelUnbondingDelegation(t *testing.T) {
ctx.BlockTime().Add(time.Minute*10),
unbondingAmount.Amount,
0,
address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"),
)
// set and retrieve a record

View File

@ -10,6 +10,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
"github.com/cosmos/cosmos-sdk/x/staking/keeper"
@ -62,7 +63,7 @@ func TestSlashUnbondingDelegation(t *testing.T) {
// set an unbonding delegation with expiration timestamp (beyond which the
// unbonding delegation shouldn't be slashed)
ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 0,
time.Unix(5, 0), math.NewInt(10), 0)
time.Unix(5, 0), math.NewInt(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd))
@ -121,7 +122,7 @@ func TestSlashRedelegation(t *testing.T) {
// set a redelegation with an expiration timestamp beyond which the
// redelegation shouldn't be slashed
rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0,
time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), 0)
time.Unix(5, 0), math.NewInt(10), math.LegacyNewDec(10), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd))
@ -259,7 +260,7 @@ func TestSlashWithUnbondingDelegation(t *testing.T) {
// set an unbonding delegation with expiration timestamp beyond which the
// unbonding delegation shouldn't be slashed
ubdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4)
ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, 0)
ubd := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11, time.Unix(0, 0), ubdTokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubd))
// slash validator for the first time
@ -389,7 +390,7 @@ func TestSlashWithRedelegation(t *testing.T) {
// set a redelegation
rdTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6)
rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), 0)
rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdTokens, math.LegacyNewDecFromInt(rdTokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rd))
// set the associated delegation
@ -547,7 +548,7 @@ func TestSlashBoth(t *testing.T) {
// set a redelegation with expiration timestamp beyond which the
// redelegation shouldn't be slashed
rdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 6)
rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), 0)
rdA := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 11, time.Unix(0, 0), rdATokens, math.LegacyNewDecFromInt(rdATokens), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetRedelegation(f.sdkCtx, rdA))
// set the associated delegation
@ -558,7 +559,7 @@ func TestSlashBoth(t *testing.T) {
// unbonding delegation shouldn't be slashed)
ubdATokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, 4)
ubdA := types.NewUnbondingDelegation(addrDels[0], addrVals[0], 11,
time.Unix(0, 0), ubdATokens, 0)
time.Unix(0, 0), ubdATokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
assert.NilError(t, f.stakingKeeper.SetUnbondingDelegation(f.sdkCtx, ubdA))
bondedCoins := sdk.NewCoins(sdk.NewCoin(bondDenom, rdATokens.MulRaw(2)))

View File

@ -20,7 +20,7 @@ import (
func newMonikerValidator(tb testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey, moniker string) types.Validator {
tb.Helper()
v, err := types.NewValidator(operator, pubKey, types.Description{Moniker: moniker})
v, err := types.NewValidator(operator.String(), pubKey, types.Description{Moniker: moniker})
assert.NilError(tb, err)
return v
}

View File

@ -18,6 +18,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec/address"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
"github.com/cosmos/cosmos-sdk/runtime"
@ -203,7 +204,7 @@ func (s *SimTestSuite) TestSimulateMsgCancelUnbondingDelegation() {
s.setupValidatorRewards(ctx, validator0.GetOperator())
// unbonding delegation
udb := types.NewUnbondingDelegation(delegator.Address, validator0.GetOperator(), s.app.LastBlockHeight()+1, blockTime.Add(2*time.Minute), delTokens, 0)
udb := types.NewUnbondingDelegation(delegator.Address, validator0.GetOperator(), s.app.LastBlockHeight()+1, blockTime.Add(2*time.Minute), delTokens, 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
require.NoError(s.stakingKeeper.SetUnbondingDelegation(ctx, udb))
s.setupValidatorRewards(ctx, validator0.GetOperator())

View File

@ -521,7 +521,7 @@ func New(l Logger, baseDir string, cfg Config) (*Network, error) {
}
createValMsg, err := stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(addr),
sdk.ValAddress(addr).String(),
valPubKeys[i],
sdk.NewCoin(cfg.BondDenom, cfg.BondedTokens),
stakingtypes.NewDescription(nodeDirName, "", "", "", ""),

View File

@ -142,7 +142,7 @@ func collectGenFiles(cfg Config, vals []*Validator, outputDir string) error {
}
appState, err := genutil.GenAppStateFromConfig(cfg.Codec, cfg.TxConfig,
cmtCfg, initCfg, appGenesis, banktypes.GenesisBalancesIterator{}, genutiltypes.DefaultMessageValidator)
cmtCfg, initCfg, appGenesis, banktypes.GenesisBalancesIterator{}, genutiltypes.DefaultMessageValidator, cfg.TxConfig.SigningContext().ValidatorAddressCodec())
if err != nil {
return err
}

View File

@ -12,6 +12,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/codec/address"
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
@ -97,7 +98,7 @@ func (b *GenesisBuilder) GenTx(privVal secp256k1.PrivKey, val cmttypes.GenesisVa
// Produce the create validator message.
msg, err := stakingtypes.NewMsgCreateValidator(
privVal.PubKey().Address().Bytes(),
sdk.ValAddress(privVal.PubKey().Address()).String(),
pubKey,
amount,
stakingtypes.Description{
@ -114,7 +115,7 @@ func (b *GenesisBuilder) GenTx(privVal secp256k1.PrivKey, val cmttypes.GenesisVa
panic(err)
}
if err := msg.Validate(); err != nil {
if err := msg.Validate(address.NewBech32Codec("cosmosvaloper")); err != nil {
panic(err)
}

View File

@ -28,7 +28,7 @@ const (
)
// NewTxCmd returns a root CLI command handler for all x/distribution transaction commands.
func NewTxCmd(ac address.Codec) *cobra.Command {
func NewTxCmd(valAc, ac address.Codec) *cobra.Command {
distTxCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Distribution transactions subcommands",
@ -38,11 +38,11 @@ func NewTxCmd(ac address.Codec) *cobra.Command {
}
distTxCmd.AddCommand(
NewWithdrawRewardsCmd(),
NewWithdrawAllRewardsCmd(),
NewWithdrawRewardsCmd(valAc, ac),
NewWithdrawAllRewardsCmd(valAc, ac),
NewSetWithdrawAddrCmd(ac),
NewFundCommunityPoolCmd(),
NewDepositValidatorRewardsPoolCmd(),
NewFundCommunityPoolCmd(ac),
NewDepositValidatorRewardsPoolCmd(valAc, ac),
)
return distTxCmd
@ -77,7 +77,7 @@ func newSplitAndApply(
}
// NewWithdrawRewardsCmd returns a CLI command handler for creating a MsgWithdrawDelegatorReward transaction.
func NewWithdrawRewardsCmd() *cobra.Command {
func NewWithdrawRewardsCmd(valCodec, ac address.Codec) *cobra.Command {
bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix()
cmd := &cobra.Command{
@ -100,16 +100,20 @@ $ %s tx distribution withdraw-rewards %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
if err != nil {
return err
}
delAddr := clientCtx.GetFromAddress()
valAddr, err := sdk.ValAddressFromBech32(args[0])
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
msgs := []sdk.Msg{types.NewMsgWithdrawDelegatorReward(delAddr, valAddr)}
_, err = valCodec.StringToBytes(args[0])
if err != nil {
return err
}
msgs := []sdk.Msg{types.NewMsgWithdrawDelegatorReward(delAddr, args[0])}
if commission, _ := cmd.Flags().GetBool(FlagCommission); commission {
msgs = append(msgs, types.NewMsgWithdrawValidatorCommission(valAddr))
msgs = append(msgs, types.NewMsgWithdrawValidatorCommission(args[0]))
}
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msgs...)
@ -123,7 +127,7 @@ $ %s tx distribution withdraw-rewards %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
}
// NewWithdrawAllRewardsCmd returns a CLI command handler for creating a MsgWithdrawDelegatorReward transaction.
func NewWithdrawAllRewardsCmd() *cobra.Command {
func NewWithdrawAllRewardsCmd(valCodec, ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "withdraw-all-rewards",
Short: "withdraw all delegations rewards for a delegator",
@ -143,7 +147,10 @@ $ %[1]s tx distribution withdraw-all-rewards --from mykey
if err != nil {
return err
}
delAddr := clientCtx.GetFromAddress()
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
// The transaction cannot be generated offline since it requires a query
// to get all the validators.
@ -152,7 +159,7 @@ $ %[1]s tx distribution withdraw-all-rewards --from mykey
}
queryClient := types.NewQueryClient(clientCtx)
delValsRes, err := queryClient.DelegatorValidators(cmd.Context(), &types.QueryDelegatorValidatorsRequest{DelegatorAddress: delAddr.String()})
delValsRes, err := queryClient.DelegatorValidators(cmd.Context(), &types.QueryDelegatorValidatorsRequest{DelegatorAddress: delAddr})
if err != nil {
return err
}
@ -161,12 +168,12 @@ $ %[1]s tx distribution withdraw-all-rewards --from mykey
// build multi-message transaction
msgs := make([]sdk.Msg, 0, len(validators))
for _, valAddr := range validators {
val, err := sdk.ValAddressFromBech32(valAddr)
_, err := valCodec.StringToBytes(valAddr)
if err != nil {
return err
}
msg := types.NewMsgWithdrawDelegatorReward(delAddr, val)
msg := types.NewMsgWithdrawDelegatorReward(delAddr, valAddr)
msgs = append(msgs, msg)
}
@ -222,7 +229,7 @@ $ %s tx distribution set-withdraw-addr %s1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
}
// NewFundCommunityPoolCmd returns a CLI command handler for creating a MsgFundCommunityPool transaction.
func NewFundCommunityPoolCmd() *cobra.Command {
func NewFundCommunityPoolCmd(ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "fund-community-pool [amount]",
Args: cobra.ExactArgs(1),
@ -241,7 +248,10 @@ $ %s tx distribution fund-community-pool 100uatom --from mykey
if err != nil {
return err
}
depositorAddr := clientCtx.GetFromAddress()
depositorAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
amount, err := sdk.ParseCoinsNormalized(args[0])
if err != nil {
return err
@ -260,7 +270,7 @@ $ %s tx distribution fund-community-pool 100uatom --from mykey
// NewDepositValidatorRewardsPoolCmd returns a CLI command handler for creating
// a MsgDepositValidatorRewardsPool transaction.
func NewDepositValidatorRewardsPoolCmd() *cobra.Command {
func NewDepositValidatorRewardsPoolCmd(valCodec, ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "fund-validator-rewards-pool [val_addr] [amount]",
Args: cobra.ExactArgs(2),
@ -275,9 +285,12 @@ func NewDepositValidatorRewardsPoolCmd() *cobra.Command {
return err
}
depositorAddr := clientCtx.GetFromAddress()
depositorAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
valAddr, err := sdk.ValAddressFromBech32(args[0])
_, err = valCodec.StringToBytes(args[0])
if err != nil {
return err
}
@ -287,7 +300,7 @@ func NewDepositValidatorRewardsPoolCmd() *cobra.Command {
return err
}
msg := types.NewMsgDepositValidatorRewardsPool(depositorAddr, valAddr, amount)
msg := types.NewMsgDepositValidatorRewardsPool(depositorAddr, args[0], amount)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

View File

@ -99,7 +99,7 @@ func (s *CLITestSuite) TestTxWithdrawRewardsCmd() {
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastSync),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin("stake", sdkmath.NewInt(10))).String()),
},
"invalid Bech32 prefix",
"hrp does not match bech32 prefix",
},
{
"valid transaction",
@ -133,7 +133,7 @@ func (s *CLITestSuite) TestTxWithdrawRewardsCmd() {
args := append([]string{tc.valAddr.String()}, tc.args...)
ctx := svrcmd.CreateExecuteContext(context.Background())
cmd := cli.NewWithdrawRewardsCmd()
cmd := cli.NewWithdrawRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
cmd.SetContext(ctx)
cmd.SetArgs(args)
s.Require().NoError(client.SetCmdClientContextHandler(s.clientCtx, cmd))
@ -185,7 +185,7 @@ func (s *CLITestSuite) TestTxWithdrawAllRewardsCmd() {
tc := tc
s.Run(tc.name, func() {
cmd := cli.NewWithdrawAllRewardsCmd()
cmd := cli.NewWithdrawAllRewardsCmd(address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
if tc.expectErrMsg != "" {
@ -287,7 +287,7 @@ func (s *CLITestSuite) TestTxFundCommunityPoolCmd() {
tc := tc
s.Run(tc.name, func() {
cmd := cli.NewFundCommunityPoolCmd()
cmd := cli.NewFundCommunityPoolCmd(address.NewBech32Codec("cosmos"))
out, err := clitestutil.ExecTestCLICmd(s.clientCtx, cmd, tc.args)
if tc.expectErr {

View File

@ -89,13 +89,18 @@ func (k Keeper) AllocateTokensToValidator(ctx context.Context, val stakingtypes.
commission := tokens.MulDec(val.GetCommission())
shared := tokens.Sub(commission)
valStr, err := k.stakingKeeper.ValidatorAddressCodec().BytesToString(val.GetOperator())
if err != nil {
return err
}
// update current commission
sdkCtx := sdk.UnwrapSDKContext(ctx)
sdkCtx.EventManager().EmitEvent(
sdk.NewEvent(
types.EventTypeCommission,
sdk.NewAttribute(sdk.AttributeKeyAmount, commission.String()),
sdk.NewAttribute(types.AttributeKeyValidator, val.GetOperator().String()),
sdk.NewAttribute(types.AttributeKeyValidator, valStr),
),
)
currentCommission, err := k.ValidatorsAccumulatedCommission.Get(ctx, val.GetOperator())

View File

@ -13,6 +13,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"
@ -38,6 +39,7 @@ func TestAllocateTokensToValidatorWithCommission(t *testing.T) {
accountKeeper := distrtestutil.NewMockAccountKeeper(ctrl)
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -91,6 +93,7 @@ func TestAllocateTokensToManyValidators(t *testing.T) {
feeCollectorAcc := authtypes.NewEmptyModuleAccount("fee_collector")
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
accountKeeper.EXPECT().GetModuleAccount(gomock.Any(), "fee_collector").Return(feeCollectorAcc)
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -217,6 +220,7 @@ func TestAllocateTokensTruncation(t *testing.T) {
feeCollectorAcc := authtypes.NewEmptyModuleAccount("fee_collector")
accountKeeper.EXPECT().GetModuleAddress("distribution").Return(distrAcc.GetAddress())
accountKeeper.EXPECT().GetModuleAccount(gomock.Any(), "fee_collector").Return(feeCollectorAcc)
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
distrKeeper := keeper.NewKeeper(
encCfg.Codec,
@ -248,7 +252,7 @@ func TestAllocateTokensTruncation(t *testing.T) {
// create third validator with 10% commission
valAddr2 := sdk.ValAddress(valConsAddr2)
val2, err := stakingtypes.NewValidator(sdk.ValAddress(valConsAddr2), valConsPk1, stakingtypes.Description{})
val2, err := stakingtypes.NewValidator(sdk.ValAddress(valConsAddr2).String(), valConsPk1, stakingtypes.Description{})
require.NoError(t, err)
val2.Commission = stakingtypes.NewCommission(math.LegacyNewDecWithPrec(1, 1), math.LegacyNewDecWithPrec(1, 1), math.LegacyNewDec(0))
stakingKeeper.EXPECT().ValidatorByConsAddr(gomock.Any(), sdk.GetConsAddress(valConsPk2)).Return(val2, nil).AnyTimes()

View File

@ -52,7 +52,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) {
}
for _, rew := range data.OutstandingRewards {
valAddr, err := sdk.ValAddressFromBech32(rew.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(rew.ValidatorAddress)
if err != nil {
panic(err)
}
@ -63,7 +63,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) {
moduleHoldings = moduleHoldings.Add(rew.OutstandingRewards...)
}
for _, acc := range data.ValidatorAccumulatedCommissions {
valAddr, err := sdk.ValAddressFromBech32(acc.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(acc.ValidatorAddress)
if err != nil {
panic(err)
}
@ -73,17 +73,17 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) {
}
}
for _, his := range data.ValidatorHistoricalRewards {
valAddr, err := sdk.ValAddressFromBech32(his.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(his.ValidatorAddress)
if err != nil {
panic(err)
}
err = k.ValidatorHistoricalRewards.Set(ctx, collections.Join(valAddr, his.Period), his.Rewards)
err = k.ValidatorHistoricalRewards.Set(ctx, collections.Join(sdk.ValAddress(valAddr), his.Period), his.Rewards)
if err != nil {
panic(err)
}
}
for _, cur := range data.ValidatorCurrentRewards {
valAddr, err := sdk.ValAddressFromBech32(cur.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(cur.ValidatorAddress)
if err != nil {
panic(err)
}
@ -93,7 +93,7 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) {
}
}
for _, del := range data.DelegatorStartingInfos {
valAddr, err := sdk.ValAddressFromBech32(del.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(del.ValidatorAddress)
if err != nil {
panic(err)
}
@ -102,13 +102,13 @@ func (k Keeper) InitGenesis(ctx sdk.Context, data types.GenesisState) {
panic(err)
}
err = k.DelegatorStartingInfo.Set(ctx, collections.Join(valAddr, sdk.AccAddress(delegatorAddress)), del.StartingInfo)
err = k.DelegatorStartingInfo.Set(ctx, collections.Join(sdk.ValAddress(valAddr), sdk.AccAddress(delegatorAddress)), del.StartingInfo)
if err != nil {
panic(err)
}
}
for _, evt := range data.ValidatorSlashEvents {
valAddr, err := sdk.ValAddressFromBech32(evt.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(evt.ValidatorAddress)
if err != nil {
panic(err)
}

View File

@ -47,7 +47,7 @@ func (k Querier) ValidatorDistributionInfo(ctx context.Context, req *types.Query
return nil, status.Error(codes.InvalidArgument, "empty validator address")
}
valAdr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
valAdr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
@ -106,7 +106,7 @@ func (k Querier) ValidatorOutstandingRewards(ctx context.Context, req *types.Que
return nil, status.Error(codes.InvalidArgument, "empty validator address")
}
valAdr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
valAdr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
@ -117,7 +117,7 @@ func (k Querier) ValidatorOutstandingRewards(ctx context.Context, req *types.Que
}
if validator == nil {
return nil, errors.Wrapf(types.ErrNoValidatorExists, valAdr.String())
return nil, errors.Wrapf(types.ErrNoValidatorExists, req.ValidatorAddress)
}
rewards, err := k.Keeper.ValidatorOutstandingRewards.Get(ctx, valAdr)
@ -138,7 +138,7 @@ func (k Querier) ValidatorCommission(ctx context.Context, req *types.QueryValida
return nil, status.Error(codes.InvalidArgument, "empty validator address")
}
valAdr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
valAdr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}
@ -149,7 +149,7 @@ func (k Querier) ValidatorCommission(ctx context.Context, req *types.QueryValida
}
if validator == nil {
return nil, errors.Wrapf(types.ErrNoValidatorExists, valAdr.String())
return nil, errors.Wrapf(types.ErrNoValidatorExists, req.ValidatorAddress)
}
commission, err := k.ValidatorsAccumulatedCommission.Get(ctx, valAdr)
if err != nil && !errors.IsOf(err, collections.ErrNotFound) {
@ -173,7 +173,7 @@ func (k Querier) ValidatorSlashes(ctx context.Context, req *types.QueryValidator
return nil, status.Errorf(codes.InvalidArgument, "starting height greater than ending height (%d > %d)", req.StartingHeight, req.EndingHeight)
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid validator address")
}
@ -216,7 +216,7 @@ func (k Querier) DelegationRewards(ctx context.Context, req *types.QueryDelegati
return nil, status.Error(codes.InvalidArgument, "empty validator address")
}
valAdr, err := sdk.ValAddressFromBech32(req.ValidatorAddress)
valAdr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(req.ValidatorAddress)
if err != nil {
return nil, err
}

View File

@ -45,7 +45,7 @@ func (k msgServer) SetWithdrawAddress(ctx context.Context, msg *types.MsgSetWith
}
func (k msgServer) WithdrawDelegatorReward(ctx context.Context, msg *types.MsgWithdrawDelegatorReward) (*types.MsgWithdrawDelegatorRewardResponse, error) {
valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(msg.ValidatorAddress)
if err != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err)
}
@ -76,7 +76,7 @@ func (k msgServer) WithdrawDelegatorReward(ctx context.Context, msg *types.MsgWi
}
func (k msgServer) WithdrawValidatorCommission(ctx context.Context, msg *types.MsgWithdrawValidatorCommission) (*types.MsgWithdrawValidatorCommissionResponse, error) {
valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(msg.ValidatorAddress)
if err != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err)
}
@ -178,7 +178,7 @@ func (k msgServer) DepositValidatorRewardsPool(ctx context.Context, msg *types.M
return nil, err
}
valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress)
valAddr, err := k.stakingKeeper.ValidatorAddressCodec().StringToBytes(msg.ValidatorAddress)
if err != nil {
return nil, err
}
@ -189,7 +189,7 @@ func (k msgServer) DepositValidatorRewardsPool(ctx context.Context, msg *types.M
}
if validator == nil {
return nil, errors.Wrapf(types.ErrNoValidatorExists, valAddr.String())
return nil, errors.Wrapf(types.ErrNoValidatorExists, msg.ValidatorAddress)
}
// Allocate tokens from the distribution module to the validator, which are

View File

@ -79,7 +79,7 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx sdkclient.Context, mux
// GetTxCmd returns the root tx command for the distribution module.
func (ab AppModuleBasic) GetTxCmd() *cobra.Command {
return cli.NewTxCmd(ab.ac)
return cli.NewTxCmd(ab.cdc.InterfaceRegistry().SigningContext().ValidatorAddressCodec(), ab.cdc.InterfaceRegistry().SigningContext().AddressCodec())
}
// RegisterInterfaces implements InterfaceModule

View File

@ -153,7 +153,7 @@ func SimulateMsgWithdrawDelegatorReward(txConfig client.TxConfig, ak types.Accou
account := ak.GetAccount(ctx, simAccount.Address)
spendable := bk.SpendableCoins(ctx, account.GetAddress())
msg := types.NewMsgWithdrawDelegatorReward(simAccount.Address, validator.GetOperator())
msg := types.NewMsgWithdrawDelegatorReward(simAccount.Address.String(), validator.GetOperator().String())
txCtx := simulation.OperationInput{
R: r,
@ -207,7 +207,7 @@ func SimulateMsgWithdrawValidatorCommission(txConfig client.TxConfig, ak types.A
account := ak.GetAccount(ctx, simAccount.Address)
spendable := bk.SpendableCoins(ctx, account.GetAddress())
msg := types.NewMsgWithdrawValidatorCommission(validator.GetOperator())
msg := types.NewMsgWithdrawValidatorCommission(validator.GetOperator().String())
txCtx := simulation.OperationInput{
R: r,
@ -256,7 +256,7 @@ func SimulateMsgFundCommunityPool(txConfig client.TxConfig, ak types.AccountKeep
}
}
msg := types.NewMsgFundCommunityPool(fundAmount, funder.Address)
msg := types.NewMsgFundCommunityPool(fundAmount, funder.Address.String())
txCtx := simulation.OperationInput{
R: r,

View File

@ -298,7 +298,7 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm
account := accounts[n]
valPubKey := account.PubKey
valAddr := sdk.ValAddress(account.PubKey.Address().Bytes())
validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.
validator, err := stakingtypes.NewValidator(valAddr.String(), valPubKey, stakingtypes.
Description{})
require.NoError(err)
validator, err = validator.SetInitialCommission(commission)

View File

@ -13,7 +13,7 @@ import (
func CreateValidator(pk cryptotypes.PubKey, stake math.Int) (stakingtypes.Validator, error) {
valConsAddr := sdk.GetConsAddress(pk)
val, err := stakingtypes.NewValidator(sdk.ValAddress(valConsAddr), pk, stakingtypes.Description{Moniker: "TestValidator"})
val, err := stakingtypes.NewValidator(sdk.ValAddress(valConsAddr).String(), pk, stakingtypes.Description{Moniker: "TestValidator"})
val.Tokens = stake
val.DelegatorShares = math.LegacyNewDecFromInt(val.Tokens)
return val, err

View File

@ -21,34 +21,34 @@ func NewMsgSetWithdrawAddress(delAddr, withdrawAddr sdk.AccAddress) *MsgSetWithd
}
}
func NewMsgWithdrawDelegatorReward(delAddr sdk.AccAddress, valAddr sdk.ValAddress) *MsgWithdrawDelegatorReward {
func NewMsgWithdrawDelegatorReward(delAddr, valAddr string) *MsgWithdrawDelegatorReward {
return &MsgWithdrawDelegatorReward{
DelegatorAddress: delAddr.String(),
ValidatorAddress: valAddr.String(),
DelegatorAddress: delAddr,
ValidatorAddress: valAddr,
}
}
func NewMsgWithdrawValidatorCommission(valAddr sdk.ValAddress) *MsgWithdrawValidatorCommission {
func NewMsgWithdrawValidatorCommission(valAddr string) *MsgWithdrawValidatorCommission {
return &MsgWithdrawValidatorCommission{
ValidatorAddress: valAddr.String(),
ValidatorAddress: valAddr,
}
}
// NewMsgFundCommunityPool returns a new MsgFundCommunityPool with a sender and
// a funding amount.
func NewMsgFundCommunityPool(amount sdk.Coins, depositor sdk.AccAddress) *MsgFundCommunityPool {
func NewMsgFundCommunityPool(amount sdk.Coins, depositor string) *MsgFundCommunityPool {
return &MsgFundCommunityPool{
Amount: amount,
Depositor: depositor.String(),
Depositor: depositor,
}
}
// NewMsgDepositValidatorRewardsPool returns a new MsgDepositValidatorRewardsPool
// with a depositor and a funding amount.
func NewMsgDepositValidatorRewardsPool(depositor sdk.AccAddress, valAddr sdk.ValAddress, amount sdk.Coins) *MsgDepositValidatorRewardsPool {
func NewMsgDepositValidatorRewardsPool(depositor, valAddr string, amount sdk.Coins) *MsgDepositValidatorRewardsPool {
return &MsgDepositValidatorRewardsPool{
Amount: amount,
Depositor: depositor.String(),
ValidatorAddress: valAddr.String(),
Depositor: depositor,
ValidatorAddress: valAddr,
}
}

View File

@ -10,6 +10,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/runtime"
"github.com/cosmos/cosmos-sdk/server"
"github.com/cosmos/cosmos-sdk/x/genutil"
"github.com/cosmos/cosmos-sdk/x/genutil/types"
@ -18,7 +19,7 @@ import (
const flagGenTxDir = "gentx-dir"
// CollectGenTxsCmd - return the cobra command to collect genesis transactions
func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeHome string, validator types.MessageValidator) *cobra.Command {
func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeHome string, validator types.MessageValidator, valAddrCodec runtime.ValidatorAddressCodec) *cobra.Command {
cmd := &cobra.Command{
Use: "collect-gentxs",
Short: "Collect genesis txs and output a genesis.json file",
@ -50,7 +51,7 @@ func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeH
toPrint := newPrintInfo(config.Moniker, appGenesis.ChainID, nodeID, genTxsDir, json.RawMessage(""))
initCfg := types.NewInitConfig(appGenesis.ChainID, genTxsDir, nodeID, valPubKey)
appMessage, err := genutil.GenAppStateFromConfig(cdc, clientCtx.TxConfig, config, initCfg, appGenesis, genBalIterator, validator)
appMessage, err := genutil.GenAppStateFromConfig(cdc, clientCtx.TxConfig, config, initCfg, appGenesis, genBalIterator, validator, valAddrCodec)
if err != nil {
return errors.Wrap(err, "failed to get genesis app state from config")
}

View File

@ -34,11 +34,11 @@ func CommandsWithCustomMigrationMap(txConfig client.TxConfig, moduleBasics modul
gentxModule := moduleBasics[genutiltypes.ModuleName].(genutil.AppModuleBasic)
cmd.AddCommand(
GenTxCmd(moduleBasics, txConfig, banktypes.GenesisBalancesIterator{}, defaultNodeHome),
GenTxCmd(moduleBasics, txConfig, banktypes.GenesisBalancesIterator{}, defaultNodeHome, txConfig.SigningContext().ValidatorAddressCodec()),
MigrateGenesisCmd(migrationMap),
CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, defaultNodeHome, gentxModule.GenTxValidator),
CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, defaultNodeHome, gentxModule.GenTxValidator, txConfig.SigningContext().ValidatorAddressCodec()),
ValidateGenesisCmd(moduleBasics),
AddGenesisAccountCmd(defaultNodeHome),
AddGenesisAccountCmd(defaultNodeHome, txConfig.SigningContext().AddressCodec()),
)
return cmd

View File

@ -6,6 +6,8 @@ import (
"github.com/spf13/cobra"
address "cosmossdk.io/core/address"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
@ -24,7 +26,7 @@ const (
// AddGenesisAccountCmd returns add-genesis-account cobra Command.
// This command is provided as a default, applications are expected to provide their own command if custom genesis accounts are needed.
func AddGenesisAccountCmd(defaultNodeHome string) *cobra.Command {
func AddGenesisAccountCmd(defaultNodeHome string, addressCodec address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]",
Short: "Add a genesis account to genesis.json",
@ -42,7 +44,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa
config.SetRoot(clientCtx.HomeDir)
var kr keyring.Keyring
addr, err := sdk.AccAddressFromBech32(args[0])
addr, err := addressCodec.StringToBytes(args[0])
if err != nil {
inBuf := bufio.NewReader(cmd.InOrStdin())
keyringBackend, _ := cmd.Flags().GetString(flags.FlagKeyringBackend)

View File

@ -12,6 +12,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
"github.com/cosmos/cosmos-sdk/server"
@ -90,7 +91,7 @@ func TestAddGenesisAccountCmd(t *testing.T) {
ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx)
ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx)
cmd := genutilcli.AddGenesisAccountCmd(home)
cmd := genutilcli.AddGenesisAccountCmd(home, addresscodec.NewBech32Codec("cosmos"))
cmd.SetArgs([]string{
tc.addr,
tc.denom,

View File

@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
address "cosmossdk.io/core/address"
"cosmossdk.io/errors"
"github.com/cosmos/cosmos-sdk/client"
@ -28,7 +29,7 @@ import (
)
// GenTxCmd builds the application's gentx command.
func GenTxCmd(mbm module.BasicManager, txEncCfg client.TxEncodingConfig, genBalIterator types.GenesisBalancesIterator, defaultNodeHome string) *cobra.Command {
func GenTxCmd(mbm module.BasicManager, txEncCfg client.TxEncodingConfig, genBalIterator types.GenesisBalancesIterator, defaultNodeHome string, valAdddressCodec address.Codec) *cobra.Command {
ipDefault, _ := server.ExternalIP()
fsCreateValidator, defaultsDesc := cli.CreateValidatorMsgFlagSet(ipDefault)
@ -37,7 +38,7 @@ func GenTxCmd(mbm module.BasicManager, txEncCfg client.TxEncodingConfig, genBalI
Short: "Generate a genesis tx carrying a self delegation",
Args: cobra.ExactArgs(2),
Long: fmt.Sprintf(`Generate a genesis transaction that creates a validator with a self-delegation,
that is signed by the key in the Keyring referenced by a given name. A node ID and Bech32 consensus
that is signed by the key in the Keyring referenced by a given name. A node ID and consensus
pubkey may optionally be provided. If they are omitted, they will be retrieved from the priv_validator.json
file. The following default parameters are included:
%s
@ -153,7 +154,7 @@ $ %s gentx my-key-name 1000000stake --home=/path/to/home/dir --keyring-backend=o
createValCfg.Amount = amount
// create a 'create-validator' message
txBldr, msg, err := cli.BuildCreateValidatorMsg(clientCtx, createValCfg, txFactory, true)
txBldr, msg, err := cli.BuildCreateValidatorMsg(clientCtx, createValCfg, txFactory, true, valAdddressCodec)
if err != nil {
return errors.Wrap(err, "failed to build create-validator message")
}

View File

@ -15,6 +15,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
svrcmd "github.com/cosmos/cosmos-sdk/server/cmd"
clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli"
@ -127,6 +128,7 @@ func (s *CLITestSuite) TestGenTxCmd() {
clientCtx.TxConfig,
banktypes.GenesisBalancesIterator{},
clientCtx.HomeDir,
address.NewBech32Codec("cosmosvaloper"),
)
cmd.SetContext(ctx)
cmd.SetArgs(tc.args)

View File

@ -14,6 +14,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
sdkruntime "github.com/cosmos/cosmos-sdk/runtime"
sdk "github.com/cosmos/cosmos-sdk/types"
bankexported "github.com/cosmos/cosmos-sdk/x/bank/exported"
"github.com/cosmos/cosmos-sdk/x/genutil/types"
@ -23,11 +24,11 @@ import (
// GenAppStateFromConfig gets the genesis app state from the config
func GenAppStateFromConfig(cdc codec.JSONCodec, txEncodingConfig client.TxEncodingConfig,
config *cfg.Config, initCfg types.InitConfig, genesis *types.AppGenesis, genBalIterator types.GenesisBalancesIterator,
validator types.MessageValidator,
validator types.MessageValidator, valAddrCodec sdkruntime.ValidatorAddressCodec,
) (appState json.RawMessage, err error) {
// process genesis transactions, else create default genesis.json
appGenTxs, persistentPeers, err := CollectTxs(
cdc, txEncodingConfig.TxJSONDecoder(), config.Moniker, initCfg.GenTxsDir, genesis, genBalIterator, validator)
cdc, txEncodingConfig.TxJSONDecoder(), config.Moniker, initCfg.GenTxsDir, genesis, genBalIterator, validator, valAddrCodec)
if err != nil {
return appState, err
}
@ -66,7 +67,7 @@ func GenAppStateFromConfig(cdc codec.JSONCodec, txEncodingConfig client.TxEncodi
// the list of appGenTxs, and persistent peers required to generate genesis.json.
func CollectTxs(cdc codec.JSONCodec, txJSONDecoder sdk.TxDecoder, moniker, genTxsDir string,
genesis *types.AppGenesis, genBalIterator types.GenesisBalancesIterator,
validator types.MessageValidator,
validator types.MessageValidator, valAddrCodec sdkruntime.ValidatorAddressCodec,
) (appGenTxs []sdk.Tx, persistentPeers string, err error) {
// prepare a map of all balances in genesis state to then validate
// against the validators addresses
@ -133,7 +134,7 @@ func CollectTxs(cdc codec.JSONCodec, txJSONDecoder sdk.TxDecoder, moniker, genTx
msg := msgs[0].(*stakingtypes.MsgCreateValidator)
// validate validator addresses and funds against the accounts in the state
valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddress)
valAddr, err := valAddrCodec.StringToBytes(msg.ValidatorAddress)
if err != nil {
return appGenTxs, persistentPeers, err
}

View File

@ -9,6 +9,7 @@ import (
"github.com/cosmos/gogoproto/proto"
"github.com/cosmos/cosmos-sdk/codec"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/server"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -59,7 +60,8 @@ func TestCollectTxsHandlesDirectories(t *testing.T) {
balItr := new(doNothingIterator)
dnc := &doNothingUnmarshalJSON{cdc}
if _, _, err := genutil.CollectTxs(dnc, txDecoder, "foo", testDir, genesis, balItr, types.DefaultMessageValidator); err != nil {
if _, _, err := genutil.CollectTxs(dnc, txDecoder, "foo", testDir, genesis, balItr, types.DefaultMessageValidator,
addresscodec.NewBech32Codec("cosmosvaloper")); err != nil {
t.Fatal(err)
}
}

View File

@ -65,10 +65,10 @@ func (suite *GenTxTestSuite) SetupTest() {
amount := sdk.NewInt64Coin(sdk.DefaultBondDenom, 50)
one := math.OneInt()
suite.msg1, err = stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(pk1.Address()), pk1, amount, desc, comm, one)
sdk.ValAddress(pk1.Address()).String(), pk1, amount, desc, comm, one)
suite.NoError(err)
suite.msg2, err = stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(pk2.Address()), pk1, amount, desc, comm, one)
sdk.ValAddress(pk2.Address()).String(), pk1, amount, desc, comm, one)
suite.NoError(err)
}

View File

@ -41,10 +41,10 @@ func TestValidateGenesisMultipleMessages(t *testing.T) {
desc := stakingtypes.NewDescription("testname", "", "", "", "")
comm := stakingtypes.CommissionRates{}
msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, math.OneInt())
msg1, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk1.Address()).String(), pk1, sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, math.OneInt())
require.NoError(t, err)
msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()), pk2,
msg2, err := stakingtypes.NewMsgCreateValidator(sdk.ValAddress(pk2.Address()).String(), pk2,
sdk.NewInt64Coin(sdk.DefaultBondDenom, 50), desc, comm, math.OneInt())
require.NoError(t, err)
@ -62,7 +62,7 @@ func TestValidateGenesisMultipleMessages(t *testing.T) {
func TestValidateGenesisBadMessage(t *testing.T) {
desc := stakingtypes.NewDescription("testname", "", "", "", "")
msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()), desc, nil, nil)
msg1 := stakingtypes.NewMsgEditValidator(sdk.ValAddress(pk1.Address()).String(), desc, nil, nil)
txConfig := moduletestutil.MakeTestEncodingConfig(staking.AppModuleBasic{}, genutil.AppModuleBasic{}).TxConfig
txBuilder := txConfig.NewTxBuilder()

View File

@ -611,7 +611,7 @@ func createValidators(t *testing.T, stakingMsgSvr stakingtypes.MsgServer, ctx sd
for i := 0; i < len(addrs); i++ {
valTokens := sdk.TokensFromConsensusPower(powerAmt[i], sdk.DefaultPowerReduction)
valCreateMsg, err := stakingtypes.NewMsgCreateValidator(
addrs[i], pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens),
addrs[i].String(), pubkeys[i], sdk.NewCoin(sdk.DefaultBondDenom, valTokens),
TestDescription, TestCommissionRates, math.OneInt(),
)
require.NoError(t, err)

View File

@ -54,6 +54,7 @@ func TestHooks(t *testing.T) {
addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, minDeposit[0].Amount)
authKeeper.EXPECT().AddressCodec().Return(address.NewBech32Codec("cosmos")).AnyTimes()
stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
govHooksReceiver := MockGovHooksReceiver{}

View File

@ -28,7 +28,11 @@ func (keeper Keeper) Tally(ctx context.Context, proposal v1.Proposal) (passes, b
// fetch all the bonded validators, insert them into currValidators
err = keeper.sk.IterateBondedValidatorsByPower(ctx, func(index int64, validator stakingtypes.ValidatorI) (stop bool) {
currValidators[validator.GetOperator().String()] = v1.NewValidatorGovInfo(
valStr, err := keeper.sk.ValidatorAddressCodec().BytesToString(validator.GetOperator())
if err != nil {
return false
}
currValidators[valStr] = v1.NewValidatorGovInfo(
validator.GetOperator(),
validator.GetBondedTokens(),
validator.GetDelegatorShares(),
@ -50,7 +54,10 @@ func (keeper Keeper) Tally(ctx context.Context, proposal v1.Proposal) (passes, b
return false, err
}
valAddrStr := sdk.ValAddress(voter).String()
valAddrStr, err := keeper.sk.ValidatorAddressCodec().BytesToString(voter)
if err != nil {
return false, err
}
if val, ok := currValidators[valAddrStr]; ok {
val.Vote = vote.Options
currValidators[valAddrStr] = val

View File

@ -10,6 +10,7 @@ import (
sdkmath "cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec/address"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/gov/keeper"
@ -31,6 +32,7 @@ func TestTally(t *testing.T) {
var (
// handy functions
setTotalBonded = func(s suite, n int64) {
s.mocks.stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
s.mocks.stakingKeeper.EXPECT().TotalBondedTokens(gomock.Any()).
Return(sdkmath.NewInt(n), nil)
}

View File

@ -1056,6 +1056,20 @@ func (mr *MockStakingKeeperMockRecorder) TotalBondedTokens(arg0 interface{}) *go
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TotalBondedTokens", reflect.TypeOf((*MockStakingKeeper)(nil).TotalBondedTokens), arg0)
}
// 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))
}
// MockDistributionKeeper is a mock of DistributionKeeper interface.
type MockDistributionKeeper struct {
ctrl *gomock.Controller

View File

@ -18,6 +18,7 @@ type ParamSubspace interface {
// StakingKeeper expected staking keeper (Validator and Delegator sets) (noalias)
type StakingKeeper interface {
ValidatorAddressCodec() addresscodec.Codec
// iterate through bonded validators by operator address, execute func for each validator
IterateBondedValidatorsByPower(
context.Context, func(index int64, validator stakingtypes.ValidatorI) (stop bool),

View File

@ -81,7 +81,7 @@ func TestSlashingMsgs(t *testing.T) {
commission := stakingtypes.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec())
createValidatorMsg, err := stakingtypes.NewMsgCreateValidator(
sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commission, math.OneInt(),
sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commission, math.OneInt(),
)
require.NoError(t, err)

View File

@ -3,15 +3,16 @@ package cli
import (
"github.com/spf13/cobra"
"cosmossdk.io/core/address"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/slashing/types"
)
// NewTxCmd returns a root CLI command handler for all x/slashing transaction commands.
func NewTxCmd() *cobra.Command {
func NewTxCmd(ac address.Codec) *cobra.Command {
slashingTxCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Slashing transaction subcommands",
@ -20,12 +21,12 @@ func NewTxCmd() *cobra.Command {
RunE: client.ValidateCmd,
}
slashingTxCmd.AddCommand(NewUnjailTxCmd())
slashingTxCmd.AddCommand(NewUnjailTxCmd(ac))
return slashingTxCmd
}
// NewUnjailTxCmd returns a CLI command handler for creating a MsgUnjail transaction.
func NewUnjailTxCmd() *cobra.Command {
func NewUnjailTxCmd(valAc address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "unjail",
Args: cobra.NoArgs,
@ -39,9 +40,13 @@ $ <appd> tx slashing unjail --from mykey
if err != nil {
return err
}
valAddr := clientCtx.GetFromAddress()
msg := types.NewMsgUnjail(sdk.ValAddress(valAddr))
valAddr, err := valAc.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
msg := types.NewMsgUnjail(valAddr)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},

View File

@ -13,6 +13,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
"github.com/cosmos/cosmos-sdk/crypto/types"
@ -96,7 +97,7 @@ func (s *CLITestSuite) TestNewUnjailTxCmd() {
tc := tc
s.Run(tc.name, func() {
cmd := cli.NewUnjailTxCmd()
cmd := cli.NewUnjailTxCmd(address.NewBech32Codec("cosmosvaloper"))
clientCtx := s.clientCtx
out, err := clitestutil.ExecTestCLICmd(clientCtx, cmd, tc.args)

View File

@ -24,7 +24,7 @@ func (s *KeeperTestSuite) TestAfterValidatorCreatedOrRemoved() {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
validator, err := stakingtypes.NewValidator(sdk.ValAddress(addr), pubKey, stakingtypes.Description{})
validator, err := stakingtypes.NewValidator(sdk.ValAddress(addr).String(), pubKey, stakingtypes.Description{})
require.NoError(err)
s.stakingKeeper.EXPECT().Validator(ctx, valAddr).Return(validator, nil)

View File

@ -12,6 +12,7 @@ import (
storetypes "cosmossdk.io/store/types"
"github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/runtime"
sdktestutil "github.com/cosmos/cosmos-sdk/testutil"
"github.com/cosmos/cosmos-sdk/testutil/testdata"
@ -47,6 +48,7 @@ func (s *KeeperTestSuite) SetupTest() {
// gomock initializations
ctrl := gomock.NewController(s.T())
s.stakingKeeper = slashingtestutil.NewMockStakingKeeper(ctrl)
s.stakingKeeper.EXPECT().ValidatorAddressCodec().Return(address.NewBech32Codec("cosmosvaloper")).AnyTimes()
s.ctx = ctx
s.slashingKeeper = slashingkeeper.NewKeeper(

View File

@ -46,7 +46,7 @@ func (k msgServer) UpdateParams(goCtx context.Context, msg *types.MsgUpdateParam
// Validators must submit a transaction to unjail itself after
// having been jailed (and thus unbonded) for downtime
func (k msgServer) Unjail(goCtx context.Context, msg *types.MsgUnjail) (*types.MsgUnjailResponse, error) {
valAddr, err := sdk.ValAddressFromBech32(msg.ValidatorAddr)
valAddr, err := k.sk.ValidatorAddressCodec().StringToBytes(msg.ValidatorAddr)
if err != nil {
return nil, sdkerrors.ErrInvalidAddress.Wrapf("validator input address: %s", err)
}

View File

@ -167,7 +167,7 @@ func (s *KeeperTestSuite) TestUnjail() {
malleate: func() *slashingtypes.MsgUnjail {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
val, err := types.NewValidator(valAddr, pubKey, types.Description{Moniker: "test"})
val, err := types.NewValidator(valAddr.String(), pubKey, types.Description{Moniker: "test"})
s.Require().NoError(err)
s.stakingKeeper.EXPECT().Validator(s.ctx, valAddr).Return(val, nil)
@ -201,7 +201,7 @@ func (s *KeeperTestSuite) TestUnjail() {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
val, err := types.NewValidator(valAddr, pubKey, types.Description{Moniker: "test"})
val, err := types.NewValidator(valAddr.String(), pubKey, types.Description{Moniker: "test"})
val.Tokens = sdkmath.NewInt(1000)
val.DelegatorShares = sdkmath.LegacyNewDec(1)
val.Jailed = false
@ -230,7 +230,7 @@ func (s *KeeperTestSuite) TestUnjail() {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
val, err := types.NewValidator(valAddr, pubKey, types.Description{Moniker: "test"})
val, err := types.NewValidator(valAddr.String(), pubKey, types.Description{Moniker: "test"})
val.Tokens = sdkmath.NewInt(1000)
val.DelegatorShares = sdkmath.LegacyNewDec(1)
val.Jailed = true
@ -259,7 +259,7 @@ func (s *KeeperTestSuite) TestUnjail() {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
val, err := types.NewValidator(valAddr, pubKey, types.Description{Moniker: "test"})
val, err := types.NewValidator(valAddr.String(), pubKey, types.Description{Moniker: "test"})
val.Tokens = sdkmath.NewInt(1000)
val.DelegatorShares = sdkmath.LegacyNewDec(1)
val.Jailed = true
@ -288,7 +288,7 @@ func (s *KeeperTestSuite) TestUnjail() {
_, pubKey, addr := testdata.KeyTestPubAddr()
valAddr := sdk.ValAddress(addr)
val, err := types.NewValidator(valAddr, pubKey, types.Description{Moniker: "test"})
val, err := types.NewValidator(valAddr.String(), pubKey, types.Description{Moniker: "test"})
val.Tokens = sdkmath.NewInt(1000)
val.DelegatorShares = sdkmath.LegacyNewDec(1)

View File

@ -84,8 +84,8 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *g
}
// GetTxCmd returns the root tx command for the slashing module.
func (AppModuleBasic) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
func (amb AppModuleBasic) GetTxCmd() *cobra.Command {
return cli.NewTxCmd(amb.cdc.InterfaceRegistry().SigningContext().ValidatorAddressCodec())
}
// AppModule implements an application module for the slashing module.

View File

@ -109,7 +109,7 @@ func SimulateMsgUnjail(
return simtypes.NoOpMsg(types.ModuleName, msgType, "unable to generate fees"), nil, err
}
msg := types.NewMsgUnjail(validator.GetOperator())
msg := types.NewMsgUnjail(validator.GetOperator().String())
tx, err := simtestutil.GenSignedMockTx(
r,

View File

@ -206,7 +206,7 @@ func getTestingValidator(ctx sdk.Context, stakingKeeper *stakingkeeper.Keeper, a
account := accounts[n]
valPubKey := account.ConsKey.PubKey()
valAddr := sdk.ValAddress(account.PubKey.Address().Bytes())
validator, err := stakingtypes.NewValidator(valAddr, valPubKey, stakingtypes.Description{})
validator, err := stakingtypes.NewValidator(valAddr.String(), valPubKey, stakingtypes.Description{})
if err != nil {
return stakingtypes.Validator{}, fmt.Errorf("failed to create validator: %w", err)
}

View File

@ -8,6 +8,7 @@ import (
context "context"
reflect "reflect"
address "cosmossdk.io/core/address"
math "cosmossdk.io/math"
types "github.com/cosmos/cosmos-sdk/types"
types0 "github.com/cosmos/cosmos-sdk/x/params/types"
@ -400,6 +401,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) (types1.ValidatorI, error) {
m.ctrl.T.Helper()

View File

@ -3,6 +3,7 @@ package types
import (
context "context"
"cosmossdk.io/core/address"
"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -35,6 +36,7 @@ type ParamSubspace interface {
// StakingKeeper expected staking keeper
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

@ -11,8 +11,8 @@ var (
)
// NewMsgUnjail creates a new MsgUnjail instance
func NewMsgUnjail(validatorAddr sdk.ValAddress) *MsgUnjail {
func NewMsgUnjail(validatorAddr string) *MsgUnjail {
return &MsgUnjail{
ValidatorAddr: validatorAddr.String(),
ValidatorAddr: validatorAddr,
}
}

View File

@ -12,7 +12,7 @@ import (
func TestMsgUnjailGetSignBytes(t *testing.T) {
addr := sdk.AccAddress("abcd")
msg := NewMsgUnjail(sdk.ValAddress(addr))
msg := NewMsgUnjail(sdk.ValAddress(addr).String())
pc := codec.NewProtoCodec(types.NewInterfaceRegistry())
bytes, err := pc.MarshalAminoJSON(msg)
require.NoError(t, err)

View File

@ -69,7 +69,7 @@ func TestStakingMsgs(t *testing.T) {
// create validator
description := types.NewDescription("foo_moniker", "", "", "", "")
createValidatorMsg, err := types.NewMsgCreateValidator(
sdk.ValAddress(addr1), valKey.PubKey(), bondCoin, description, commissionRates, math.OneInt(),
sdk.ValAddress(addr1).String(), valKey.PubKey(), bondCoin, description, commissionRates, math.OneInt(),
)
require.NoError(t, err)
@ -94,7 +94,7 @@ func TestStakingMsgs(t *testing.T) {
// edit the validator
description = types.NewDescription("bar_moniker", "", "", "", "")
editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1), description, nil, nil)
editValidatorMsg := types.NewMsgEditValidator(sdk.ValAddress(addr1).String(), description, nil, nil)
header = cmtproto.Header{Height: app.LastBlockHeight() + 1}
_, _, err = simtestutil.SignCheckDeliver(t, txConfig, app.BaseApp, header, []sdk.Msg{editValidatorMsg}, "", []uint64{0}, []uint64{1}, true, true, priv1)
@ -107,7 +107,7 @@ func TestStakingMsgs(t *testing.T) {
// delegate
require.True(t, sdk.Coins{genCoin}.Equal(bankKeeper.GetAllBalances(ctxCheck, addr2)))
delegateMsg := types.NewMsgDelegate(addr2, sdk.ValAddress(addr1), bondCoin)
delegateMsg := types.NewMsgDelegate(addr2.String(), sdk.ValAddress(addr1).String(), bondCoin)
header = cmtproto.Header{Height: app.LastBlockHeight() + 1}
_, _, err = simtestutil.SignCheckDeliver(t, txConfig, app.BaseApp, header, []sdk.Msg{delegateMsg}, "", []uint64{1}, []uint64{0}, true, true, priv2)
@ -119,7 +119,7 @@ func TestStakingMsgs(t *testing.T) {
require.NoError(t, err)
// begin unbonding
beginUnbondingMsg := types.NewMsgUndelegate(addr2, sdk.ValAddress(addr1), bondCoin)
beginUnbondingMsg := types.NewMsgUndelegate(addr2.String(), sdk.ValAddress(addr1).String(), bondCoin)
header = cmtproto.Header{Height: app.LastBlockHeight() + 1}
_, _, err = simtestutil.SignCheckDeliver(t, txConfig, app.BaseApp, header, []sdk.Msg{beginUnbondingMsg}, "", []uint64{1}, []uint64{1}, true, true, priv2)
require.NoError(t, err)

View File

@ -44,9 +44,9 @@ var (
func init() {
fsShares.String(FlagSharesAmount, "", "Amount of source-shares to either unbond or redelegate as a positive integer or decimal")
fsShares.String(FlagSharesFraction, "", "Fraction of source-shares to either unbond or redelegate as a positive integer or decimal >0 and <=1")
fsValidator.String(FlagAddressValidator, "", "The Bech32 address of the validator")
fsRedelegation.String(FlagAddressValidatorSrc, "", "The Bech32 address of the source validator")
fsRedelegation.String(FlagAddressValidatorDst, "", "The Bech32 address of the destination validator")
fsValidator.String(FlagAddressValidator, "", "The address of the validator")
fsRedelegation.String(FlagAddressValidatorSrc, "", "The address of the source validator")
fsRedelegation.String(FlagAddressValidatorDst, "", "The address of the destination validator")
}
// FlagSetCommissionCreate Returns the FlagSet used for commission create.

View File

@ -9,6 +9,7 @@ import (
"github.com/spf13/cobra"
flag "github.com/spf13/pflag"
"cosmossdk.io/core/address"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/math"
@ -33,7 +34,7 @@ var (
)
// NewTxCmd returns a root CLI command handler for all x/staking transaction commands.
func NewTxCmd() *cobra.Command {
func NewTxCmd(valAddrCodec, ac address.Codec) *cobra.Command {
stakingTxCmd := &cobra.Command{
Use: types.ModuleName,
Short: "Staking transaction subcommands",
@ -43,19 +44,19 @@ func NewTxCmd() *cobra.Command {
}
stakingTxCmd.AddCommand(
NewCreateValidatorCmd(),
NewEditValidatorCmd(),
NewDelegateCmd(),
NewRedelegateCmd(),
NewUnbondCmd(),
NewCancelUnbondingDelegation(),
NewCreateValidatorCmd(valAddrCodec),
NewEditValidatorCmd(valAddrCodec),
NewDelegateCmd(valAddrCodec, ac),
NewRedelegateCmd(valAddrCodec, ac),
NewUnbondCmd(valAddrCodec, ac),
NewCancelUnbondingDelegation(valAddrCodec, ac),
)
return stakingTxCmd
}
// NewCreateValidatorCmd returns a CLI command handler for creating a MsgCreateValidator transaction.
func NewCreateValidatorCmd() *cobra.Command {
func NewCreateValidatorCmd(ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "create-validator [path/to/validator.json]",
Short: "create new validator initialized with a self-delegation to it",
@ -99,7 +100,7 @@ where we can get the pubkey using "%s tendermint show-validator"
return err
}
txf, msg, err := newBuildCreateValidatorMsg(clientCtx, txf, cmd.Flags(), validator)
txf, msg, err := newBuildCreateValidatorMsg(clientCtx, txf, cmd.Flags(), validator, ac)
if err != nil {
return err
}
@ -118,7 +119,7 @@ where we can get the pubkey using "%s tendermint show-validator"
}
// NewEditValidatorCmd returns a CLI command handler for creating a MsgEditValidator transaction.
func NewEditValidatorCmd() *cobra.Command {
func NewEditValidatorCmd(ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "edit-validator",
Short: "edit an existing validator account",
@ -127,7 +128,7 @@ func NewEditValidatorCmd() *cobra.Command {
if err != nil {
return err
}
valAddr := clientCtx.GetFromAddress()
moniker, _ := cmd.Flags().GetString(FlagEditMoniker)
identity, _ := cmd.Flags().GetString(FlagIdentity)
website, _ := cmd.Flags().GetString(FlagWebsite)
@ -159,7 +160,12 @@ func NewEditValidatorCmd() *cobra.Command {
newMinSelfDelegation = &msb
}
msg := types.NewMsgEditValidator(sdk.ValAddress(valAddr), description, newRate, newMinSelfDelegation)
valAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
msg := types.NewMsgEditValidator(valAddr, description, newRate, newMinSelfDelegation)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
@ -174,9 +180,7 @@ func NewEditValidatorCmd() *cobra.Command {
}
// NewDelegateCmd returns a CLI command handler for creating a MsgDelegate transaction.
func NewDelegateCmd() *cobra.Command {
bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix()
func NewDelegateCmd(valAddrCodec, ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "delegate [validator-addr] [amount]",
Args: cobra.ExactArgs(2),
@ -185,9 +189,9 @@ func NewDelegateCmd() *cobra.Command {
fmt.Sprintf(`Delegate an amount of liquid coins to a validator from your wallet.
Example:
$ %s tx staking delegate %s1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 1000stake --from mykey
$ %s tx staking delegate cosmosvalopers1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 1000stake --from mykey
`,
version.AppName, bech32PrefixValAddr,
version.AppName,
),
),
RunE: func(cmd *cobra.Command, args []string) error {
@ -200,13 +204,17 @@ $ %s tx staking delegate %s1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 1000stake --f
return err
}
delAddr := clientCtx.GetFromAddress()
valAddr, err := sdk.ValAddressFromBech32(args[0])
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
msg := types.NewMsgDelegate(delAddr, valAddr, amount)
_, err = valAddrCodec.StringToBytes(args[0])
if err != nil {
return err
}
msg := types.NewMsgDelegate(delAddr, args[0], amount)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
@ -218,9 +226,7 @@ $ %s tx staking delegate %s1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 1000stake --f
}
// NewRedelegateCmd returns a CLI command handler for creating a MsgBeginRedelegate transaction.
func NewRedelegateCmd() *cobra.Command {
bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix()
func NewRedelegateCmd(valAddrCodec, ac address.Codec) *cobra.Command {
cmd := &cobra.Command{
Use: "redelegate [src-validator-addr] [dst-validator-addr] [amount]",
Short: "Redelegate illiquid tokens from one validator to another",
@ -229,9 +235,9 @@ func NewRedelegateCmd() *cobra.Command {
fmt.Sprintf(`Redelegate an amount of illiquid staking tokens from one validator to another.
Example:
$ %s tx staking redelegate %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj %s1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 100stake --from mykey
$ %s tx staking redelegate cosmosvalopers1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj cosmosvalopers1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 100stake --from mykey
`,
version.AppName, bech32PrefixValAddr, bech32PrefixValAddr,
version.AppName,
),
),
RunE: func(cmd *cobra.Command, args []string) error {
@ -239,13 +245,17 @@ $ %s tx staking redelegate %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj %s1l2rsakp3
if err != nil {
return err
}
delAddr := clientCtx.GetFromAddress()
valSrcAddr, err := sdk.ValAddressFromBech32(args[0])
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
valDstAddr, err := sdk.ValAddressFromBech32(args[1])
_, err = valAddrCodec.StringToBytes(args[0])
if err != nil {
return err
}
_, err = valAddrCodec.StringToBytes(args[1])
if err != nil {
return err
}
@ -255,7 +265,7 @@ $ %s tx staking redelegate %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj %s1l2rsakp3
return err
}
msg := types.NewMsgBeginRedelegate(delAddr, valSrcAddr, valDstAddr, amount)
msg := types.NewMsgBeginRedelegate(delAddr, args[0], args[1], amount)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
@ -267,7 +277,7 @@ $ %s tx staking redelegate %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj %s1l2rsakp3
}
// NewUnbondCmd returns a CLI command handler for creating a MsgUndelegate transaction.
func NewUnbondCmd() *cobra.Command {
func NewUnbondCmd(valAddrCodec, ac address.Codec) *cobra.Command {
bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix()
cmd := &cobra.Command{
@ -289,8 +299,11 @@ $ %s tx staking unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake --from
return err
}
delAddr := clientCtx.GetFromAddress()
valAddr, err := sdk.ValAddressFromBech32(args[0])
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
_, err = valAddrCodec.StringToBytes(args[0])
if err != nil {
return err
}
@ -300,7 +313,7 @@ $ %s tx staking unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake --from
return err
}
msg := types.NewMsgUndelegate(delAddr, valAddr, amount)
msg := types.NewMsgUndelegate(delAddr, args[0], amount)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
@ -312,7 +325,7 @@ $ %s tx staking unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake --from
}
// NewCancelUnbondingDelegation returns a CLI command handler for creating a MsgCancelUnbondingDelegation transaction.
func NewCancelUnbondingDelegation() *cobra.Command {
func NewCancelUnbondingDelegation(valAddrCodec, ac address.Codec) *cobra.Command {
bech32PrefixValAddr := sdk.GetConfig().GetBech32ValidatorAddrPrefix()
cmd := &cobra.Command{
@ -335,8 +348,12 @@ $ %s tx staking cancel-unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake
if err != nil {
return err
}
delAddr := clientCtx.GetFromAddress()
valAddr, err := sdk.ValAddressFromBech32(args[0])
delAddr, err := ac.BytesToString(clientCtx.GetFromAddress())
if err != nil {
return err
}
_, err = valAddrCodec.StringToBytes(args[0])
if err != nil {
return err
}
@ -351,7 +368,7 @@ $ %s tx staking cancel-unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake
return errorsmod.Wrap(fmt.Errorf("invalid height: %d", creationHeight), "invalid height")
}
msg := types.NewMsgCancelUnbondingDelegation(delAddr, valAddr, creationHeight, amount)
msg := types.NewMsgCancelUnbondingDelegation(delAddr, args[0], creationHeight, amount)
return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
@ -362,7 +379,7 @@ $ %s tx staking cancel-unbond %s1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100stake
return cmd
}
func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet, val validator) (tx.Factory, *types.MsgCreateValidator, error) {
func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet, val validator, valAc address.Codec) (tx.Factory, *types.MsgCreateValidator, error) {
valAddr := clientCtx.GetFromAddress()
description := types.NewDescription(
@ -373,13 +390,17 @@ func newBuildCreateValidatorMsg(clientCtx client.Context, txf tx.Factory, fs *fl
val.Details,
)
valStr, err := valAc.BytesToString(sdk.ValAddress(valAddr))
if err != nil {
return txf, nil, err
}
msg, err := types.NewMsgCreateValidator(
sdk.ValAddress(valAddr), val.PubKey, val.Amount, description, val.CommissionRates, val.MinSelfDelegation,
valStr, val.PubKey, val.Amount, description, val.CommissionRates, val.MinSelfDelegation,
)
if err != nil {
return txf, nil, err
}
if err := msg.Validate(); err != nil {
if err := msg.Validate(valAc); err != nil {
return txf, nil, err
}
@ -549,7 +570,7 @@ func PrepareConfigForTxCreateValidator(flagSet *flag.FlagSet, moniker, nodeID, c
}
// BuildCreateValidatorMsg makes a new MsgCreateValidator.
func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorConfig, txBldr tx.Factory, generateOnly bool) (tx.Factory, sdk.Msg, error) {
func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorConfig, txBldr tx.Factory, generateOnly bool, valCodec address.Codec) (tx.Factory, sdk.Msg, error) {
amounstStr := config.Amount
amount, err := sdk.ParseCoinNormalized(amounstStr)
if err != nil {
@ -582,8 +603,13 @@ func BuildCreateValidatorMsg(clientCtx client.Context, config TxCreateValidatorC
return txBldr, nil, errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "minimum self delegation must be a positive integer")
}
valStr, err := valCodec.BytesToString(sdk.ValAddress(valAddr))
if err != nil {
return txBldr, nil, err
}
msg, err := types.NewMsgCreateValidator(
sdk.ValAddress(valAddr),
valStr,
config.PubKey,
amount,
description,

View File

@ -14,6 +14,7 @@ import (
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/hd"
"github.com/cosmos/cosmos-sdk/crypto/keyring"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
@ -161,7 +162,7 @@ func (s *CLITestSuite) TestPrepareConfigForTxCreateValidator() {
func (s *CLITestSuite) TestNewCreateValidatorCmd() {
require := s.Require()
cmd := cli.NewCreateValidatorCmd()
cmd := cli.NewCreateValidatorCmd(addresscodec.NewBech32Codec("cosmosvaloper"))
validJSON := fmt.Sprintf(`
{
@ -308,7 +309,7 @@ func (s *CLITestSuite) TestNewCreateValidatorCmd() {
}
func (s *CLITestSuite) TestNewEditValidatorCmd() {
cmd := cli.NewEditValidatorCmd()
cmd := cli.NewEditValidatorCmd(addresscodec.NewBech32Codec("cosmos"))
moniker := "testing"
details := "bio"
@ -431,7 +432,7 @@ func (s *CLITestSuite) TestNewEditValidatorCmd() {
}
func (s *CLITestSuite) TestNewDelegateCmd() {
cmd := cli.NewDelegateCmd()
cmd := cli.NewDelegateCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
testCases := []struct {
name string
@ -494,7 +495,7 @@ func (s *CLITestSuite) TestNewDelegateCmd() {
}
func (s *CLITestSuite) TestNewRedelegateCmd() {
cmd := cli.NewRedelegateCmd()
cmd := cli.NewRedelegateCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
testCases := []struct {
name string
@ -576,7 +577,7 @@ func (s *CLITestSuite) TestNewRedelegateCmd() {
}
func (s *CLITestSuite) TestNewUnbondCmd() {
cmd := cli.NewUnbondCmd()
cmd := cli.NewUnbondCmd(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
testCases := []struct {
name string
@ -639,7 +640,7 @@ func (s *CLITestSuite) TestNewUnbondCmd() {
}
func (s *CLITestSuite) TestNewCancelUnbondingDelegationCmd() {
cmd := cli.NewCancelUnbondingDelegation()
cmd := cli.NewCancelUnbondingDelegation(addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
testCases := []struct {
name string

View File

@ -304,7 +304,7 @@ func (k Keeper) GetDelegatorBonded(ctx context.Context, delegator sdk.AccAddress
bonded := math.LegacyZeroDec()
err := k.IterateDelegatorDelegations(ctx, delegator, func(delegation types.Delegation) bool {
validatorAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
validatorAddr, err := k.validatorAddressCodec.StringToBytes(delegation.ValidatorAddress)
if err != nil {
panic(err) // shouldn't happen
}
@ -385,7 +385,7 @@ func (k Keeper) SetUnbondingDelegation(ctx context.Context, ubd types.UnbondingD
store := k.storeService.OpenKVStore(ctx)
bz := types.MustMarshalUBD(k.cdc, ubd)
valAddr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress)
valAddr, err := k.validatorAddressCodec.StringToBytes(ubd.ValidatorAddress)
if err != nil {
return err
}
@ -406,7 +406,7 @@ func (k Keeper) RemoveUnbondingDelegation(ctx context.Context, ubd types.Unbondi
}
store := k.storeService.OpenKVStore(ctx)
addr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress)
addr, err := k.validatorAddressCodec.StringToBytes(ubd.ValidatorAddress)
if err != nil {
return err
}
@ -435,7 +435,7 @@ func (k Keeper) SetUnbondingDelegationEntry(
if err == nil {
isNewUbdEntry = ubd.AddEntry(creationHeight, minTime, balance, id)
} else if errors.Is(err, types.ErrNoUnbondingDelegation) {
ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, id)
ubd = types.NewUnbondingDelegation(delegatorAddr, validatorAddr, creationHeight, minTime, balance, id, k.validatorAddressCodec, k.authKeeper.AddressCodec())
} else {
return ubd, err
}
@ -653,11 +653,11 @@ func (k Keeper) SetRedelegation(ctx context.Context, red types.Redelegation) err
store := k.storeService.OpenKVStore(ctx)
bz := types.MustMarshalRED(k.cdc, red)
valSrcAddr, err := sdk.ValAddressFromBech32(red.ValidatorSrcAddress)
valSrcAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorSrcAddress)
if err != nil {
return err
}
valDestAddr, err := sdk.ValAddressFromBech32(red.ValidatorDstAddress)
valDestAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorDstAddress)
if err != nil {
return err
}
@ -691,7 +691,7 @@ func (k Keeper) SetRedelegationEntry(ctx context.Context,
red.AddEntry(creationHeight, minTime, balance, sharesDst, id)
} else if errors.Is(err, types.ErrNoRedelegation) {
red = types.NewRedelegation(delegatorAddr, validatorSrcAddr,
validatorDstAddr, creationHeight, minTime, balance, sharesDst, id)
validatorDstAddr, creationHeight, minTime, balance, sharesDst, id, k.validatorAddressCodec, k.authKeeper.AddressCodec())
} else {
return types.Redelegation{}, err
}
@ -744,11 +744,11 @@ func (k Keeper) RemoveRedelegation(ctx context.Context, red types.Redelegation)
}
store := k.storeService.OpenKVStore(ctx)
valSrcAddr, err := sdk.ValAddressFromBech32(red.ValidatorSrcAddress)
valSrcAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorSrcAddress)
if err != nil {
return err
}
valDestAddr, err := sdk.ValAddressFromBech32(red.ValidatorDstAddress)
valDestAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorDstAddress)
if err != nil {
return err
}

View File

@ -179,7 +179,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// delegate 2 tokens
//
// total delegations after delegating: del1 -> 2stake
_, err := s.msgServer.Delegate(ctx, stakingtypes.NewMsgDelegate(addrDels[0], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
_, err := s.msgServer.Delegate(ctx, stakingtypes.NewMsgDelegate(addrDels[0].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
require.NoError(err)
dels, err := s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -189,7 +189,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// delegate 4 tokens
//
// total delegations after delegating: del1 -> 2stake, del2 -> 4stake
_, err = s.msgServer.Delegate(ctx, stakingtypes.NewMsgDelegate(addrDels[1], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(4))))
_, err = s.msgServer.Delegate(ctx, stakingtypes.NewMsgDelegate(addrDels[1].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(4))))
require.NoError(err)
dels, err = s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -199,7 +199,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// undelegate 1 token from del1
//
// total delegations after undelegating: del1 -> 1stake, del2 -> 4stake
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[0], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(1))))
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[0].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(1))))
require.NoError(err)
dels, err = s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -209,7 +209,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// undelegate 1 token from del1
//
// total delegations after undelegating: del2 -> 4stake
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[0], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(1))))
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[0].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(1))))
require.NoError(err)
dels, err = s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -219,7 +219,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// undelegate 2 tokens from del2
//
// total delegations after undelegating: del2 -> 2stake
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[1], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[1].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
require.NoError(err)
dels, err = s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -229,7 +229,7 @@ func (s *KeeperTestSuite) TestDelegationsByValIndex() {
// undelegate 2 tokens from del2
//
// total delegations after undelegating: []
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[1], valAddrs[0], sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
_, err = s.msgServer.Undelegate(ctx, stakingtypes.NewMsgUndelegate(addrDels[1].String(), valAddrs[0].String(), sdk.NewCoin(sdk.DefaultBondDenom, math.NewInt(2))))
require.NoError(err)
dels, err = s.stakingKeeper.GetValidatorDelegations(ctx, valAddrs[0])
@ -253,6 +253,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegation() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"),
)
// set and retrieve a record
@ -309,6 +310,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationsFromValidator() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"),
)
// set and retrieve a record
@ -674,7 +676,7 @@ func (s *KeeperTestSuite) TestGetRedelegationsFromSrcValidator() {
rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0,
time.Unix(0, 0), math.NewInt(5),
math.LegacyNewDec(5), 0)
math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
// set and retrieve a record
err := keeper.SetRedelegation(ctx, rd)
@ -704,7 +706,7 @@ func (s *KeeperTestSuite) TestRedelegation() {
rd := stakingtypes.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0,
time.Unix(0, 0).UTC(), math.NewInt(5),
math.LegacyNewDec(5), 0)
math.LegacyNewDec(5), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
// test shouldn't have and redelegations
has, err := keeper.HasReceivingRedelegation(ctx, addrDels[0], addrVals[1])
@ -1066,6 +1068,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationAddEntry() {
time.Unix(0, 0).UTC(),
math.NewInt(10),
0,
address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"),
)
var initialEntries []stakingtypes.UnbondingDelegationEntry
initialEntries = append(initialEntries, ubd.Entries...)
@ -1107,6 +1110,7 @@ func (s *KeeperTestSuite) TestSetUnbondingDelegationEntry() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"),
)
// set and retrieve a record

View File

@ -173,7 +173,7 @@ func (k Keeper) InitGenesis(ctx context.Context, data *types.GenesisState) (res
// don't need to run CometBFT updates if we exported
if data.Exported {
for _, lv := range data.LastValidatorPowers {
valAddr, err := sdk.ValAddressFromBech32(lv.Address)
valAddr, err := k.validatorAddressCodec.StringToBytes(lv.Address)
if err != nil {
panic(err)
}
@ -231,7 +231,11 @@ func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState {
var lastValidatorPowers []types.LastValidatorPower
err = k.IterateLastValidatorPowers(ctx, func(addr sdk.ValAddress, power int64) (stop bool) {
lastValidatorPowers = append(lastValidatorPowers, types.LastValidatorPower{Address: addr.String(), Power: power})
addrStr, err := k.validatorAddressCodec.BytesToString(addr)
if err != nil {
panic(err)
}
lastValidatorPowers = append(lastValidatorPowers, types.LastValidatorPower{Address: addrStr, Power: power})
return false
})
if err != nil {

View File

@ -72,7 +72,7 @@ func (k Querier) Validator(ctx context.Context, req *types.QueryValidatorRequest
return nil, status.Error(codes.InvalidArgument, "validator address cannot be empty")
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -95,7 +95,7 @@ func (k Querier) ValidatorDelegations(ctx context.Context, req *types.QueryValid
return nil, status.Error(codes.InvalidArgument, "validator address cannot be empty")
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -174,7 +174,7 @@ func (k Querier) ValidatorUnbondingDelegations(ctx context.Context, req *types.Q
}
var ubds types.UnbondingDelegations
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -221,7 +221,7 @@ func (k Querier) Delegation(ctx context.Context, req *types.QueryDelegationReque
return nil, err
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -260,7 +260,7 @@ func (k Querier) UnbondingDelegation(ctx context.Context, req *types.QueryUnbond
return nil, err
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -332,7 +332,7 @@ func (k Querier) DelegatorValidator(ctx context.Context, req *types.QueryDelegat
return nil, err
}
valAddr, err := sdk.ValAddressFromBech32(req.ValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.ValidatorAddr)
if err != nil {
return nil, err
}
@ -504,12 +504,12 @@ func queryRedelegation(ctx context.Context, k Querier, req *types.QueryRedelegat
return nil, err
}
srcValAddr, err := sdk.ValAddressFromBech32(req.SrcValidatorAddr)
srcValAddr, err := k.validatorAddressCodec.StringToBytes(req.SrcValidatorAddr)
if err != nil {
return nil, err
}
dstValAddr, err := sdk.ValAddressFromBech32(req.DstValidatorAddr)
dstValAddr, err := k.validatorAddressCodec.StringToBytes(req.DstValidatorAddr)
if err != nil {
return nil, err
}
@ -527,7 +527,7 @@ func queryRedelegation(ctx context.Context, k Querier, req *types.QueryRedelegat
}
func queryRedelegationsFromSrcValidator(store storetypes.KVStore, k Querier, req *types.QueryRedelegationsRequest) (redels types.Redelegations, res *query.PageResponse, err error) {
valAddr, err := sdk.ValAddressFromBech32(req.SrcValidatorAddr)
valAddr, err := k.validatorAddressCodec.StringToBytes(req.SrcValidatorAddr)
if err != nil {
return nil, nil, err
}
@ -617,16 +617,16 @@ func redelegationsToRedelegationResponses(ctx context.Context, k *Keeper, redels
resp := make(types.RedelegationResponses, len(redels))
for i, redel := range redels {
valSrcAddr, err := sdk.ValAddressFromBech32(redel.ValidatorSrcAddress)
_, err := k.validatorAddressCodec.StringToBytes(redel.ValidatorSrcAddress)
if err != nil {
panic(err)
return nil, err
}
valDstAddr, err := sdk.ValAddressFromBech32(redel.ValidatorDstAddress)
valDstAddr, err := k.validatorAddressCodec.StringToBytes(redel.ValidatorDstAddress)
if err != nil {
panic(err)
return nil, err
}
delegatorAddress, err := k.authKeeper.AddressCodec().StringToBytes(redel.DelegatorAddress)
_, err = k.authKeeper.AddressCodec().StringToBytes(redel.DelegatorAddress)
if err != nil {
return nil, err
}
@ -649,9 +649,9 @@ func redelegationsToRedelegationResponses(ctx context.Context, k *Keeper, redels
}
resp[i] = types.NewRedelegationResponse(
delegatorAddress,
valSrcAddr,
valDstAddr,
redel.DelegatorAddress,
redel.ValidatorSrcAddress,
redel.ValidatorDstAddress,
entryResponses,
)
}

View File

@ -189,7 +189,11 @@ func DelegatorSharesInvariant(k *Keeper) sdk.Invariant {
// initialize a map: validator -> its delegation shares
for _, validator := range validators {
validatorsDelegationShares[validator.GetOperator().String()] = math.LegacyZeroDec()
addrStr, err := k.validatorAddressCodec.BytesToString(validator.GetOperator())
if err != nil {
panic(err)
}
validatorsDelegationShares[addrStr] = math.LegacyZeroDec()
}
// iterate through all the delegations to calculate the total delegation shares for each validator
@ -207,7 +211,11 @@ func DelegatorSharesInvariant(k *Keeper) sdk.Invariant {
// for each validator, check if its total delegation shares calculated from the step above equals to its expected delegation shares
for _, validator := range validators {
expValTotalDelShares := validator.GetDelegatorShares()
calculatedValTotalDelShares := validatorsDelegationShares[validator.GetOperator().String()]
addrStr, err := k.validatorAddressCodec.BytesToString(validator.GetOperator())
if err != nil {
panic(err)
}
calculatedValTotalDelShares := validatorsDelegationShares[addrStr]
if !calculatedValTotalDelShares.Equal(expValTotalDelShares) {
broken = true
msg += fmt.Sprintf("broken delegator shares invariance:\n"+

View File

@ -38,7 +38,7 @@ func (k msgServer) CreateValidator(ctx context.Context, msg *types.MsgCreateVali
return nil, sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err)
}
if err := msg.Validate(); err != nil {
if err := msg.Validate(k.validatorAddressCodec); err != nil {
return nil, err
}
@ -99,7 +99,7 @@ func (k msgServer) CreateValidator(ctx context.Context, msg *types.MsgCreateVali
}
}
validator, err := types.NewValidator(valAddr, pk, msg.Description)
validator, err := types.NewValidator(msg.ValidatorAddress, pk, msg.Description)
if err != nil {
return nil, err
}

View File

@ -252,7 +252,7 @@ func (s *KeeperTestSuite) TestMsgEditValidator() {
require.NotNil(pk)
comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0))
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr, pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err := msgServer.CreateValidator(ctx, msg)
@ -426,7 +426,7 @@ func (s *KeeperTestSuite) TestMsgDelegate() {
comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0))
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr, pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, sdk.NewCoin("stake", math.NewInt(10)), stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err := msgServer.CreateValidator(ctx, msg)
@ -551,14 +551,14 @@ func (s *KeeperTestSuite) TestMsgBeginRedelegate() {
comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0))
amt := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))}
msg, err := stakingtypes.NewMsgCreateValidator(srcValAddr, pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(srcValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err := msgServer.CreateValidator(ctx, msg)
require.NoError(err)
require.NotNil(res)
s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), addr2, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes()
msg, err = stakingtypes.NewMsgCreateValidator(dstValAddr, dstPk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err = stakingtypes.NewMsgCreateValidator(dstValAddr.String(), dstPk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err = msgServer.CreateValidator(ctx, msg)
@ -713,7 +713,7 @@ func (s *KeeperTestSuite) TestMsgUndelegate() {
comm := stakingtypes.NewCommissionRates(math.LegacyNewDec(0), math.LegacyNewDec(0), math.LegacyNewDec(0))
amt := sdk.Coin{Denom: sdk.DefaultBondDenom, Amount: keeper.TokensFromConsensusPower(s.ctx, int64(100))}
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr, pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err := msgServer.CreateValidator(ctx, msg)
require.NoError(err)
@ -827,7 +827,7 @@ func (s *KeeperTestSuite) TestMsgUndelegate() {
}
func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() {
ctx, keeper, msgServer := s.ctx, s.stakingKeeper, s.msgServer
ctx, keeper, msgServer, ak := s.ctx, s.stakingKeeper, s.msgServer, s.accountKeeper
require := s.Require()
pk := ed25519.GenPrivKey().PubKey()
@ -838,7 +838,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() {
s.bankKeeper.EXPECT().DelegateCoinsFromAccountToModule(gomock.Any(), Addr, stakingtypes.NotBondedPoolName, gomock.Any()).AnyTimes()
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr, pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(ValAddr.String(), pk, amt, stakingtypes.Description{Moniker: "NewVal"}, comm, math.OneInt())
require.NoError(err)
res, err := msgServer.CreateValidator(ctx, msg)
require.NoError(err)
@ -851,7 +851,7 @@ func (s *KeeperTestSuite) TestMsgCancelUnbondingDelegation() {
require.NoError(err)
require.Equal(del, resDel)
ubd := stakingtypes.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.BlockTime().Add(time.Minute*10), shares.RoundInt(), 0)
ubd := stakingtypes.NewUnbondingDelegation(Addr, ValAddr, 10, ctx.BlockTime().Add(time.Minute*10), shares.RoundInt(), 0, keeper.ValidatorAddressCodec(), ak.AddressCodec())
require.NoError(keeper.SetUnbondingDelegation(ctx, ubd))
resUnbond, err := keeper.GetUnbondingDelegation(ctx, Addr, ValAddr)
require.NoError(err)

View File

@ -131,19 +131,19 @@ func (k Keeper) GetAllRedelegations(
for ; iterator.Valid(); iterator.Next() {
redelegation := types.MustUnmarshalRED(k.cdc, iterator.Value())
valSrcAddr, err := sdk.ValAddressFromBech32(redelegation.ValidatorSrcAddress)
valSrcAddr, err := k.validatorAddressCodec.StringToBytes(redelegation.ValidatorSrcAddress)
if err != nil {
return nil, err
}
valDstAddr, err := sdk.ValAddressFromBech32(redelegation.ValidatorDstAddress)
valDstAddr, err := k.validatorAddressCodec.StringToBytes(redelegation.ValidatorDstAddress)
if err != nil {
return nil, err
}
if srcValFilter && !(srcValAddress.Equals(valSrcAddr)) {
if srcValFilter && !(srcValAddress.Equals(sdk.ValAddress(valSrcAddr))) {
continue
}
if dstValFilter && !(dstValAddress.Equals(valDstAddr)) {
if dstValFilter && !(dstValAddress.Equals(sdk.ValAddress(valDstAddr))) {
continue
}

View File

@ -53,9 +53,14 @@ func (k Keeper) Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionH
// NOTE: Correctness dependent on invariant that unbonding delegations / redelegations must also have been completely
// slashed in this case - which we don't explicitly check, but should be true.
// Log the slash attempt for future reference (maybe we should tag it too)
conStr, err := k.consensusAddressCodec.BytesToString(consAddr)
if err != nil {
panic(err)
}
logger.Error(
"WARNING: ignored attempt to slash a nonexistent validator; we recommend you investigate immediately",
"validator", consAddr.String(),
"validator", conStr,
)
return math.NewInt(0), nil
} else if err != nil {
@ -170,9 +175,13 @@ func (k Keeper) Slash(ctx context.Context, consAddr sdk.ConsAddress, infractionH
panic("invalid validator status")
}
valAddr, err := k.validatorAddressCodec.BytesToString(validator.GetOperator())
if err != nil {
panic(err)
}
logger.Info(
"validator slashed by slash factor",
"validator", validator.GetOperator().String(),
"validator", valAddr,
"slash_factor", slashFactor.String(),
"burned", tokensToBurn,
)
@ -300,7 +309,7 @@ func (k Keeper) SlashRedelegation(ctx context.Context, srcValidator types.Valida
continue
}
valDstAddr, err := sdk.ValAddressFromBech32(redelegation.ValidatorDstAddress)
valDstAddr, err := k.validatorAddressCodec.StringToBytes(redelegation.ValidatorDstAddress)
if err != nil {
panic(err)
}

View File

@ -172,7 +172,7 @@ func (k Keeper) SetUnbondingDelegationByUnbondingID(ctx context.Context, ubd typ
if err != nil {
return err
}
valAddr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress)
valAddr, err := k.validatorAddressCodec.StringToBytes(ubd.ValidatorAddress)
if err != nil {
return err
}
@ -196,12 +196,12 @@ func (k Keeper) SetRedelegationByUnbondingID(ctx context.Context, red types.Rede
return err
}
valSrcAddr, err := sdk.ValAddressFromBech32(red.ValidatorSrcAddress)
valSrcAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorSrcAddress)
if err != nil {
return err
}
valDstAddr, err := sdk.ValAddressFromBech32(red.ValidatorDstAddress)
valDstAddr, err := k.validatorAddressCodec.StringToBytes(red.ValidatorDstAddress)
if err != nil {
return err
}
@ -220,7 +220,7 @@ func (k Keeper) SetRedelegationByUnbondingID(ctx context.Context, red types.Rede
func (k Keeper) SetValidatorByUnbondingID(ctx context.Context, val types.Validator, id uint64) error {
store := k.storeService.OpenKVStore(ctx)
valAddr, err := sdk.ValAddressFromBech32(val.OperatorAddress)
valAddr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress)
if err != nil {
return err
}

View File

@ -5,6 +5,7 @@ import (
"cosmossdk.io/math"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/staking/testutil"
"github.com/cosmos/cosmos-sdk/x/staking/types"
@ -82,6 +83,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
{
@ -94,6 +96,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
{
@ -106,6 +109,7 @@ func (s *KeeperTestSuite) TestUnbondingDelegationByUnbondingIDAccessors() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
}
@ -157,6 +161,7 @@ func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() {
math.NewInt(10),
math.LegacyNewDec(10),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
{
@ -171,6 +176,7 @@ func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() {
math.NewInt(10),
math.LegacyNewDec(10),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
{
@ -185,6 +191,7 @@ func (s *KeeperTestSuite) TestRedelegationByUnbondingIDAccessors() {
math.NewInt(10),
math.LegacyNewDec(10),
0,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
),
},
}
@ -284,6 +291,7 @@ func (s *KeeperTestSuite) TestUnbondingCanComplete() {
time.Unix(0, 0).UTC(),
math.NewInt(5),
unbondingID,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
)
require.NoError(s.stakingKeeper.SetUnbondingDelegation(s.ctx, ubd))
require.NoError(s.stakingKeeper.SetUnbondingDelegationByUnbondingID(s.ctx, ubd, unbondingID))
@ -311,6 +319,7 @@ func (s *KeeperTestSuite) TestUnbondingCanComplete() {
math.NewInt(10),
math.LegacyNewDec(10),
unbondingID,
addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"),
)
require.NoError(s.stakingKeeper.SetRedelegation(s.ctx, red))
require.NoError(s.stakingKeeper.SetRedelegationByUnbondingID(s.ctx, red, unbondingID))

View File

@ -9,6 +9,7 @@ import (
abci "github.com/cometbft/cometbft/abci/types"
gogotypes "github.com/cosmos/gogoproto/types"
"cosmossdk.io/core/address"
"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -46,7 +47,7 @@ func (k Keeper) BlockValidatorUpdates(ctx context.Context) ([]abci.ValidatorUpda
}
for _, dvPair := range matureUnbonds {
addr, err := sdk.ValAddressFromBech32(dvPair.ValidatorAddress)
addr, err := k.validatorAddressCodec.StringToBytes(dvPair.ValidatorAddress)
if err != nil {
return nil, err
}
@ -77,11 +78,11 @@ func (k Keeper) BlockValidatorUpdates(ctx context.Context) ([]abci.ValidatorUpda
}
for _, dvvTriplet := range matureRedelegations {
valSrcAddr, err := sdk.ValAddressFromBech32(dvvTriplet.ValidatorSrcAddress)
valSrcAddr, err := k.validatorAddressCodec.StringToBytes(dvvTriplet.ValidatorSrcAddress)
if err != nil {
return nil, err
}
valDstAddr, err := sdk.ValAddressFromBech32(dvvTriplet.ValidatorDstAddress)
valDstAddr, err := k.validatorAddressCodec.StringToBytes(dvvTriplet.ValidatorDstAddress)
if err != nil {
return nil, err
}
@ -211,7 +212,7 @@ func (k Keeper) ApplyAndReturnValidatorSetUpdates(ctx context.Context) (updates
totalPower = totalPower.Add(math.NewInt(newPower))
}
noLongerBonded, err := sortNoLongerBonded(last)
noLongerBonded, err := sortNoLongerBonded(last, k.validatorAddressCodec)
if err != nil {
return nil, err
}
@ -472,13 +473,13 @@ func (k Keeper) getLastValidatorsByAddr(ctx context.Context) (validatorsByAddr,
// given a map of remaining validators to previous bonded power
// returns the list of validators to be unbonded, sorted by operator address
func sortNoLongerBonded(last validatorsByAddr) ([][]byte, error) {
func sortNoLongerBonded(last validatorsByAddr, ac address.Codec) ([][]byte, error) {
// sort the map keys for determinism
noLongerBonded := make([][]byte, len(last))
index := 0
for valAddrStr := range last {
valAddrBytes, err := sdk.ValAddressFromBech32(valAddrStr)
valAddrBytes, err := ac.StringToBytes(valAddrStr)
if err != nil {
return nil, err
}

View File

@ -1,6 +1,7 @@
package keeper
import (
"bytes"
"context"
"errors"
"fmt"
@ -481,19 +482,19 @@ func (k Keeper) DeleteValidatorQueue(ctx context.Context, val types.Validator) e
// since address string may change due to Bech32 prefix change, we parse the addresses into bytes
// format for normalization
deletingAddr, err := sdk.ValAddressFromBech32(val.OperatorAddress)
deletingAddr, err := k.validatorAddressCodec.StringToBytes(val.OperatorAddress)
if err != nil {
return err
}
for _, addr := range addrs {
storedAddr, err := sdk.ValAddressFromBech32(addr)
storedAddr, err := k.validatorAddressCodec.StringToBytes(addr)
if err != nil {
// even if we don't error here, it will error in UnbondAllMatureValidators at unbond time
return err
}
if !storedAddr.Equals(deletingAddr) {
newAddrs = append(newAddrs, storedAddr.String())
if !bytes.Equal(storedAddr, deletingAddr) {
newAddrs = append(newAddrs, addr)
}
}
@ -546,7 +547,7 @@ func (k Keeper) UnbondAllMatureValidators(ctx context.Context) error {
}
for _, valAddr := range addrs.Addresses {
addr, err := sdk.ValAddressFromBech32(valAddr)
addr, err := k.validatorAddressCodec.StringToBytes(valAddr)
if err != nil {
return err
}

View File

@ -90,8 +90,8 @@ func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *g
}
// GetTxCmd returns the root tx command for the staking module.
func (AppModuleBasic) GetTxCmd() *cobra.Command {
return cli.NewTxCmd()
func (amb AppModuleBasic) GetTxCmd() *cobra.Command {
return cli.NewTxCmd(amb.cdc.InterfaceRegistry().SigningContext().ValidatorAddressCodec(), amb.cdc.InterfaceRegistry().SigningContext().AddressCodec())
}
// AppModule implements an application module for the staking module.

View File

@ -9,6 +9,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec/address"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/kv"
@ -28,11 +29,11 @@ func TestDecodeStore(t *testing.T) {
dec := simulation.NewDecodeStore(cdc)
bondTime := time.Now().UTC()
val, err := types.NewValidator(valAddr1, delPk1, types.NewDescription("test", "test", "test", "test", "test"))
val, err := types.NewValidator(valAddr1.String(), delPk1, types.NewDescription("test", "test", "test", "test", "test"))
require.NoError(t, err)
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)
ubd := types.NewUnbondingDelegation(delAddr1, valAddr1, 15, bondTime, math.OneInt(), 1, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
red := types.NewRedelegation(delAddr1, valAddr1, valAddr1, 12, bondTime, math.OneInt(), math.LegacyOneDec(), 0, address.NewBech32Codec("cosmosvaloper"), address.NewBech32Codec("cosmos"))
oneIntBz, err := math.OneInt().Marshal()
require.NoError(t, err)

View File

@ -76,7 +76,7 @@ func RandomizedGenState(simState *module.SimulationState) {
simulation.RandomDecAmount(simState.Rand, maxCommission),
)
validator, err := types.NewValidator(valAddr, simState.Accounts[i].ConsKey.PubKey(), types.Description{})
validator, err := types.NewValidator(valAddr.String(), simState.Accounts[i].ConsKey.PubKey(), types.Description{})
if err != nil {
panic(err)
}

View File

@ -170,7 +170,7 @@ func SimulateMsgCreateValidator(
simtypes.RandomDecAmount(r, maxCommission),
)
msg, err := types.NewMsgCreateValidator(address, simAccount.ConsKey.PubKey(), selfDelegation, description, commission, math.OneInt())
msg, err := types.NewMsgCreateValidator(address.String(), simAccount.ConsKey.PubKey(), selfDelegation, description, commission, math.OneInt())
if err != nil {
return simtypes.NoOpMsg(types.ModuleName, sdk.MsgTypeURL(msg), "unable to create CreateValidator message"), nil, err
}
@ -241,7 +241,7 @@ func SimulateMsgEditValidator(
simtypes.RandStringOfLength(r, 10),
)
msg := types.NewMsgEditValidator(address, description, &newCommissionRate, nil)
msg := types.NewMsgEditValidator(address.String(), description, &newCommissionRate, nil)
txCtx := simulation.OperationInput{
R: r,
@ -321,7 +321,7 @@ func SimulateMsgDelegate(
}
}
msg := types.NewMsgDelegate(simAccount.Address, val.GetOperator(), bondAmt)
msg := types.NewMsgDelegate(simAccount.Address.String(), val.GetOperator().String(), bondAmt)
txCtx := simulation.OperationInput{
R: r,
@ -413,7 +413,7 @@ func SimulateMsgUndelegate(
}
msg := types.NewMsgUndelegate(
delAddrBz, valAddr, sdk.NewCoin(bondDenom, unbondAmt),
delAddr, valAddr.String(), sdk.NewCoin(bondDenom, unbondAmt),
)
// need to retrieve the simulation account associated with delegation to retrieve PrivKey
@ -525,7 +525,7 @@ func SimulateMsgCancelUnbondingDelegate(
}
msg := types.NewMsgCancelUnbondingDelegation(
simAccount.Address, valAddr, unbondingDelegationEntry.CreationHeight, sdk.NewCoin(bondDenom, cancelBondAmt),
simAccount.Address.String(), valAddr.String(), unbondingDelegationEntry.CreationHeight, sdk.NewCoin(bondDenom, cancelBondAmt),
)
spendable := bk.SpendableCoins(ctx, simAccount.Address)
@ -666,7 +666,7 @@ func SimulateMsgBeginRedelegate(
}
msg := types.NewMsgBeginRedelegate(
delAddrBz, srcAddr, destAddr,
delAddr, srcAddr.String(), destAddr.String(),
sdk.NewCoin(bondDenom, redAmt),
)

View File

@ -52,7 +52,7 @@ func (sh *Helper) CreateValidatorWithValPower(addr sdk.ValAddress, pk cryptotype
// CreateValidatorMsg returns a message used to create validator in this service.
func (sh *Helper) CreateValidatorMsg(addr sdk.ValAddress, pk cryptotypes.PubKey, stakeAmount math.Int) *stakingtypes.MsgCreateValidator {
coin := sdk.NewCoin(sh.Denom, stakeAmount)
msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{}, sh.Commission, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{}, sh.Commission, math.OneInt())
require.NoError(sh.t, err)
return msg
}
@ -63,7 +63,7 @@ func (sh *Helper) CreateValidatorWithMsg(ctx context.Context, msg *stakingtypes.
}
func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, coin sdk.Coin, ok bool) {
msg, err := stakingtypes.NewMsgCreateValidator(addr, pk, coin, stakingtypes.Description{Moniker: "TestValidator"}, sh.Commission, math.OneInt())
msg, err := stakingtypes.NewMsgCreateValidator(addr.String(), pk, coin, stakingtypes.Description{Moniker: "TestValidator"}, sh.Commission, math.OneInt())
require.NoError(sh.t, err)
res, err := sh.msgSrvr.CreateValidator(sh.Ctx, msg)
if ok {
@ -78,7 +78,7 @@ func (sh *Helper) createValidator(addr sdk.ValAddress, pk cryptotypes.PubKey, co
// Delegate calls staking module staking module `MsgServer/Delegate` to delegate stake for a validator
func (sh *Helper) Delegate(delegator sdk.AccAddress, val sdk.ValAddress, amount math.Int) {
coin := sdk.NewCoin(sh.Denom, amount)
msg := stakingtypes.NewMsgDelegate(delegator, val, coin)
msg := stakingtypes.NewMsgDelegate(delegator.String(), val.String(), coin)
res, err := sh.msgSrvr.Delegate(sh.Ctx, msg)
require.NoError(sh.t, err)
require.NotNil(sh.t, res)
@ -87,7 +87,7 @@ func (sh *Helper) Delegate(delegator sdk.AccAddress, val sdk.ValAddress, amount
// DelegateWithPower calls staking module `MsgServer/Delegate` to delegate stake for a validator
func (sh *Helper) DelegateWithPower(delegator sdk.AccAddress, val sdk.ValAddress, power int64) {
coin := sdk.NewCoin(sh.Denom, sh.k.TokensFromConsensusPower(sh.Ctx, power))
msg := stakingtypes.NewMsgDelegate(delegator, val, coin)
msg := stakingtypes.NewMsgDelegate(delegator.String(), val.String(), coin)
res, err := sh.msgSrvr.Delegate(sh.Ctx, msg)
require.NoError(sh.t, err)
require.NotNil(sh.t, res)
@ -96,7 +96,7 @@ func (sh *Helper) DelegateWithPower(delegator sdk.AccAddress, val sdk.ValAddress
// Undelegate calls staking module `MsgServer/Undelegate` to unbound some stake from a validator.
func (sh *Helper) Undelegate(delegator sdk.AccAddress, val sdk.ValAddress, amount math.Int, ok bool) {
unbondAmt := sdk.NewCoin(sh.Denom, amount)
msg := stakingtypes.NewMsgUndelegate(delegator, val, unbondAmt)
msg := stakingtypes.NewMsgUndelegate(delegator.String(), val.String(), unbondAmt)
res, err := sh.msgSrvr.Undelegate(sh.Ctx, msg)
if ok {
require.NoError(sh.t, err)

View File

@ -13,7 +13,7 @@ import (
// NewValidator is a testing helper method to create validators in tests
func NewValidator(tb testing.TB, operator sdk.ValAddress, pubKey cryptotypes.PubKey) types.Validator {
tb.Helper()
v, err := types.NewValidator(operator, pubKey, types.Description{})
v, err := types.NewValidator(operator.String(), pubKey, types.Description{})
require.NoError(tb, err)
return v
}

View File

@ -73,7 +73,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
&coin100,
stakingtypes.NewMsgDelegate(delAddr, val1, coin100),
stakingtypes.NewMsgDelegate(delAddr.String(), val1.String(), coin100),
false,
true,
nil,
@ -84,7 +84,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
&coin100,
stakingtypes.NewMsgDelegate(delAddr, val1, coin150),
stakingtypes.NewMsgDelegate(delAddr.String(), val1.String(), coin150),
true,
false,
nil,
@ -95,7 +95,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
&coin100,
stakingtypes.NewMsgDelegate(delAddr, val1, coin50),
stakingtypes.NewMsgDelegate(delAddr.String(), val1.String(), coin50),
false,
false,
&stakingtypes.StakeAuthorization{
@ -110,7 +110,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
&coin100,
stakingtypes.NewMsgDelegate(delAddr, val3, coin100),
stakingtypes.NewMsgDelegate(delAddr.String(), val3.String(), coin100),
true,
false,
nil,
@ -121,7 +121,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
nil,
stakingtypes.NewMsgDelegate(delAddr, val2, coin100),
stakingtypes.NewMsgDelegate(delAddr.String(), val2.String(), coin100),
false,
false,
&stakingtypes.StakeAuthorization{
@ -136,7 +136,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{val1},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
nil,
stakingtypes.NewMsgDelegate(delAddr, val1, coin100),
stakingtypes.NewMsgDelegate(delAddr.String(), val1.String(), coin100),
true,
false,
nil,
@ -147,7 +147,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{val1},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_DELEGATE,
nil,
stakingtypes.NewMsgDelegate(delAddr, val2, coin100),
stakingtypes.NewMsgDelegate(delAddr.String(), val2.String(), coin100),
false,
false,
&stakingtypes.StakeAuthorization{
@ -162,7 +162,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE,
&coin100,
stakingtypes.NewMsgUndelegate(delAddr, val1, coin100),
stakingtypes.NewMsgUndelegate(delAddr.String(), val1.String(), coin100),
false,
true,
nil,
@ -173,7 +173,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE,
&coin100,
stakingtypes.NewMsgUndelegate(delAddr, val1, coin50),
stakingtypes.NewMsgUndelegate(delAddr.String(), val1.String(), coin50),
false,
false,
&stakingtypes.StakeAuthorization{
@ -188,7 +188,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE,
&coin100,
stakingtypes.NewMsgUndelegate(delAddr, val3, coin100),
stakingtypes.NewMsgUndelegate(delAddr.String(), val3.String(), coin100),
true,
false,
nil,
@ -199,7 +199,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE,
nil,
stakingtypes.NewMsgUndelegate(delAddr, val2, coin100),
stakingtypes.NewMsgUndelegate(delAddr.String(), val2.String(), coin100),
false,
false,
&stakingtypes.StakeAuthorization{
@ -214,7 +214,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{val1},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_UNDELEGATE,
&coin100,
stakingtypes.NewMsgUndelegate(delAddr, val1, coin100),
stakingtypes.NewMsgUndelegate(delAddr.String(), val1.String(), coin100),
true,
false,
nil,
@ -226,7 +226,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_REDELEGATE,
&coin100,
stakingtypes.NewMsgUndelegate(delAddr, val1, coin100),
stakingtypes.NewMsgUndelegate(delAddr.String(), val1.String(), coin100),
false,
true,
nil,
@ -237,7 +237,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_REDELEGATE,
&coin100,
stakingtypes.NewMsgBeginRedelegate(delAddr, val1, val1, coin50),
stakingtypes.NewMsgBeginRedelegate(delAddr.String(), val1.String(), val1.String(), coin50),
false,
false,
&stakingtypes.StakeAuthorization{
@ -252,7 +252,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_REDELEGATE,
&coin100,
stakingtypes.NewMsgBeginRedelegate(delAddr, val3, val3, coin100),
stakingtypes.NewMsgBeginRedelegate(delAddr.String(), val3.String(), val3.String(), coin100),
true,
false,
nil,
@ -263,7 +263,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_REDELEGATE,
nil,
stakingtypes.NewMsgBeginRedelegate(delAddr, val2, val2, coin100),
stakingtypes.NewMsgBeginRedelegate(delAddr.String(), val2.String(), val2.String(), coin100),
false,
false,
&stakingtypes.StakeAuthorization{
@ -278,7 +278,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{val1},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_REDELEGATE,
&coin100,
stakingtypes.NewMsgBeginRedelegate(delAddr, val1, val1, coin100),
stakingtypes.NewMsgBeginRedelegate(delAddr.String(), val1.String(), val1.String(), coin100),
true,
false,
nil,
@ -289,7 +289,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_CANCEL_UNBONDING_DELEGATION,
&coin100,
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr, val1, ctx.HeaderInfo().Height, coin100),
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr.String(), val1.String(), ctx.HeaderInfo().Height, coin100),
false,
true,
nil,
@ -300,7 +300,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_CANCEL_UNBONDING_DELEGATION,
&coin100,
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr, val1, ctx.HeaderInfo().Height, coin50),
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr.String(), val1.String(), ctx.HeaderInfo().Height, coin50),
false,
false,
&stakingtypes.StakeAuthorization{
@ -317,7 +317,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_CANCEL_UNBONDING_DELEGATION,
&coin100,
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr, val3, ctx.HeaderInfo().Height, coin50),
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr.String(), val3.String(), ctx.HeaderInfo().Height, coin50),
true,
false,
nil,
@ -328,7 +328,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_CANCEL_UNBONDING_DELEGATION,
nil,
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr, val2, ctx.HeaderInfo().Height, coin100),
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr.String(), val2.String(), ctx.HeaderInfo().Height, coin100),
false,
false,
&stakingtypes.StakeAuthorization{
@ -345,7 +345,7 @@ func TestAuthzAuthorizations(t *testing.T) {
[]sdk.ValAddress{val1},
stakingtypes.AuthorizationType_AUTHORIZATION_TYPE_CANCEL_UNBONDING_DELEGATION,
&coin100,
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr, val1, ctx.HeaderInfo().Height, coin100),
stakingtypes.NewMsgCancelUnbondingDelegation(delAddr.String(), val1.String(), ctx.HeaderInfo().Height, coin100),
true,
false,
nil,

View File

@ -5,6 +5,7 @@ import (
"strings"
"time"
"cosmossdk.io/core/address"
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec"
@ -111,10 +112,19 @@ func UnmarshalUBDE(cdc codec.BinaryCodec, value []byte) (ubd UnbondingDelegation
func NewUnbondingDelegation(
delegatorAddr sdk.AccAddress, validatorAddr sdk.ValAddress,
creationHeight int64, minTime time.Time, balance math.Int, id uint64,
valAc, delAc address.Codec,
) UnbondingDelegation {
valAddr, err := valAc.BytesToString(validatorAddr)
if err != nil {
panic(err)
}
delAddr, err := delAc.BytesToString(delegatorAddr)
if err != nil {
panic(err)
}
return UnbondingDelegation{
DelegatorAddress: delegatorAddr.String(),
ValidatorAddress: validatorAddr.String(),
DelegatorAddress: delAddr,
ValidatorAddress: valAddr,
Entries: []UnbondingDelegationEntry{
NewUnbondingDelegationEntry(creationHeight, minTime, balance, id),
},
@ -208,11 +218,25 @@ func (e RedelegationEntry) OnHold() bool {
func NewRedelegation(
delegatorAddr sdk.AccAddress, validatorSrcAddr, validatorDstAddr sdk.ValAddress,
creationHeight int64, minTime time.Time, balance math.Int, sharesDst math.LegacyDec, id uint64,
valAc, delAc address.Codec,
) Redelegation {
valSrcAddr, err := valAc.BytesToString(validatorSrcAddr)
if err != nil {
panic(err)
}
valDstAddr, err := valAc.BytesToString(validatorDstAddr)
if err != nil {
panic(err)
}
delAddr, err := delAc.BytesToString(delegatorAddr)
if err != nil {
panic(err)
}
return Redelegation{
DelegatorAddress: delegatorAddr.String(),
ValidatorSrcAddress: validatorSrcAddr.String(),
ValidatorDstAddress: validatorDstAddr.String(),
DelegatorAddress: delAddr,
ValidatorSrcAddress: valSrcAddr,
ValidatorDstAddress: valDstAddr,
Entries: []RedelegationEntry{
NewRedelegationEntry(creationHeight, minTime, balance, sharesDst, id),
},
@ -303,13 +327,13 @@ func (d DelegationResponses) String() (out string) {
// NewRedelegationResponse crates a new RedelegationEntryResponse instance.
func NewRedelegationResponse(
delegatorAddr sdk.AccAddress, validatorSrc, validatorDst sdk.ValAddress, entries []RedelegationEntryResponse,
delegatorAddr, validatorSrc, validatorDst string, entries []RedelegationEntryResponse,
) RedelegationResponse {
return RedelegationResponse{
Redelegation: Redelegation{
DelegatorAddress: delegatorAddr.String(),
ValidatorSrcAddress: validatorSrc.String(),
ValidatorDstAddress: validatorDst.String(),
DelegatorAddress: delegatorAddr,
ValidatorSrcAddress: validatorSrc,
ValidatorDstAddress: validatorDst,
},
Entries: entries,
}

View File

@ -11,6 +11,7 @@ import (
"cosmossdk.io/math"
"github.com/cosmos/cosmos-sdk/codec"
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/staking/types"
)
@ -36,7 +37,7 @@ func TestDelegationString(t *testing.T) {
func TestUnbondingDelegationEqual(t *testing.T) {
ubd1 := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0,
time.Unix(0, 0), math.NewInt(0), 1)
time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
ubd2 := ubd1
ok := ubd1.String() == ubd2.String()
@ -51,7 +52,7 @@ func TestUnbondingDelegationEqual(t *testing.T) {
func TestUnbondingDelegationString(t *testing.T) {
ubd := types.NewUnbondingDelegation(sdk.AccAddress(valAddr1), valAddr2, 0,
time.Unix(0, 0), math.NewInt(0), 1)
time.Unix(0, 0), math.NewInt(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
require.NotEmpty(t, ubd.String())
}
@ -59,10 +60,10 @@ func TestUnbondingDelegationString(t *testing.T) {
func TestRedelegationEqual(t *testing.T) {
r1 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0,
time.Unix(0, 0), math.NewInt(0),
math.LegacyNewDec(0), 1)
math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
r2 := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0,
time.Unix(0, 0), math.NewInt(0),
math.LegacyNewDec(0), 1)
math.LegacyNewDec(0), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
require.True(t, proto.Equal(&r1, &r2))
r2.Entries[0].SharesDst = math.LegacyNewDec(10)
@ -73,7 +74,7 @@ func TestRedelegationEqual(t *testing.T) {
func TestRedelegationString(t *testing.T) {
r := types.NewRedelegation(sdk.AccAddress(valAddr1), valAddr2, valAddr3, 0,
time.Unix(0, 0), math.NewInt(0),
math.LegacyNewDec(10), 1)
math.LegacyNewDec(10), 1, addresscodec.NewBech32Codec("cosmosvaloper"), addresscodec.NewBech32Codec("cosmos"))
require.NotEmpty(t, r.String())
}
@ -113,8 +114,8 @@ func TestRedelegationResponses(t *testing.T) {
types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0),
types.NewRedelegationEntryResponse(0, time.Unix(0, 0), math.LegacyNewDec(5), math.NewInt(5), math.NewInt(5), 0),
}
rdr1 := types.NewRedelegationResponse(sdk.AccAddress(valAddr1), valAddr2, valAddr3, entries)
rdr2 := types.NewRedelegationResponse(sdk.AccAddress(valAddr2), valAddr1, valAddr3, entries)
rdr1 := types.NewRedelegationResponse(sdk.AccAddress(valAddr1).String(), valAddr2.String(), valAddr3.String(), entries)
rdr2 := types.NewRedelegationResponse(sdk.AccAddress(valAddr2).String(), valAddr1.String(), valAddr3.String(), entries)
rdrs := types.RedelegationResponses{rdr1, rdr2}
bz1, err := json.Marshal(rdr1)

View File

@ -1,6 +1,7 @@
package types
import (
"cosmossdk.io/core/address"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/math"
@ -24,7 +25,7 @@ var (
// NewMsgCreateValidator creates a new MsgCreateValidator instance.
// Delegator address and validator address are the same.
func NewMsgCreateValidator(
valAddr sdk.ValAddress, pubKey cryptotypes.PubKey,
valAddr string, pubKey cryptotypes.PubKey,
selfDelegation sdk.Coin, description Description, commission CommissionRates, minSelfDelegation math.Int,
) (*MsgCreateValidator, error) {
var pkAny *codectypes.Any
@ -36,7 +37,7 @@ func NewMsgCreateValidator(
}
return &MsgCreateValidator{
Description: description,
ValidatorAddress: valAddr.String(),
ValidatorAddress: valAddr,
Pubkey: pkAny,
Value: selfDelegation,
Commission: commission,
@ -45,9 +46,9 @@ func NewMsgCreateValidator(
}
// Validate validates the MsgCreateValidator sdk msg.
func (msg MsgCreateValidator) Validate() error {
func (msg MsgCreateValidator) Validate(ac address.Codec) error {
// note that unmarshaling from bech32 ensures both non-empty and valid
_, err := sdk.ValAddressFromBech32(msg.ValidatorAddress)
_, err := ac.StringToBytes(msg.ValidatorAddress)
if err != nil {
return sdkerrors.ErrInvalidAddress.Wrapf("invalid validator address: %s", err)
}
@ -93,50 +94,50 @@ func (msg MsgCreateValidator) UnpackInterfaces(unpacker codectypes.AnyUnpacker)
}
// NewMsgEditValidator creates a new MsgEditValidator instance
func NewMsgEditValidator(valAddr sdk.ValAddress, description Description, newRate *math.LegacyDec, newMinSelfDelegation *math.Int) *MsgEditValidator {
func NewMsgEditValidator(valAddr string, description Description, newRate *math.LegacyDec, newMinSelfDelegation *math.Int) *MsgEditValidator {
return &MsgEditValidator{
Description: description,
CommissionRate: newRate,
ValidatorAddress: valAddr.String(),
ValidatorAddress: valAddr,
MinSelfDelegation: newMinSelfDelegation,
}
}
// NewMsgDelegate creates a new MsgDelegate instance.
func NewMsgDelegate(delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount sdk.Coin) *MsgDelegate {
func NewMsgDelegate(delAddr, valAddr string, amount sdk.Coin) *MsgDelegate {
return &MsgDelegate{
DelegatorAddress: delAddr.String(),
ValidatorAddress: valAddr.String(),
DelegatorAddress: delAddr,
ValidatorAddress: valAddr,
Amount: amount,
}
}
// NewMsgBeginRedelegate creates a new MsgBeginRedelegate instance.
func NewMsgBeginRedelegate(
delAddr sdk.AccAddress, valSrcAddr, valDstAddr sdk.ValAddress, amount sdk.Coin,
delAddr, valSrcAddr, valDstAddr string, amount sdk.Coin,
) *MsgBeginRedelegate {
return &MsgBeginRedelegate{
DelegatorAddress: delAddr.String(),
ValidatorSrcAddress: valSrcAddr.String(),
ValidatorDstAddress: valDstAddr.String(),
DelegatorAddress: delAddr,
ValidatorSrcAddress: valSrcAddr,
ValidatorDstAddress: valDstAddr,
Amount: amount,
}
}
// NewMsgUndelegate creates a new MsgUndelegate instance.
func NewMsgUndelegate(delAddr sdk.AccAddress, valAddr sdk.ValAddress, amount sdk.Coin) *MsgUndelegate {
func NewMsgUndelegate(delAddr, valAddr string, amount sdk.Coin) *MsgUndelegate {
return &MsgUndelegate{
DelegatorAddress: delAddr.String(),
ValidatorAddress: valAddr.String(),
DelegatorAddress: delAddr,
ValidatorAddress: valAddr,
Amount: amount,
}
}
// NewMsgCancelUnbondingDelegation creates a new MsgCancelUnbondingDelegation instance.
func NewMsgCancelUnbondingDelegation(delAddr sdk.AccAddress, valAddr sdk.ValAddress, creationHeight int64, amount sdk.Coin) *MsgCancelUnbondingDelegation {
func NewMsgCancelUnbondingDelegation(delAddr, valAddr string, creationHeight int64, amount sdk.Coin) *MsgCancelUnbondingDelegation {
return &MsgCancelUnbondingDelegation{
DelegatorAddress: delAddr.String(),
ValidatorAddress: valAddr.String(),
DelegatorAddress: delAddr,
ValidatorAddress: valAddr,
Amount: amount,
CreationHeight: creationHeight,
}

View File

@ -36,7 +36,7 @@ func TestMsgDecode(t *testing.T) {
// now let's try to serialize the whole message
commission1 := types.NewCommissionRates(math.LegacyZeroDec(), math.LegacyZeroDec(), math.LegacyZeroDec())
msg, err := types.NewMsgCreateValidator(valAddr1, pk1, coinPos, types.Description{}, commission1, math.OneInt())
msg, err := types.NewMsgCreateValidator(valAddr1.String(), pk1, coinPos, types.Description{}, commission1, math.OneInt())
require.NoError(t, err)
msgSerialized, err := cdc.MarshalInterface(msg)
require.NoError(t, err)

View File

@ -40,14 +40,14 @@ var (
var _ ValidatorI = Validator{}
// NewValidator constructs a new Validator
func NewValidator(operator sdk.ValAddress, pubKey cryptotypes.PubKey, description Description) (Validator, error) {
func NewValidator(operator string, pubKey cryptotypes.PubKey, description Description) (Validator, error) {
pkAny, err := codectypes.NewAnyWithValue(pubKey)
if err != nil {
return Validator{}, err
}
return Validator{
OperatorAddress: operator.String(),
OperatorAddress: operator,
ConsensusPubkey: pkAny,
Jailed: false,
Status: Unbonded,

View File

@ -346,7 +346,7 @@ func mkValidator(tokens int64, shares math.LegacyDec) types.Validator {
// Creates a new validators and asserts the error check.
func newValidator(t *testing.T, operator sdk.ValAddress, pubKey cryptotypes.PubKey) types.Validator {
t.Helper()
v, err := types.NewValidator(operator, pubKey, types.Description{})
v, err := types.NewValidator(operator.String(), pubKey, types.Description{})
require.NoError(t, err)
return v
}