github.com/Finschia/finschia-sdk@v0.48.1/x/slashing/client/cli/query.go (about) 1 package cli 2 3 import ( 4 "strings" 5 6 "github.com/spf13/cobra" 7 8 "github.com/Finschia/finschia-sdk/client" 9 "github.com/Finschia/finschia-sdk/client/flags" 10 cryptotypes "github.com/Finschia/finschia-sdk/crypto/types" 11 sdk "github.com/Finschia/finschia-sdk/types" 12 "github.com/Finschia/finschia-sdk/x/slashing/types" 13 ) 14 15 // GetQueryCmd returns the cli query commands for this module 16 func GetQueryCmd() *cobra.Command { 17 // Group slashing queries under a subcommand 18 slashingQueryCmd := &cobra.Command{ 19 Use: types.ModuleName, 20 Short: "Querying commands for the slashing module", 21 DisableFlagParsing: true, 22 SuggestionsMinimumDistance: 2, 23 RunE: client.ValidateCmd, 24 } 25 26 slashingQueryCmd.AddCommand( 27 GetCmdQuerySigningInfo(), 28 GetCmdQueryParams(), 29 GetCmdQuerySigningInfos(), 30 ) 31 32 return slashingQueryCmd 33 } 34 35 // GetCmdQuerySigningInfo implements the command to query signing info. 36 func GetCmdQuerySigningInfo() *cobra.Command { 37 cmd := &cobra.Command{ 38 Use: "signing-info [validator-conspub]", 39 Short: "Query a validator's signing information", 40 Long: strings.TrimSpace(`Use a validators' consensus public key to find the signing-info for that validator: 41 42 $ <appd> query slashing signing-info '{"@type":"/cosmos.crypto.ed25519.PubKey","key":"OauFcTKbN5Lx3fJL689cikXBqe+hcp6Y+x0rYUdR9Jk="}' 43 `), 44 Args: cobra.ExactArgs(1), 45 RunE: func(cmd *cobra.Command, args []string) error { 46 clientCtx, err := client.GetClientQueryContext(cmd) 47 if err != nil { 48 return err 49 } 50 51 var pk cryptotypes.PubKey 52 if err := clientCtx.Codec.UnmarshalInterfaceJSON([]byte(args[0]), &pk); err != nil { 53 return err 54 } 55 56 queryClient := types.NewQueryClient(clientCtx) 57 consAddr := sdk.ConsAddress(pk.Address()) 58 params := &types.QuerySigningInfoRequest{ConsAddress: consAddr.String()} 59 res, err := queryClient.SigningInfo(cmd.Context(), params) 60 if err != nil { 61 return err 62 } 63 64 return clientCtx.PrintProto(&res.ValSigningInfo) 65 }, 66 } 67 68 flags.AddQueryFlagsToCmd(cmd) 69 70 return cmd 71 } 72 73 // GetCmdQuerySigningInfos implements the command to query signing infos. 74 func GetCmdQuerySigningInfos() *cobra.Command { 75 cmd := &cobra.Command{ 76 Use: "signing-infos", 77 Short: "Query signing information of all validators", 78 Long: strings.TrimSpace(`signing infos of validators: 79 80 $ <appd> query slashing signing-infos 81 `), 82 Args: cobra.NoArgs, 83 RunE: func(cmd *cobra.Command, args []string) error { 84 clientCtx, err := client.GetClientQueryContext(cmd) 85 if err != nil { 86 return err 87 } 88 queryClient := types.NewQueryClient(clientCtx) 89 90 pageReq, err := client.ReadPageRequest(cmd.Flags()) 91 if err != nil { 92 return err 93 } 94 95 params := &types.QuerySigningInfosRequest{Pagination: pageReq} 96 res, err := queryClient.SigningInfos(cmd.Context(), params) 97 if err != nil { 98 return err 99 } 100 101 return clientCtx.PrintProto(res) 102 }, 103 } 104 105 flags.AddQueryFlagsToCmd(cmd) 106 flags.AddPaginationFlagsToCmd(cmd, "signing infos") 107 108 return cmd 109 } 110 111 // GetCmdQueryParams implements a command to fetch slashing parameters. 112 func GetCmdQueryParams() *cobra.Command { 113 cmd := &cobra.Command{ 114 Use: "params", 115 Short: "Query the current slashing parameters", 116 Args: cobra.NoArgs, 117 Long: strings.TrimSpace(`Query genesis parameters for the slashing module: 118 119 $ <appd> query slashing params 120 `), 121 RunE: func(cmd *cobra.Command, args []string) error { 122 clientCtx, err := client.GetClientQueryContext(cmd) 123 if err != nil { 124 return err 125 } 126 queryClient := types.NewQueryClient(clientCtx) 127 128 params := &types.QueryParamsRequest{} 129 res, err := queryClient.Params(cmd.Context(), params) 130 if err != nil { 131 return err 132 } 133 134 return clientCtx.PrintProto(&res.Params) 135 }, 136 } 137 138 flags.AddQueryFlagsToCmd(cmd) 139 140 return cmd 141 }