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 a8229201794fca8027da2e5714dfa9a29eeb6afe..990b97dcdb290b63a7a526a709dd191c56c8fc4e 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 @@ -2946,3 +2946,22 @@ dap_chain_net_srv_stake_item_t *dap_chain_net_srv_stake_check_pkey_hash(dap_chai } return NULL; } + +size_t dap_chain_net_srv_stake_get_total_keys(dap_chain_net_id_t a_net_id, size_t *a_in_active_count){ + dap_chain_net_srv_stake_t *l_stake_rec = s_srv_stake_by_net_id(a_net_id); + if (!l_stake_rec) + return 0; + size_t l_total_count = 0, l_inactive_count = 0; + dap_chain_net_srv_stake_item_t *l_item = NULL; + for (l_item = l_stake_rec->itemlist; l_item; l_item = l_item->hh.next) { + if (l_item->net->pub.id.uint64 != a_net_id.uint64) + continue; + l_total_count++; + if (!l_item->is_active) + l_inactive_count++; + } + if (a_in_active_count) { + *a_in_active_count = l_inactive_count; + } + return l_total_count; +} diff --git a/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h b/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h index 9772663f553ca3b7d7ac53fe6c52ecf83ef84ba6..1d2c90cc0b5c495791d6c9a64c5c1a78b0d95dc8 100644 --- a/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h +++ b/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h @@ -100,3 +100,4 @@ int dap_chain_net_srv_stake_mark_validator_active(dap_chain_addr_t *a_signing_ad dap_chain_net_srv_stake_item_t *dap_chain_net_srv_stake_check_pkey_hash(dap_chain_net_id_t a_net_id, dap_hash_fast_t *a_pkey_hash); uint256_t dap_chain_net_srv_stake_get_total_weight(dap_chain_net_id_t a_net_id); +size_t dap_chain_net_srv_stake_get_total_keys(dap_chain_net_id_t a_net_id, size_t *a_in_active_count);