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:
parent
026073ba19
commit
58855c6859
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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), "", "", "", ""),
|
||||
)
|
||||
|
||||
@ -568,7 +568,7 @@ func TestGRPCQueryUnbondingDelegation(t *testing.T) {
|
||||
}
|
||||
},
|
||||
false,
|
||||
"invalid Bech32",
|
||||
"hrp does not match bech32 prefix",
|
||||
},
|
||||
{
|
||||
"delegation not found for validator",
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)))
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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())
|
||||
|
||||
|
||||
@ -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, "", "", "", ""),
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
},
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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())
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@ -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")
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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")
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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{}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
},
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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,
|
||||
)
|
||||
}
|
||||
|
||||
@ -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"+
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
@ -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),
|
||||
)
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user