From 283762f1d3374d3c5c7bad057f0a84bcc1dd1c8b Mon Sep 17 00:00:00 2001 From: "roman.padenkov" <roman.padenkov@demlabs.net> Date: Thu, 29 Aug 2024 18:05:05 +0700 Subject: [PATCH] ... --- modules/net/dap_chain_ledger.c | 5 ++++- modules/net/dap_chain_net.c | 2 +- modules/net/dap_chain_node_cli_cmd_tx.c | 18 +++++++++++------- modules/net/include/dap_chain_ledger.h | 2 +- modules/type/blocks/dap_chain_cs_blocks.c | 13 +++++-------- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c index 1518ef3e1a..6076bb6a90 100644 --- a/modules/net/dap_chain_ledger.c +++ b/modules/net/dap_chain_ledger.c @@ -130,6 +130,7 @@ typedef struct dap_ledger_token_item { time_t last_update_token_time; // for auth operations + dap_pkey_t ** auth_pkeys; dap_chain_hash_fast_t *auth_pkey_hashes; size_t auth_signs_total; @@ -4422,7 +4423,7 @@ int dap_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_ha if (!l_item_tmp) { if (l_threshold_txs_count >= s_threshold_txs_max) { if(s_debug_more) - log_it(L_WARNING, "Threshold for tranactions is overfulled (%zu max), dropping down tx %s, added nothing", + log_it(L_WARNING, "Threshold for transactions is overfulled (%zu max), dropping down tx %s, added nothing", s_threshold_txs_max, l_tx_hash_str); } else { l_item_tmp = DAP_NEW_Z(dap_ledger_tx_item_t); @@ -4450,6 +4451,8 @@ int dap_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_ha debug_if(s_debug_more, L_WARNING, "dap_ledger_tx_add() tx %s not passed the check: %s ", l_tx_hash_str, dap_ledger_check_error_str(l_ret_check)); } + dap_strncpy(a_datum_index_data->token_ticker, l_main_token_ticker, DAP_CHAIN_TICKER_SIZE_MAX); + a_datum_index_data->action_tag = l_action; if ( l_list_bound_items ) dap_list_free_full(l_list_bound_items, NULL); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 41091303e8..2f427af466 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -3266,7 +3266,7 @@ int dap_chain_datum_add(dap_chain_t *a_chain, dap_chain_datum_t *a_datum, size_t log_it(L_WARNING, "Corrupted transaction, datum size %zd is not equal to size of TX %zd", l_datum_data_size, l_tx_size); return -102; } - return dap_ledger_tx_load(l_ledger, l_tx, a_datum_hash, a_datum_index_data); + return dap_ledger_tx_load(l_ledger, l_tx, a_datum_hash, (dap_ledger_datum_iter_data_t*)a_datum_index_data); } case DAP_CHAIN_DATUM_CA: return dap_cert_chain_file_save(a_datum, a_chain->net_name); diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index b5bf902d29..3932209805 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -246,6 +246,7 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro dap_chain_hash_fast_t *a_tx_hash) { bool l_declined = false; + bool l_declined2 = false; // transaction time char l_time_str[DAP_TIME_STR_SIZE] = "unknown"; /* Prefill string */ if (a_tx->header.ts_created) @@ -253,7 +254,7 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro dap_chain_tx_hash_processed_ht_t *l_tx_data = NULL; HASH_FIND(hh, *a_tx_data_ht, a_tx_hash, sizeof(*a_tx_hash), l_tx_data); if (l_tx_data) // this tx already present in ledger (double) - l_declined = true; + {l_declined = true;l_declined2 = true;} else { l_tx_data = DAP_NEW_Z(dap_chain_tx_hash_processed_ht_t); if (!l_tx_data) { @@ -262,8 +263,10 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro } l_tx_data->hash = *a_tx_hash; HASH_ADD(hh, *a_tx_data_ht, hash, sizeof(*a_tx_hash), l_tx_data); - //const char *l_token_ticker = dap_ledger_tx_get_token_ticker_by_hash(a_ledger, a_tx_hash); - const char *l_token_ticker = a_datum_iter->token_ticker; + const char *l_token_ticker = dap_ledger_tx_get_token_ticker_by_hash(a_ledger, a_tx_hash); + const char *l_token_ticker_t = a_datum_iter->token_ticker; + if (!l_token_ticker_t) + l_declined2 = true; if (!l_token_ticker) l_declined = true; } @@ -275,6 +278,7 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro l_tx_hash_str = dap_enc_base58_encode_hash_to_str(a_tx_hash); l_atom_hash_str = dap_enc_base58_encode_hash_to_str(a_datum_iter->cur_atom_hash); } + json_object_object_add(json_obj_datum, "test_sts", json_object_new_string(l_declined2 ? "DECLINED" : "ACCEPTED")); json_object_object_add(json_obj_datum, "status", json_object_new_string(l_declined ? "DECLINED" : "ACCEPTED")); json_object_object_add(json_obj_datum, "hash", json_object_new_string(l_tx_hash_str)); json_object_object_add(json_obj_datum, "atom_hash", json_object_new_string(l_atom_hash_str)); @@ -599,8 +603,8 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object_object_add(j_obj_data, "tx_type", json_object_new_string("recv")); json_object_object_add(j_obj_data, "recv_coins", json_object_new_string(l_coins_str)); json_object_object_add(j_obj_data, "recv_datoshi", json_object_new_string(l_value_str)); - json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) - : json_object_new_string("UNKNOWN")); + //json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) + //: json_object_new_string("UNKNOWN")); json_object_object_add(j_obj_data, "source_address", json_object_new_string(l_src_str)); if (l_is_need_correction) l_corr_object = j_obj_data; @@ -641,8 +645,8 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, json_object_object_add(j_obj_data, "tx_type", json_object_new_string("send")); json_object_object_add(j_obj_data, "send_coins", json_object_new_string(l_coins_str)); json_object_object_add(j_obj_data, "send_datoshi", json_object_new_string(l_value_str)); - json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) - : json_object_new_string("UNKNOWN")); + //json_object_object_add(j_obj_data, "token", l_dst_token ? json_object_new_string(l_dst_token) + // : json_object_new_string("UNKNOWN")); json_object_object_add(j_obj_data, "destination_address", json_object_new_string(l_dst_addr_str)); json_object_array_add(j_arr_data, j_obj_data); } diff --git a/modules/net/include/dap_chain_ledger.h b/modules/net/include/dap_chain_ledger.h index 7a43c2dafe..9227f2e2fc 100644 --- a/modules/net/include/dap_chain_ledger.h +++ b/modules/net/include/dap_chain_ledger.h @@ -198,7 +198,7 @@ typedef struct dap_ledger_datum_iter { } dap_ledger_datum_iter_t; typedef struct dap_ledger_datum_iter_data { - char * token_ticker; + char token_ticker[DAP_CHAIN_TICKER_SIZE_MAX]; dap_chain_tx_tag_action_type_t action_tag; } dap_ledger_datum_iter_data_t; diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index 7804ca3cfd..d54a4dcf95 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -42,7 +42,7 @@ typedef struct dap_chain_block_datum_index { time_t ts_added; dap_chain_block_cache_t *block_cache; size_t datum_index; - char *token_ticker; + char token_ticker[DAP_CHAIN_TICKER_SIZE_MAX]; UT_hash_handle hh; } dap_chain_block_datum_index_t; @@ -1470,7 +1470,6 @@ static int s_add_atom_datums(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_ca i++, l_block_offset += l_datum_size ){ dap_chain_datum_t *l_datum = a_block_cache->datum[i]; size_t l_datum_data_size = l_datum->header.data_size; - char* l_token_ticker = NULL; l_datum_size = l_datum_data_size + sizeof(l_datum->header); if(l_datum_size>a_block_cache->block_size- l_block_offset ){ log_it(L_WARNING, "Corrupted block %s has strange datum on offset %zd with size %zd out of block size", @@ -1478,13 +1477,11 @@ static int s_add_atom_datums(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_ca break; } dap_hash_fast_t *l_datum_hash = a_block_cache->datum_hash + i; - int l_res = dap_chain_datum_add(a_blocks->chain, l_datum, l_datum_size, l_datum_hash, NULL); + dap_ledger_datum_iter_data_t l_datum_index_data; + int l_res = dap_chain_datum_add(a_blocks->chain, l_datum, l_datum_size, l_datum_hash, &l_datum_index_data); l_ret++; if (l_datum->header.type_id == DAP_CHAIN_DATUM_TX) - { - PVT(a_blocks)->tx_count++; - l_token_ticker = dap_ledger_tx_get_token_ticker_by_hash(dap_chain_net_by_id(a_blocks->chain->net_id)->pub.ledger, l_datum_hash); - } + PVT(a_blocks)->tx_count++; // Save datum hash -> block_hash link in hash table dap_chain_block_datum_index_t *l_datum_index = DAP_NEW_Z(dap_chain_block_datum_index_t); if (!l_datum_index) { @@ -1496,7 +1493,7 @@ static int s_add_atom_datums(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_ca l_datum_index->datum_hash = *l_datum_hash; l_datum_index->ret_code = l_res; l_datum_index->datum_index = i; - l_datum_index->token_ticker = l_token_ticker; + dap_strncpy(l_datum_index->token_ticker, l_datum_index_data.token_ticker, DAP_CHAIN_TICKER_SIZE_MAX); pthread_rwlock_wrlock(&PVT(a_blocks)->datums_rwlock); HASH_ADD(hh, PVT(a_blocks)->datum_index, datum_hash, sizeof(*l_datum_hash), l_datum_index); pthread_rwlock_unlock(&PVT(a_blocks)->datums_rwlock); -- GitLab