From 1392681b36fee69a46cad24e7f652b6476a54242 Mon Sep 17 00:00:00 2001
From: Roman Khlopkov <roman.khlopkov@demlabs.net>
Date: Wed, 5 Apr 2023 17:23:17 +0300
Subject: [PATCH] [+] Multi-net support for validators

---
 modules/consensus/esbocs/dap_chain_cs_esbocs.c               | 2 +-
 .../dap_chain_net_srv_stake_pos_delegate.c                   | 5 +++--
 .../include/dap_chain_net_srv_stake_pos_delegate.h           | 2 +-
 3 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 3ba6115c5f..9be30e274b 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -348,7 +348,7 @@ static dap_list_t *s_get_validators_list(dap_chain_esbocs_session_t *a_session,
     dap_list_t *l_ret = NULL;
 
     if (!l_esbocs_pvt->poa_mode) {
-        dap_list_t *l_validators = dap_chain_net_srv_stake_get_validators();
+        dap_list_t *l_validators = dap_chain_net_srv_stake_get_validators(a_session->chain->net_id);
         size_t l_validators_count = dap_list_length(l_validators);
         if (l_validators_count < l_esbocs_pvt->min_validators_count) {
             dap_list_free_full(l_validators, NULL);
diff --git a/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
index 1f07e6d628..e744a8f50d 100644
--- a/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
@@ -208,14 +208,15 @@ bool dap_chain_net_srv_stake_key_delegated(dap_chain_addr_t *a_signing_addr)
     return false;
 }
 
-dap_list_t *dap_chain_net_srv_stake_get_validators()
+dap_list_t *dap_chain_net_srv_stake_get_validators(dap_chain_net_id_t a_net_id)
 {
     dap_list_t *l_ret = NULL;
     if (!s_srv_stake || !s_srv_stake->itemlist)
         return l_ret;
     dap_chain_net_srv_stake_item_t *l_stake, *l_tmp;
     HASH_ITER(hh, s_srv_stake->itemlist, l_stake, l_tmp)
-        l_ret = dap_list_append(l_ret, DAP_DUP(l_stake));
+        if (a_net_id.uint64 == l_stake->signing_addr.net_id.uint64)
+            l_ret = dap_list_append(l_ret, DAP_DUP(l_stake));
     return l_ret;
 }
 
diff --git a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
index 913d91fe7f..9750aa74f0 100644
--- a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
+++ b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
@@ -70,7 +70,7 @@ uint256_t dap_chain_net_srv_stake_get_allowed_min_value();
 
 bool dap_chain_net_srv_stake_key_delegated(dap_chain_addr_t *a_addr);
 int dap_chain_net_srv_stake_verify_key_and_node(dap_chain_addr_t* a_signing_addr, dap_chain_node_addr_t* a_node_addr);
-dap_list_t *dap_chain_net_srv_stake_get_validators();
+dap_list_t *dap_chain_net_srv_stake_get_validators(dap_chain_net_id_t a_net_id);
 
 void dap_chain_net_srv_stake_get_fee_validators(dap_chain_net_t *a_net, dap_string_t *a_string);
 
-- 
GitLab