diff --git a/dap-sdk b/dap-sdk index 507f09290863169f6b5815c312382daae167cab3..c70dccf58bf6f74ec1691af6c59272159fa1e721 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 507f09290863169f6b5815c312382daae167cab3 +Subproject commit c70dccf58bf6f74ec1691af6c59272159fa1e721 diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 0700873c77619c4cde5d7992c0eea63983b77337..93700d21d6695c7f2bc22cec6b2041fbeb92bde2 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -2486,12 +2486,12 @@ dap_ledger_t *dap_chain_ledger_create(uint16_t a_flags, char *a_net_name, const pthread_cond_init(&l_ledger_pvt->load_cond, NULL); pthread_mutex_init(&l_ledger_pvt->load_mutex, NULL); +#ifndef DAP_CHAIN_LEDGER_TEST char * l_chains_path = dap_strdup_printf("%s/network/%s", dap_config_path(), a_net_name); DIR * l_chains_dir = opendir(l_chains_path); DAP_DEL_Z(l_chains_path); struct dirent * l_dir_entry; - uint8_t i = 0; while ( (l_dir_entry = readdir(l_chains_dir) )!= NULL ){ if (l_dir_entry->d_name[0] == '\0') continue; @@ -2517,12 +2517,6 @@ dap_ledger_t *dap_chain_ledger_create(uint16_t a_flags, char *a_net_name, const } closedir(l_chains_dir); - log_it(L_DEBUG,"Created ledger \"%s\"",a_net_name); - l_ledger_pvt->load_mode = true; - l_ledger_pvt->tps_timer = NULL; - l_ledger_pvt->tps_count = 0; - -#ifndef DAP_CHAIN_LEDGER_TEST if ( l_ledger_pvt->cached ) // load ledger cache from GDB dap_chain_ledger_load_cache(l_ledger); diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c index b2504b308f5ca1cb4366866980f5e31278335f15..7dd41df3e236ba91cc11d69605d17d510c9cecf8 100644 --- a/modules/common/dap_chain_datum_token.c +++ b/modules/common/dap_chain_datum_token.c @@ -428,21 +428,15 @@ byte_t *dap_chain_emission_get_tsd(dap_chain_datum_token_emission_t *a_emission, if (!a_emission || a_emission->hdr.type != DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH || a_emission->data.type_auth.tsd_total_size == 0) return NULL; - dap_tsd_t *l_tsd = (dap_tsd_t *)a_emission->tsd_n_signs; - do { - if (a_emission->data.type_auth.tsd_total_size < l_tsd->size) { - log_it(L_ERROR, "Corrupt data in emission: invalid TSD size %lu < %u", - a_emission->data.type_auth.tsd_total_size, l_tsd->size); - return NULL; - } - if (l_tsd->type == a_type) { - if (a_size) - *a_size = l_tsd->size; - return l_tsd->data; - } - l_tsd = (dap_tsd_t *)((byte_t *)l_tsd + dap_tsd_size(l_tsd)); - } while ((byte_t *)l_tsd < a_emission->tsd_n_signs + a_emission->data.type_auth.tsd_total_size); - return NULL; + dap_tsd_t *l_tsd = NULL; + if (!(l_tsd = dap_tsd_find(a_emission->tsd_n_signs, a_emission->data.type_auth.tsd_total_size, a_type))) { + log_it(L_ERROR, "TSD section of type %d not found", a_type); + return NULL; + } else { + if (a_size) + *a_size = l_tsd->size; + } + return l_tsd->data; } dap_chain_datum_token_emission_t *dap_chain_datum_emission_add_sign(dap_enc_key_t *a_sign_key, dap_chain_datum_token_emission_t *a_emission) 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 28876785406260cf4600542ae481ce8a54e05315..6ed2566fe569a1f40d80a6afeabb1ceea50c78ed 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -684,8 +684,14 @@ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_c } dap_chain_net_t *l_cur_net = dap_chain_net_by_name(a_chain->net_name); dap_chain_node_role_t l_role = dap_chain_net_get_role(l_cur_net); - if (l_role.enums == NODE_ROLE_ROOT_MASTER || l_role.enums == NODE_ROLE_ROOT) + if (l_role.enums == NODE_ROLE_ROOT_MASTER || l_role.enums == NODE_ROLE_ROOT) { l_dag->callback_cs_event_round_sync = s_callback_event_round_sync; + if (l_dag->round_completed >= l_dag->round_current) { + l_dag->round_completed = l_dag->round_current; + if (l_dag->round_completed) + l_dag->round_completed--; + } + } return 0; } diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index 7633b717a47172897fd426747571bb78d7d12ec5..ea2f6fd86e7577a98d3a6166ce6fd1635d1d733c 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -2545,7 +2545,7 @@ static dap_chain_datum_decree_t *s_esbocs_decree_set_min_validators_count(dap_ch l_decree = DAP_NEW_Z_SIZE(dap_chain_datum_decree_t, sizeof(dap_chain_datum_decree_t) + l_total_tsd_size); if (!l_decree) { log_it(L_ERROR, "Memory allocation error in s_esbocs_decree_set_min_validators_count"); - DAP_DEL_Z(l_tsd); + dap_list_free_full(l_tsd_list, NULL); return NULL; } l_decree->decree_version = DAP_CHAIN_DATUM_DECREE_VERSION; @@ -2557,7 +2557,7 @@ static dap_chain_datum_decree_t *s_esbocs_decree_set_min_validators_count(dap_ch l_chain = dap_chain_net_get_default_chain_by_chain_type(a_net, CHAIN_TYPE_ANCHOR); if(!l_chain){ log_it(L_ERROR, "Can't find chain with decree support."); - DAP_DEL_Z(l_tsd); + dap_list_free_full(l_tsd_list, NULL); DAP_DELETE(l_decree); return NULL; } @@ -2593,12 +2593,10 @@ static dap_chain_datum_decree_t *s_esbocs_decree_set_min_validators_count(dap_ch log_it(L_DEBUG,"<-- Signed with '%s'", a_cert->name); }else{ log_it(L_ERROR, "Decree signing failed"); - DAP_DEL_Z(l_tsd); DAP_DELETE(l_decree); return NULL; } - - DAP_DEL_Z(l_tsd); + return l_decree; } diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 658d4c4e20f2230d14f183e71fb64c60bec7a801..7635db083ab26ddfabfbea405b8e5f8aba5bc7d6 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -1233,8 +1233,10 @@ struct json_object *s_net_states_json_collect(dap_chain_net_t *a_net) json_object_object_add(l_json, "linksCount" , json_object_new_int(HASH_COUNT(PVT(a_net)->net_links))); json_object_object_add(l_json, "activeLinksCount" , json_object_new_int(s_net_get_active_links_count(a_net))); char l_node_addr_str[24] = {'\0'}; - snprintf(l_node_addr_str, sizeof(l_node_addr_str), NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS(PVT(a_net)->node_addr)); - json_object_object_add(l_json, "nodeAddress" , json_object_new_string(l_node_addr_str)); + int l_tmp = PVT(a_net)->node_addr + ? snprintf(l_node_addr_str, sizeof(l_node_addr_str), NODE_ADDR_FP_STR, NODE_ADDR_FP_ARGS(PVT(a_net)->node_addr)) + : 0; + json_object_object_add(l_json, "nodeAddress" , json_object_new_string(l_tmp ? l_node_addr_str : "0000::0000::0000::0000")); return l_json; } @@ -2771,7 +2773,7 @@ int s_net_load(dap_chain_net_t *a_net) log_it (L_NOTICE, "Initialized chain files"); } - if(l_chain->callback_created) + if (l_chain->callback_created) l_chain->callback_created(l_chain, l_cfg); l_chain = l_chain->next; diff --git a/modules/net/dap_chain_net_decree.c b/modules/net/dap_chain_net_decree.c index 5ffef5faec7836da640164d993588a70278f5808..0774f586dee7736110844fbbe1f2bd6e54e07474 100644 --- a/modules/net/dap_chain_net_decree.c +++ b/modules/net/dap_chain_net_decree.c @@ -194,20 +194,18 @@ int dap_chain_net_decree_verify(dap_chain_datum_decree_t *a_decree, dap_chain_ne l_decree->header.signs_size = 0; size_t l_verify_data_size = l_decree->header.data_size + sizeof(dap_chain_datum_decree_t); - for(size_t i = 0; i < l_num_of_unique_signs; i++) - { + for (size_t i = 0; i < l_num_of_unique_signs; i++) { size_t l_sign_max_size = dap_sign_get_size(l_unique_signs[i]); - if (s_verify_pkey(l_unique_signs[i], a_net)) - { + if (s_verify_pkey(l_unique_signs[i], a_net)) { // 3. verify sign if(!dap_sign_verify_all(l_unique_signs[i], l_sign_max_size, l_decree, l_verify_data_size)) - { l_signs_verify_counter++; - } } else { - dap_hash_fast_t l_sign_hash = {0}; - dap_hash_fast(l_unique_signs[i], l_sign_max_size, &l_sign_hash); - char *l_sign_hash_str = dap_hash_fast_to_str_new(&l_sign_hash); + dap_hash_fast_t l_sign_pkey_hash = {0}; + size_t l_pkey_size = 0; + uint8_t *l_pkey = dap_sign_get_pkey(l_unique_signs[i], &l_pkey_size); + dap_hash_fast(l_pkey, l_pkey_size, &l_sign_pkey_hash); + char *l_sign_hash_str = dap_hash_fast_to_str_new(&l_sign_pkey_hash); log_it(L_WARNING, "Signature [%zu] %s failed public key verification.", i, l_sign_hash_str); DAP_DELETE(l_sign_hash_str); } @@ -345,20 +343,10 @@ dap_chain_datum_decree_t *dap_chain_net_decree_get_by_hash(dap_hash_fast_t *a_ha // Private functions static bool s_verify_pkey (dap_sign_t *a_sign, dap_chain_net_t *a_net) { - bool ret_val = false; - dap_list_t *b_item = a_net->pub.decree->pkeys; - while (b_item && !ret_val) - { - dap_pkey_t *l_pkey = (dap_pkey_t*)(b_item->data); - - if (!memcmp(a_sign->pkey_n_sign, l_pkey->pkey, a_sign->header.sign_pkey_size)) - { - ret_val = true; - } - - b_item = b_item->next; - } - return ret_val; + for (dap_list_t *it = a_net->pub.decree->pkeys; it; it = it->next) + if (dap_pkey_compare_with_sign(it->data, a_sign)) + return true; + return false; } static int s_common_decree_handler(dap_chain_datum_decree_t * a_decree, dap_chain_net_t *a_net, dap_chain_t *a_chain, bool a_apply) diff --git a/modules/service/stake/dap_chain_net_srv_stake_lock.c b/modules/service/stake/dap_chain_net_srv_stake_lock.c index a31b7db25426ea1aefccd296785e1f9dc263bcba..825b38db34b569a3f00e3e0472c2d00ced363891 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_lock.c +++ b/modules/service/stake/dap_chain_net_srv_stake_lock.c @@ -936,7 +936,7 @@ static bool s_stake_lock_callback_verificator(dap_ledger_t *a_ledger, dap_chain_ dap_hash_fast_to_str(&l_burning_tx_hash, l_burning_tx_hash_str, DAP_CHAIN_HASH_FAST_STR_SIZE); char *l_take_tx_hash_str; dap_get_data_hash_str_static(a_tx_in, dap_chain_datum_tx_get_size(a_tx_in), l_take_tx_hash_str); - log_it(L_ERROR, "[Legacy] Can't find burning tx with hash %s, obtained from the receipt of take tx %s", + debug_if(s_debug_more, L_ERROR, "[Legacy] Can't find burning tx with hash %s, obtained from the receipt of take tx %s", l_burning_tx_hash_str, l_take_tx_hash_str); return false; }