754 lines
19 KiB
Go
754 lines
19 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/cosmos/cosmos-sdk/client"
|
|
"github.com/cosmos/cosmos-sdk/client/flags"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/version"
|
|
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
|
)
|
|
|
|
// GetQueryCmd returns the cli query commands for this module
|
|
func GetQueryCmd() *cobra.Command {
|
|
stakingQueryCmd := &cobra.Command{
|
|
Use: types.ModuleName,
|
|
Short: "Querying commands for the staking module",
|
|
DisableFlagParsing: true,
|
|
SuggestionsMinimumDistance: 2,
|
|
RunE: client.ValidateCmd,
|
|
}
|
|
|
|
stakingQueryCmd.AddCommand(
|
|
GetCmdQueryDelegation(),
|
|
GetCmdQueryDelegations(),
|
|
GetCmdQueryUnbondingDelegation(),
|
|
GetCmdQueryUnbondingDelegations(),
|
|
GetCmdQueryRedelegation(),
|
|
GetCmdQueryRedelegations(),
|
|
GetCmdQueryValidator(),
|
|
GetCmdQueryValidators(),
|
|
GetCmdQueryValidatorDelegations(),
|
|
GetCmdQueryValidatorUnbondingDelegations(),
|
|
GetCmdQueryValidatorRedelegations(),
|
|
GetCmdQueryHistoricalInfo(),
|
|
GetCmdQueryParams(),
|
|
GetCmdQueryPool(),
|
|
)
|
|
|
|
return stakingQueryCmd
|
|
}
|
|
|
|
// GetCmdQueryValidator implements the validator query command.
|
|
func GetCmdQueryValidator() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "validator [validator-addr]",
|
|
Short: "Query a validator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query details about an individual validator.
|
|
|
|
Example:
|
|
$ %s query staking validator cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
addr, err := sdk.ValAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryValidatorRequest{ValidatorAddr: addr}
|
|
res, err := queryClient.Validator(cmd.Context(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(&res.Validator)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryValidators implements the query all validators command.
|
|
func GetCmdQueryValidators() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "validators",
|
|
Short: "Query for all validators",
|
|
Args: cobra.NoArgs,
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query details about all validators on a network.
|
|
|
|
Example:
|
|
$ %s query staking validators
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
resKVs, _, err := clientCtx.QuerySubspace(types.ValidatorsKey, types.StoreKey)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var validators types.Validators
|
|
for _, kv := range resKVs {
|
|
validator, err := types.UnmarshalValidator(types.ModuleCdc, kv.Value)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
validators = append(validators, validator)
|
|
}
|
|
|
|
return clientCtx.PrintOutputLegacy(validators)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryValidatorUnbondingDelegations implements the query all unbonding delegatations from a validator command.
|
|
func GetCmdQueryValidatorUnbondingDelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "unbonding-delegations-from [validator-addr]",
|
|
Short: "Query all unbonding delegatations from a validator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query delegations that are unbonding _from_ a validator.
|
|
|
|
Example:
|
|
$ %s query staking unbonding-delegations-from cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
valAddr, err := sdk.ValAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryValidatorUnbondingDelegationsRequest{
|
|
ValidatorAddr: valAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.ValidatorUnbondingDelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "unbonding delegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryValidatorRedelegations implements the query all redelegatations
|
|
// from a validator command.
|
|
func GetCmdQueryValidatorRedelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "redelegations-from [validator-addr]",
|
|
Short: "Query all outgoing redelegatations from a validator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query delegations that are redelegating _from_ a validator.
|
|
|
|
Example:
|
|
$ %s query staking redelegations-from cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
valSrcAddr, err := sdk.ValAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryRedelegationsRequest{
|
|
SrcValidatorAddr: valSrcAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.Redelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "validator redelegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryDelegation the query delegation command.
|
|
func GetCmdQueryDelegation() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "delegation [delegator-addr] [validator-addr]",
|
|
Short: "Query a delegation based on address and validator address",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query delegations for an individual delegator on an individual validator.
|
|
|
|
Example:
|
|
$ %s query staking delegation cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(2),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
delAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
valAddr, err := sdk.ValAddressFromBech32(args[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryDelegationRequest{
|
|
DelegatorAddr: delAddr,
|
|
ValidatorAddr: valAddr,
|
|
}
|
|
|
|
res, err := queryClient.Delegation(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res.DelegationResponse)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryDelegations implements the command to query all the delegations
|
|
// made from one delegator.
|
|
func GetCmdQueryDelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "delegations [delegator-addr]",
|
|
Short: "Query all delegations made by one delegator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query delegations for an individual delegator on all validators.
|
|
|
|
Example:
|
|
$ %s query staking delegations cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
delAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryDelegatorDelegationsRequest{
|
|
DelegatorAddr: delAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.DelegatorDelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "delegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryValidatorDelegations implements the command to query all the
|
|
// delegations to a specific validator.
|
|
func GetCmdQueryValidatorDelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "delegations-to [validator-addr]",
|
|
Short: "Query all delegations made to one validator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query delegations on an individual validator.
|
|
|
|
Example:
|
|
$ %s query staking delegations-to cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
valAddr, err := sdk.ValAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryValidatorDelegationsRequest{
|
|
ValidatorAddr: valAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.ValidatorDelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "validator delegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryUnbondingDelegation implements the command to query a single
|
|
// unbonding-delegation record.
|
|
func GetCmdQueryUnbondingDelegation() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "unbonding-delegation [delegator-addr] [validator-addr]",
|
|
Short: "Query an unbonding-delegation record based on delegator and validator address",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query unbonding delegations for an individual delegator on an individual validator.
|
|
|
|
Example:
|
|
$ %s query staking unbonding-delegation cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(2),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
valAddr, err := sdk.ValAddressFromBech32(args[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
delAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryUnbondingDelegationRequest{
|
|
DelegatorAddr: delAddr,
|
|
ValidatorAddr: valAddr,
|
|
}
|
|
|
|
res, err := queryClient.UnbondingDelegation(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(&res.Unbond)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryUnbondingDelegations implements the command to query all the
|
|
// unbonding-delegation records for a delegator.
|
|
func GetCmdQueryUnbondingDelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "unbonding-delegations [delegator-addr]",
|
|
Short: "Query all unbonding-delegations records for one delegator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query unbonding delegations for an individual delegator.
|
|
|
|
Example:
|
|
$ %s query staking unbonding-delegations cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(1),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
delegatorAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryDelegatorUnbondingDelegationsRequest{
|
|
DelegatorAddr: delegatorAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.DelegatorUnbondingDelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "unbonding delegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryRedelegation implements the command to query a single
|
|
// redelegation record.
|
|
func GetCmdQueryRedelegation() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "redelegation [delegator-addr] [src-validator-addr] [dst-validator-addr]",
|
|
Short: "Query a redelegation record based on delegator and a source and destination validator address",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query a redelegation record for an individual delegator between a source and destination validator.
|
|
|
|
Example:
|
|
$ %s query staking redelegation cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p cosmosvaloper1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm cosmosvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
Args: cobra.ExactArgs(3),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
delAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
valSrcAddr, err := sdk.ValAddressFromBech32(args[1])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
valDstAddr, err := sdk.ValAddressFromBech32(args[2])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryRedelegationsRequest{
|
|
DelegatorAddr: delAddr,
|
|
DstValidatorAddr: valDstAddr,
|
|
SrcValidatorAddr: valSrcAddr,
|
|
}
|
|
|
|
res, err := queryClient.Redelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryRedelegations implements the command to query all the
|
|
// redelegation records for a delegator.
|
|
func GetCmdQueryRedelegations() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "redelegations [delegator-addr]",
|
|
Args: cobra.ExactArgs(1),
|
|
Short: "Query all redelegations records for one delegator",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query all redelegation records for an individual delegator.
|
|
|
|
Example:
|
|
$ %s query staking redelegation cosmos1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
delAddr, err := sdk.AccAddressFromBech32(args[0])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pageReq, err := client.ReadPageRequest(cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
params := &types.QueryRedelegationsRequest{
|
|
DelegatorAddr: delAddr,
|
|
Pagination: pageReq,
|
|
}
|
|
|
|
res, err := queryClient.Redelegations(context.Background(), params)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
flags.AddPaginationFlagsToCmd(cmd, "delegator redelegations")
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryHistoricalInfo implements the historical info query command
|
|
func GetCmdQueryHistoricalInfo() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "historical-info [height]",
|
|
Args: cobra.ExactArgs(1),
|
|
Short: "Query historical info at given height",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query historical info at given height.
|
|
|
|
Example:
|
|
$ %s query staking historical-info 5
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
height, err := strconv.ParseInt(args[0], 10, 64)
|
|
if err != nil || height < 0 {
|
|
return fmt.Errorf("height argument provided must be a non-negative-integer: %v", err)
|
|
}
|
|
|
|
params := &types.QueryHistoricalInfoRequest{Height: height}
|
|
res, err := queryClient.HistoricalInfo(context.Background(), params)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(res.Hist)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryPool implements the pool query command.
|
|
func GetCmdQueryPool() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "pool",
|
|
Args: cobra.NoArgs,
|
|
Short: "Query the current staking pool values",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query values for amounts stored in the staking pool.
|
|
|
|
Example:
|
|
$ %s query staking pool
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
res, err := queryClient.Pool(context.Background(), &types.QueryPoolRequest{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(&res.Pool)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|
|
|
|
// GetCmdQueryParams implements the params query command.
|
|
func GetCmdQueryParams() *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "params",
|
|
Args: cobra.NoArgs,
|
|
Short: "Query the current staking parameters information",
|
|
Long: strings.TrimSpace(
|
|
fmt.Sprintf(`Query values set as staking parameters.
|
|
|
|
Example:
|
|
$ %s query staking params
|
|
`,
|
|
version.AppName,
|
|
),
|
|
),
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
clientCtx := client.GetClientContextFromCmd(cmd)
|
|
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
queryClient := types.NewQueryClient(clientCtx)
|
|
|
|
res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return clientCtx.PrintOutput(&res.Params)
|
|
},
|
|
}
|
|
|
|
flags.AddQueryFlagsToCmd(cmd)
|
|
|
|
return cmd
|
|
}
|