diff --git a/dap-sdk b/dap-sdk
index b7b00e2ca79761eae5ca354713d12b234e6e9ce6..61bd9f38eac8773f0decc482f5488a2b520fcfb4 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit b7b00e2ca79761eae5ca354713d12b234e6e9ce6
+Subproject commit 61bd9f38eac8773f0decc482f5488a2b520fcfb4
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index ca04039bf911f8050fd0c9d6bf14338c09d411b8..17eb59c3a318b92aab998c9a7afa20a39428c430 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -206,79 +206,63 @@ void dap_chain_cs_esbocs_deinit(void)
 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);
+    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)
+        return -1;
+    uint16_t l_validators_count = dap_config_get_item_uint16(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "min_validators_count"),
+             l_node_addrs_count = 0;
+
+    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_validators_count || l_node_addrs_count < l_validators_count)
+        return -2;
 
 //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, l_inited_cert;
+    int l_ret = 0, l_inited_cert = 0;
     dap_chain_esbocs_t *l_esbocs = NULL;
     DAP_NEW_Z_RET_VAL(l_esbocs, dap_chain_esbocs_t, -5, NULL);
-
     l_esbocs->blocks = l_blocks;   
     l_blocks->_inheritor = l_esbocs;
     l_blocks->callback_delete = s_callback_delete;
     l_blocks->callback_block_verify = s_callback_block_verify;
     l_blocks->callback_block_sign = s_callback_block_sign;
-
     l_esbocs->chain = a_chain;
     l_esbocs->_pvt = DAP_NEW_Z(dap_chain_esbocs_pvt_t);
+
     dap_chain_esbocs_pvt_t *l_esbocs_pvt = PVT(l_esbocs);
-    if (!l_esbocs_pvt) {
-        log_it(L_CRITICAL, "%s", c_error_memory_alloc);
-        l_ret = - 5;
-        goto lb_err;
-    }
-    l_esbocs_pvt->debug = dap_config_get_item_bool_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "consensus_debug", false);
-    l_esbocs_pvt->poa_mode = dap_config_get_item_bool_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "poa_mode", false);
+    l_esbocs_pvt->debug                    = dap_config_get_item_bool_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "consensus_debug", false);
+    l_esbocs_pvt->poa_mode                 = dap_config_get_item_bool_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "poa_mode", false);
     l_esbocs_pvt->round_start_sync_timeout = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "round_start_sync_timeout", 15);
-    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) {
-        l_ret = -1;
-        goto lb_err;
-    }
+    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 = l_validators_count;
 
-    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) {
-        l_ret = -2;
-        goto lb_err;
-    }
     dap_chain_net_srv_stake_net_add(a_chain->net_id);
-    uint16_t l_auth_certs_count = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "auth_certs_count", l_node_addrs_count);
+    uint16_t i, l_auth_certs_count = dap_config_get_item_uint16_default(a_chain_cfg, DAP_CHAIN_ESBOCS_CS_TYPE_STR, "auth_certs_count", l_node_addrs_count);
     dap_chain_net_t *l_net = dap_chain_net_by_id(a_chain->net_id);
-    for (size_t i = 0; i < l_auth_certs_count; i++) {
-        char l_cert_name[512];
+    int l_dot_pos = strlen(l_auth_certs_prefix), l_len = l_dot_pos + 16, l_pos2 = 0;
+    char l_cert_name[l_len];
+    dap_strncpy(l_cert_name, l_auth_certs_prefix, l_dot_pos);
+    for (i = 0; i < l_auth_certs_count; ++i) {
         dap_cert_t *l_cert_cur;
-        snprintf(l_cert_name, sizeof(l_cert_name), "%s.%zu", l_auth_certs_prefix, i);
+        l_pos2 = snprintf(l_cert_name + l_dot_pos, 16, ".%zu", i);
         if ( !(l_cert_cur = dap_cert_find_by_name(l_cert_name)) ) {
-            snprintf(l_cert_name, sizeof(l_cert_name), "%s.%zu.pub", l_auth_certs_prefix, i);
+            dap_strncpy(l_cert_name + l_dot_pos + l_pos2, ".pub", l_len - l_dot_pos - l_pos2);
             if ( !(l_cert_cur = dap_cert_find_by_name(l_cert_name)) ) {
                 if (i >= l_node_addrs_count)
                     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]);
-                l_ret = -6;
-                goto lb_err;
-                l_ret = -8;
-                goto lb_err;
+                l_ret = -3;
+                break;
             }
         }
         dap_chain_addr_t l_signing_addr;
         log_it(L_NOTICE, "Initialized auth cert \"%s\"", l_cert_name);
-        l_inited_cert++;
-        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,
@@ -290,13 +274,13 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
         if (dap_chain_node_addr_from_str(&l_signer_node_addr, l_addrs[i])) {
             log_it(L_ERROR, "Wrong address format, should be like 0123::4567::89AB::CDEF");
             l_ret = -4;
-            goto lb_err;
+            break;
         }
         dap_chain_esbocs_validator_t *l_validator = DAP_NEW_Z(dap_chain_esbocs_validator_t);
         if (!l_validator) {
         log_it(L_CRITICAL, "%s", c_error_memory_alloc);
             l_ret = - 5;
-            goto lb_err;
+            break;
         }
         l_validator->signing_addr = l_signing_addr;
         l_validator->node_addr = l_signer_node_addr;
@@ -311,32 +295,29 @@ 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;
-    }
-    if (!l_inited_cert) {
-        l_ret = -7;
-        goto lb_err;
+    if (!i)
+        l_ret = -6;
+    switch (l_ret) {
+    case 0: {
+        // 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) {
+            uint256_t l_preset_reward = dap_chain_balance_scan(l_preset_reward_str);
+            if (!IS_ZERO_256(l_preset_reward))
+                dap_chain_net_add_reward(l_net, l_preset_reward, 0);
+        }
+        l_blocks->chain->callback_created = s_callback_created;
+        return 0;
     }
-    // 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) {
-        uint256_t l_preset_reward = dap_chain_balance_scan(l_preset_reward_str);
-        if (!IS_ZERO_256(l_preset_reward))
-            dap_chain_net_add_reward(l_net, l_preset_reward, 0);
+    default:
+        dap_list_free_full(l_esbocs_pvt->poa_validators, NULL);
+        DAP_DEL_MULTY(l_esbocs_pvt, l_esbocs);
+        l_blocks->_inheritor = NULL;
+        l_blocks->callback_delete = NULL;
+        l_blocks->callback_block_verify = NULL;
+        log_it(L_ERROR, "Can't init consensus, error %d", l_ret);
+        return l_ret;
     }
-    l_blocks->chain->callback_created = s_callback_created;
-
-    return 0;
-
-lb_err:
-    dap_list_free_full(l_esbocs_pvt->poa_validators, NULL);
-    DAP_DEL_MULTY(l_esbocs_pvt, l_esbocs);
-    l_blocks->_inheritor = NULL;
-    l_blocks->callback_delete = NULL;
-    l_blocks->callback_block_verify = NULL;
-    return l_ret;
 }
 
 static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_dbi,