github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/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/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 fbvalconspub1zcjduepqfhvwcmt7p06fvdgexxhmz0l8c7sgswl7ulv7aulk364x4g5xsw7sr0k2g5 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, ¶ms) 98 return cliCtx.PrintOutput(params) 99 }, 100 } 101 }