diff --git a/dap-sdk b/dap-sdk
index 10498899c1adcfc7711137597d531539e086f445..bc994841a4d5ba3148f6d568db1014b4c3031ae5 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit 10498899c1adcfc7711137597d531539e086f445
+Subproject commit bc994841a4d5ba3148f6d568db1014b4c3031ae5
diff --git a/modules/chain/dap_chain_cs.c b/modules/chain/dap_chain_cs.c
index 211dfe40cd8255255e963f59e7512f568dde3ac1..d30576d826c3fa79d9bbaf82d98257b79354061d 100644
--- a/modules/chain/dap_chain_cs.c
+++ b/modules/chain/dap_chain_cs.c
@@ -134,10 +134,11 @@ int dap_chain_cs_create(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
         HASH_FIND_STR(s_cs_callbacks, l_consensus, l_item );
     if (l_item) {
         log_it(L_NOTICE,"Consensus \"%s\" found, prepare to parse config file",l_item->name );
+        int res = 0;
         if (l_item->callback_init)
-            l_item->callback_init(a_chain, a_chain_cfg);
+            res = l_item->callback_init(a_chain, a_chain_cfg);
         DAP_CHAIN_PVT(a_chain)->cs_name = l_item->name;
-        return 0;
+        return res;
     } else {
         log_it(L_ERROR,"Can't find consensus \"%s\"",dap_config_get_item_str( a_chain_cfg, "chain", "consensus"));
         return -1;
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 168f43282ce528e1927bb6039faf7d490c99367d..e9eff2ad1bfca05fedcb5e31eec9a9d211a8d73d 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -392,6 +392,10 @@ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
             }
         }
     }
+    if (!l_poa_pvt->auth_certs_count) {
+        log_it(L_ERROR, "Can't find any cert in \"dag_poa\" consensus");
+        return -1;
+    }
     log_it(L_NOTICE,"Initialized DAG-PoA consensus with %u/%u minimum consensus",l_poa_pvt->auth_certs_count,l_poa_pvt->auth_certs_count_verify);
     l_dag->chain->callback_created = s_callback_created;
 
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 75e8f9c05ef405b23d2c9254fc0e7dabaf83d648..cd30474fbdd7ad68a12b9e18e0ab5c6e2a7cb599 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -207,8 +207,13 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
 {
     dap_chain_cs_type_create("blocks", a_chain, a_chain_cfg);
 
+//patch for tests
+#ifdef  DAP_LEDGER_TEST
+    return 0;
+#endif
+
     dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
-    int l_ret = 0;
+    int l_ret = 0, l_inited_cert;
     dap_chain_esbocs_t *l_esbocs = NULL;
     DAP_NEW_Z_RET_VAL(l_esbocs, dap_chain_esbocs_t, -5, NULL);
 
@@ -232,7 +237,6 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
     l_esbocs_pvt->new_round_delay = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "new_round_delay", 10);
     l_esbocs_pvt->round_attempts_max = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "round_attempts_max", 4);
     l_esbocs_pvt->round_attempt_timeout = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "round_attempt_timeout", 10);
-
     l_esbocs_pvt->start_validators_min = l_esbocs_pvt->min_validators_count =
             dap_config_get_item_uint16(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "min_validators_count");
     if (!l_esbocs_pvt->min_validators_count) {
@@ -241,6 +245,10 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
     }
 
     const char *l_auth_certs_prefix = dap_config_get_item_str(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "auth_certs_prefix");
+    if (!l_auth_certs_prefix) {
+        l_ret = -6;
+        goto lb_err;
+    }
     uint16_t l_node_addrs_count;
     const char **l_addrs = dap_config_get_array_str(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "validators_addrs", &l_node_addrs_count);
     if (l_node_addrs_count < l_esbocs_pvt->min_validators_count) {
@@ -261,11 +269,13 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
                     log_it(L_ERROR, "Can't find cert \"%s\"", l_cert_name);
                 else
                     log_it(L_ERROR, "Can't find cert \"%s\" possibly for address \"%s\"", l_cert_name, l_addrs[i]);
-                continue;
+                l_ret = -6;
+                goto lb_err;
             }
         }
         dap_chain_addr_t l_signing_addr;
         log_it(L_NOTICE, "Initialized auth cert \"%s\"", l_cert_name);
+        l_inited_cert++;
         dap_chain_addr_fill_from_key(&l_signing_addr, l_cert_cur->enc_key, a_chain->net_id);
 
         l_esbocs_pvt->emergency_validator_addrs = dap_list_append(l_esbocs_pvt->emergency_validator_addrs,
@@ -298,6 +308,10 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
                                                  l_weight, &l_signer_node_addr);
         }
     }
+    if (!l_inited_cert) {
+        l_ret = -1;
+        goto lb_err;
+    }
     // Preset reward for block signs, before first reward decree
     const char *l_preset_reward_str = dap_config_get_item_str(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "preset_reward");
     if (l_preset_reward_str) {