From 000c18c443cbb2a0bebb12de60526574ba77773b Mon Sep 17 00:00:00 2001
From: Constantin P <papizh.konstantin@demlabs.net>
Date: Wed, 26 Jul 2023 11:37:41 +0000
Subject: [PATCH] Auto-online and POA rounds issues fixed

---
 modules/consensus/dag-poa/dap_chain_cs_dag_poa.c | 15 ++++++++-------
 modules/net/dap_chain_net.c                      |  9 +++++----
 modules/type/dag/dap_chain_cs_dag.c              |  3 ++-
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
index dc8bcd1aeb..28c535e16b 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -464,12 +464,15 @@ static bool s_round_event_ready_minimum_check(dap_chain_cs_dag_t *a_dag, dap_cha
 {
     dap_chain_cs_dag_poa_t *l_poa = DAP_CHAIN_CS_DAG_POA(a_dag);
     dap_chain_cs_dag_poa_pvt_t *l_poa_pvt = PVT(l_poa);
-    if ( a_event->header.signs_count < l_poa_pvt->auth_certs_count_verify)
+    if ( a_event->header.signs_count < l_poa_pvt->auth_certs_count_verify) {
+        log_it(L_INFO, "Round event %s hasn't got enough signs yet: %u < %u",
+               a_event_hash_hex_str, a_event->header.signs_count, l_poa_pvt->auth_certs_count_verify);
         return false;
+    }
     int l_ret_event_verify = s_callback_event_verify(a_dag, a_event, a_event_size);
     if (l_ret_event_verify == 0)
         return true;
-    log_it(L_ERROR,"Round auto-complete error! Event %s is not passing consensus verification, ret code %d\n",
+    log_it(L_ERROR, "Round auto-complete error! Event %s is not passing consensus verification, ret code %d\n",
                           a_event_hash_hex_str, l_ret_event_verify );
     return false;
 }
@@ -791,7 +794,6 @@ static int s_callback_event_round_sync(dap_chain_cs_dag_t * a_dag, const char a_
     dap_chain_cs_dag_event_round_item_t *l_round_item = (dap_chain_cs_dag_event_round_item_t *)a_value;
     size_t l_event_size = l_round_item->event_size;
     dap_chain_cs_dag_event_t *l_event = (dap_chain_cs_dag_event_t*)DAP_DUP_SIZE(l_round_item->event_n_signs, l_event_size);
-
     if (l_event->header.round_id < a_dag->round_completed) {
         struct round_timer_arg *l_round_active;
         uint64_t l_round_id = l_event->header.round_id;
@@ -805,7 +807,6 @@ static int s_callback_event_round_sync(dap_chain_cs_dag_t * a_dag, const char a_
             return -2;
         }
     }
-
     if (dap_chain_cs_dag_event_sign_exists(l_event, l_event_size, l_poa_pvt->events_sign_cert->enc_key)
             || dap_chain_cs_dag_event_round_sign_exists(l_round_item, l_poa_pvt->events_sign_cert->enc_key)) {
         // if my sign exists
@@ -823,9 +824,9 @@ static int s_callback_event_round_sync(dap_chain_cs_dag_t * a_dag, const char a_
              !(ret = l_poa_pvt->callback_pre_sign->callback(a_dag->chain, l_event, l_event_size,
                                                       l_poa_pvt->callback_pre_sign->arg))) {
         l_event_size_new = dap_chain_cs_dag_event_sign_add(&l_event, l_event_size, l_poa_pvt->events_sign_cert->enc_key);
-        char *l_event_new_hash_hex_str;
-        dap_get_data_hash_str_static(l_event, l_event_size_new, l_event_new_hash_hex_str);
-        dap_chain_cs_dag_event_gdb_set(a_dag, l_event_new_hash_hex_str, l_event, l_event_size_new, l_round_item);
+        //char *l_event_new_hash_hex_str;
+        //dap_get_data_hash_str_static(l_event, l_event_size_new, l_event_new_hash_hex_str);
+        dap_chain_cs_dag_event_gdb_set(a_dag, /*l_event_new_hash_hex_str*/ (char*)a_key, l_event, l_event_size_new, l_round_item);
     } else { // set sign for reject
         l_round_item = DAP_DUP_SIZE(a_value, a_value_size);
         if (dap_chain_cs_dag_event_round_sign_add(&l_round_item, a_value_size, l_poa_pvt->events_sign_cert->enc_key)) {
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index c4062c9352..1cf47808c2 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -2692,7 +2692,8 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
                         closedir(l_chains_dir);
                         return -1;
                     }
-                    l_chain_prior->prior = dap_config_get_item_uint16_default(l_cfg, "chain", "load_priority", 100);
+                    l_chain_prior->prior = dap_config_get_item_uint16_default(l_cfg_new, "chain", "load_priority", 100);
+                    log_it(L_DEBUG, "Chain priority: %u", l_chain_prior->prior);
                     l_chain_prior->chains_path = l_chains_path;
                     // add chain to load list;
                     l_prior_list = dap_list_append(l_prior_list, l_chain_prior);
@@ -2750,7 +2751,7 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
         break;
     case NODE_ROLE_FULL:
         l_ledger_flags |= DAP_CHAIN_LEDGER_CHECK_LOCAL_DS;
-        if (dap_config_get_item_bool_default(g_config, "ledger", "cache_enabled", true))
+        if (dap_config_get_item_bool_default(g_config, "ledger", "cache_enabled", false))
             l_ledger_flags |= DAP_CHAIN_LEDGER_CACHE_ENABLED;
     default:
         l_ledger_flags |= DAP_CHAIN_LEDGER_CHECK_CELLS_DS | DAP_CHAIN_LEDGER_CHECK_TOKEN_EMISSION;
@@ -2877,8 +2878,8 @@ int s_net_load(dap_chain_net_t *a_net)
     }
     if (!l_net_pvt->only_static_links)
         l_net_pvt->only_static_links = dap_config_get_item_bool_default(l_cfg, "general", "links_static_only", false);
-    if (!dap_config_get_item_bool_default(g_config ,"general", "auto_online", false))
-        l_target_state = NET_STATE_OFFLINE;
+    if (dap_config_get_item_bool_default(g_config ,"general", "auto_online", false))
+        l_target_state = NET_STATE_ONLINE;
 
     l_net_pvt->load_mode = false;
     if (l_net->pub.ledger)
diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index c5fc12cc5e..bcdef7ed06 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -191,8 +191,9 @@ static void s_history_callback_round_notify(dap_global_db_context_t *a_context,
     if (a_obj->type == DAP_DB$K_OPTYPE_ADD && l_dag->callback_cs_event_round_sync) {
         if (!l_dag->broadcast_disable)
             dap_chain_cs_dag_event_broadcast(l_dag, a_obj, a_context);
-        if (dap_strcmp(a_obj->key, DAG_ROUND_CURRENT_KEY))   // check key for round increment, if no than process event
+        if (dap_strcmp(a_obj->key, DAG_ROUND_CURRENT_KEY)) {  // check key for round increment, if no than process event
             l_dag->callback_cs_event_round_sync(l_dag, a_obj->type, a_obj->group, a_obj->key, a_obj->value, a_obj->value_len);
+        }
     }
 }
 
-- 
GitLab