Skip to content

Commit 5550ce1

Browse files
authored
Update node reward cmd (iotexproject#1047)
1 parent b61fe4e commit 5550ce1

File tree

1 file changed

+55
-4
lines changed

1 file changed

+55
-4
lines changed

cli/ioctl/cmd/node/nodereward.go

+55-4
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,70 @@ import (
2222

2323
// nodeRewardCmd represents the node reward command
2424
var nodeRewardCmd = &cobra.Command{
25-
Use: "reward (ALIAS|DELEGATE_ADDRESS)",
26-
Short: "Query unclaimed rewards",
27-
Args: cobra.ExactArgs(1),
25+
Use: "reward [ALIAS|DELEGATE_ADDRESS]",
26+
Short: "Query rewards",
27+
Args: cobra.MaximumNArgs(1),
2828
RunE: func(cmd *cobra.Command, args []string) error {
2929
cmd.SilenceUsage = true
30-
output, err := reward(args)
30+
var output string
31+
var err error
32+
if len(args) == 0 {
33+
output, err = rewardPool()
34+
} else {
35+
output, err = reward(args)
36+
}
3137
if err == nil {
3238
fmt.Println(output)
3339
}
3440
return err
3541
},
3642
}
3743

44+
func rewardPool() (string, error) {
45+
conn, err := util.ConnectToEndpoint()
46+
if err != nil {
47+
return "", err
48+
}
49+
defer conn.Close()
50+
cli := iotexapi.NewAPIServiceClient(conn)
51+
ctx := context.Background()
52+
request := &iotexapi.ReadStateRequest{
53+
ProtocolID: []byte(rewarding.ProtocolID),
54+
MethodName: []byte("AvailableBalance"),
55+
}
56+
response, err := cli.ReadState(ctx, request)
57+
if err != nil {
58+
sta, ok := status.FromError(err)
59+
if ok {
60+
return "", fmt.Errorf(sta.Message())
61+
}
62+
return "", err
63+
}
64+
availableRewardRau, ok := big.NewInt(0).SetString(string(response.Data), 10)
65+
if !ok {
66+
return "", fmt.Errorf("failed to convert string into big int")
67+
}
68+
request = &iotexapi.ReadStateRequest{
69+
ProtocolID: []byte(rewarding.ProtocolID),
70+
MethodName: []byte("TotalBalance"),
71+
}
72+
response, err = cli.ReadState(ctx, request)
73+
if err != nil {
74+
sta, ok := status.FromError(err)
75+
if ok {
76+
return "", fmt.Errorf(sta.Message())
77+
}
78+
return "", err
79+
}
80+
totalRewardRau, ok := big.NewInt(0).SetString(string(response.Data), 10)
81+
if !ok {
82+
return "", fmt.Errorf("failed to convert string into big int")
83+
}
84+
return fmt.Sprintf("Available Reward: %sIOTX Total Reward: %sIOTX",
85+
util.RauToString(availableRewardRau, util.IotxDecimalNum),
86+
util.RauToString(totalRewardRau, util.IotxDecimalNum)), nil
87+
}
88+
3889
func reward(args []string) (string, error) {
3990
address, err := alias.Address(args[0])
4091
if err != nil {

0 commit comments

Comments
 (0)