github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/distribution/client/cli/query_distr_proposal.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/context" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 11 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/version" 13 14 "github.com/fibonacci-chain/fbc/x/distribution/client/common" 15 "github.com/fibonacci-chain/fbc/x/distribution/types" 16 ) 17 18 // GetCmdQueryDelegatorRewards implements the query delegator rewards command. 19 func GetCmdQueryDelegatorRewards(queryRoute string, cdc *codec.Codec) *cobra.Command { 20 return &cobra.Command{ 21 Use: "rewards [delegator-addr] [<validator-addr>]", 22 Args: cobra.RangeArgs(1, 2), 23 Short: "Query all distribution delegator rewards or rewards from a particular validator", 24 Long: strings.TrimSpace( 25 fmt.Sprintf(`Query all rewards earned by a delegator, optionally restrict to rewards from a single validator. 26 27 Example: 28 $ %s query distr rewards ex1j5mr2jhr9pf20e7yhln5zkcsgqtdt7cydr8x3y 29 $ %s query distr rewards ex1j5mr2jhr9pf20e7yhln5zkcsgqtdt7cydr8x3y fbvaloper1pt7xrmxul7sx54ml44lvv403r06clrdkehd8z7 30 `, 31 version.ClientName, version.ClientName, 32 ), 33 ), 34 RunE: func(cmd *cobra.Command, args []string) error { 35 cliCtx := context.NewCLIContext().WithCodec(cdc) 36 37 // query for rewards from a particular delegation 38 if len(args) == 2 { 39 resp, _, err := common.QueryDelegationRewards(cliCtx, queryRoute, args[0], args[1]) 40 if err != nil { 41 return err 42 } 43 44 var result sdk.DecCoins 45 if err = cdc.UnmarshalJSON(resp, &result); err != nil { 46 return fmt.Errorf("failed to unmarshal response: %w", err) 47 } 48 49 return cliCtx.PrintOutput(result) 50 } 51 52 delegatorAddr, err := sdk.AccAddressFromBech32(args[0]) 53 if err != nil { 54 return err 55 } 56 57 params := types.NewQueryDelegatorParams(delegatorAddr) 58 bz, err := cdc.MarshalJSON(params) 59 if err != nil { 60 return fmt.Errorf("failed to marshal params: %w", err) 61 } 62 63 // query for delegator total rewards 64 route := fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryDelegatorTotalRewards) 65 res, _, err := cliCtx.QueryWithData(route, bz) 66 if err != nil { 67 return err 68 } 69 70 var result types.QueryDelegatorTotalRewardsResponse 71 if err = cdc.UnmarshalJSON(res, &result); err != nil { 72 return fmt.Errorf("failed to unmarshal response: %w", err) 73 } 74 75 return cliCtx.PrintOutput(result) 76 }, 77 } 78 } 79 80 // GetCmdQueryValidatorOutstandingRewards implements the query validator outstanding rewards command. 81 func GetCmdQueryValidatorOutstandingRewards(queryRoute string, cdc *codec.Codec) *cobra.Command { 82 return &cobra.Command{ 83 Use: "outstanding-rewards [validator]", 84 Args: cobra.ExactArgs(1), 85 Short: "Query distribution outstanding (un-withdrawn) rewards for a validator and all their delegations", 86 Long: strings.TrimSpace( 87 fmt.Sprintf(`Query distribution outstanding (un-withdrawn) rewards 88 for a validator and all their delegations. 89 90 Example: 91 $ %s query distr outstanding-rewards fbvaloper1pt7xrmxul7sx54ml44lvv403r06clrdkehd8z7 92 `, 93 version.ClientName, 94 ), 95 ), 96 RunE: func(cmd *cobra.Command, args []string) error { 97 cliCtx := context.NewCLIContext().WithCodec(cdc) 98 99 valAddr, err := sdk.ValAddressFromBech32(args[0]) 100 if err != nil { 101 return err 102 } 103 104 params := types.NewQueryValidatorOutstandingRewardsParams(valAddr) 105 bz, err := cdc.MarshalJSON(params) 106 if err != nil { 107 return err 108 } 109 110 resp, _, err := cliCtx.QueryWithData( 111 fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryValidatorOutstandingRewards), 112 bz, 113 ) 114 if err != nil { 115 return err 116 } 117 118 var outstandingRewards types.ValidatorOutstandingRewards 119 if err := cdc.UnmarshalJSON(resp, &outstandingRewards); err != nil { 120 return err 121 } 122 123 return cliCtx.PrintOutput(outstandingRewards) 124 }, 125 } 126 } 127 128 // GetCmdQueryWithdrawAddr implements the query the delegator's withdraw address for commission and reward 129 func GetCmdQueryWithdrawAddr(queryRoute string, cdc *codec.Codec) *cobra.Command { 130 return &cobra.Command{ 131 Use: "withdraw-addr [delegator]", 132 Args: cobra.ExactArgs(1), 133 Short: "Query delegator's withdraw address", 134 Long: strings.TrimSpace( 135 fmt.Sprintf(`Query delegator's withdraw address. 136 137 Example: 138 $ %s query distr withdraw-addr ex17kn7d20d85yymu45h79dqs5pxq9m3nyx2mdmcs 139 `, 140 version.ClientName, 141 ), 142 ), 143 RunE: func(cmd *cobra.Command, args []string) error { 144 cliCtx := context.NewCLIContext().WithCodec(cdc) 145 146 delegatorAddr, err := sdk.AccAddressFromBech32(args[0]) 147 if err != nil { 148 return err 149 } 150 151 params := types.NewQueryDelegatorWithdrawAddrParams(delegatorAddr) 152 153 bz, err := cdc.MarshalJSON(params) 154 if err != nil { 155 return err 156 } 157 158 resp, _, err := cliCtx.QueryWithData( 159 fmt.Sprintf("custom/%s/%s", queryRoute, types.QueryWithdrawAddr), 160 bz, 161 ) 162 if err != nil { 163 return err 164 } 165 166 var accAddress sdk.AccAddress 167 if err := cdc.UnmarshalJSON(resp, &accAddress); err != nil { 168 return err 169 } 170 171 return cliCtx.PrintOutput(accAddress) 172 }, 173 } 174 }