github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/slashing/client/cli/query.go (about)

     1  package cli
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/spf13/cobra"
     8  
     9  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client"
    10  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
    11  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/flags"
    12  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
    13  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    14  
    15  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/slashing/internal/types"
    16  )
    17  
    18  // GetQueryCmd returns the cli query commands for this module
    19  func GetQueryCmd(queryRoute string, cdc *codec.Codec) *cobra.Command {
    20  	// Group slashing queries under a subcommand
    21  	slashingQueryCmd := &cobra.Command{
    22  		Use:                        types.ModuleName,
    23  		Short:                      "Querying commands for the slashing module",
    24  		DisableFlagParsing:         true,
    25  		SuggestionsMinimumDistance: 2,
    26  		RunE:                       client.ValidateCmd,
    27  	}
    28  
    29  	slashingQueryCmd.AddCommand(
    30  		flags.GetCommands(
    31  			GetCmdQuerySigningInfo(queryRoute, cdc),
    32  			GetCmdQueryParams(cdc),
    33  		)...,
    34  	)
    35  
    36  	return slashingQueryCmd
    37  
    38  }
    39  
    40  // GetCmdQuerySigningInfo implements the command to query signing info.
    41  func GetCmdQuerySigningInfo(storeName string, cdc *codec.Codec) *cobra.Command {
    42  	return &cobra.Command{
    43  		Use:   "signing-info [validator-conspub]",
    44  		Short: "Query a validator's signing information",
    45  		Long: strings.TrimSpace(`Use a validators' consensus public key to find the signing-info for that validator:
    46  
    47  $ <appcli> query slashing signing-info cosmosvalconspub1zcjduepqfhvwcmt7p06fvdgexxhmz0l8c7sgswl7ulv7aulk364x4g5xsw7sr0k2g5
    48  `),
    49  		Args: cobra.ExactArgs(1),
    50  		RunE: func(cmd *cobra.Command, args []string) error {
    51  			cliCtx := context.NewCLIContext().WithCodec(cdc)
    52  
    53  			pk, err := sdk.GetPubKeyFromBech32(sdk.Bech32PubKeyTypeConsPub, args[0])
    54  			if err != nil {
    55  				return err
    56  			}
    57  
    58  			consAddr := sdk.ConsAddress(pk.Address())
    59  			key := types.GetValidatorSigningInfoKey(consAddr)
    60  
    61  			res, _, err := cliCtx.QueryStore(key, storeName)
    62  			if err != nil {
    63  				return err
    64  			}
    65  
    66  			if len(res) == 0 {
    67  				return fmt.Errorf("validator %s not found in slashing store", consAddr)
    68  			}
    69  
    70  			var signingInfo types.ValidatorSigningInfo
    71  			cdc.MustUnmarshalBinaryLengthPrefixed(res, &signingInfo)
    72  			return cliCtx.PrintOutput(signingInfo)
    73  		},
    74  	}
    75  }
    76  
    77  // GetCmdQueryParams implements a command to fetch slashing parameters.
    78  func GetCmdQueryParams(cdc *codec.Codec) *cobra.Command {
    79  	return &cobra.Command{
    80  		Use:   "params",
    81  		Short: "Query the current slashing parameters",
    82  		Args:  cobra.NoArgs,
    83  		Long: strings.TrimSpace(`Query genesis parameters for the slashing module:
    84  
    85  $ <appcli> query slashing params
    86  `),
    87  		RunE: func(cmd *cobra.Command, args []string) error {
    88  			cliCtx := context.NewCLIContext().WithCodec(cdc)
    89  
    90  			route := fmt.Sprintf("custom/%s/parameters", types.QuerierRoute)
    91  			res, _, err := cliCtx.QueryWithData(route, nil)
    92  			if err != nil {
    93  				return err
    94  			}
    95  
    96  			var params types.Params
    97  			cdc.MustUnmarshalJSON(res, &params)
    98  			return cliCtx.PrintOutput(params)
    99  		},
   100  	}
   101  }