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