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