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);