From 0bd29dbfa60fcc3b0f46e56db7fd366d0b5fd8fd Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Thu, 6 Jul 2023 23:42:12 +0300
Subject: [PATCH] [+] Validators info extended

---
 .../dap_chain_net_srv_stake_pos_delegate.c    | 24 ++++++++++++++-----
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
index 9bd5ab6302..dfbfa9d695 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
@@ -1141,8 +1141,11 @@ static void s_srv_stake_print(dap_chain_net_srv_stake_item_t *a_stake, dap_strin
     dap_string_append_printf(a_string, "Pkey hash: %s\n"
                                         "\tStake value: %s\n"
                                         "\tTx hash: %s\n"
-                                        "\tNode addr: "NODE_ADDR_FP_STR"\n\n",
-                             l_pkey_hash_str, l_balance, l_tx_hash_str, NODE_ADDR_FP_ARGS_S(a_stake->node_addr));
+                                        "\tNode addr: "NODE_ADDR_FP_STR"\n"
+                                        "\tActive: %s\n"
+                                        "\n",
+                             l_pkey_hash_str, l_balance, l_tx_hash_str, NODE_ADDR_FP_ARGS_S(a_stake->node_addr),
+                             a_stake->is_active ? "true" : "false");
     DAP_DELETE(l_balance);
 }
 
@@ -1562,7 +1565,7 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, char **a_str_reply)
                     dap_cli_server_cmd_set_reply_text(a_str_reply, "Network %s not found", l_net_str);
                     return -4;
                 }
-                dap_chain_net_srv_stake_item_t *l_stake = NULL, *l_tmp;
+                dap_chain_net_srv_stake_item_t *l_stake = NULL;
                 dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-cert", &l_cert_str);
                 if (l_cert_str) {
                     dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_str);
@@ -1582,18 +1585,27 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, char **a_str_reply)
                     }
                 }
                 dap_string_t *l_reply_str = dap_string_new("");
+                size_t l_inactive_count = 0, l_total_count = 0;
                 if (l_stake)
                     s_srv_stake_print(l_stake, l_reply_str);
                 else
-                    HASH_ITER(hh, s_srv_stake->itemlist, l_stake, l_tmp) {
-                        if (l_stake->net->pub.id.uint64 != l_net->pub.id.uint64) {
+                    for (l_stake = s_srv_stake->itemlist; l_stake; l_stake = l_stake->hh.next) {
+                        if (l_stake->net->pub.id.uint64 != l_net->pub.id.uint64)
                             continue;
-                        }
+                        l_total_count++;
+                        if (!l_stake->is_active)
+                            l_inactive_count++;
                         s_srv_stake_print(l_stake, l_reply_str);
                     }
                 if (!HASH_CNT(hh, s_srv_stake->itemlist)) {
                     dap_string_append(l_reply_str, "No keys found\n");
+                } else {
+                    dap_string_append_printf(l_reply_str, "Total keys count: %zu\n", l_total_count);
+                    dap_string_append_printf(l_reply_str, "Inactive keys count: %zu\n", l_inactive_count);
                 }
+
+
+
                 char *l_delegate_min_str = dap_chain_balance_to_coins(s_srv_stake->delegate_allowed_min);
                 char l_delegated_ticker[DAP_CHAIN_TICKER_SIZE_MAX];
                 dap_chain_datum_token_get_delegated_ticker(l_delegated_ticker, l_net->pub.native_ticker);
-- 
GitLab