diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index 915b92d23ad7d15215e1c1000e68c59819beddd4..8c3500617ca9d4ef31f5fa08626382cc2e779f2b 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -2587,33 +2587,22 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a dap_global_db_del_sync(l_gdb_group_mempool, l_objs[i].key); continue; } - char buf[50] = {[0]='\0'}; - dap_hash_fast_t l_data_hash; - char l_data_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE] = {[0]='\0'}; - dap_hash_fast(l_datum->data,l_datum->header.data_size,&l_data_hash); - dap_hash_fast_to_str(&l_data_hash,l_data_hash_str,DAP_CHAIN_HASH_FAST_STR_SIZE); - if (strcmp(l_data_hash_str, l_objs[i].key)) - dap_string_append_printf(a_str_tmp, - "WARNING: key field in DB %s do not match datums hash %s", - l_objs[i].key, l_data_hash_str); - const char *l_type = NULL; - DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_type) - const char *l_token_ticker = NULL; - if (l_datum->header.type_id == DAP_CHAIN_DATUM_TX) { - dap_chain_tx_in_t *obj_in = (dap_chain_tx_in_t *)dap_chain_datum_tx_item_get((dap_chain_datum_tx_t*)l_datum->data, NULL, TX_ITEM_TYPE_IN, NULL); - l_token_ticker = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &obj_in->header.tx_prev_hash); + if(a_add) + { + size_t l_emisssion_size = l_datum->header.data_size; + dap_chain_datum_token_emission_t *l_emission = dap_chain_datum_emission_read(l_datum->data, &l_emisssion_size); + dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)l_datum->data; - if(a_add) - { - dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)l_datum->data; + uint32_t l_tx_items_count = 0; + uint32_t l_tx_items_size = l_tx->header.tx_items_size; + bool l_f_found = false; - uint32_t l_tx_items_count = 0; - uint32_t l_tx_items_size = l_tx->header.tx_items_size; - bool l_f_found = false; - while (l_tx_items_count < l_tx_items_size) { + switch (l_datum->header.type_id) { + case DAP_CHAIN_DATUM_TX: + while (l_tx_items_count < l_tx_items_size) + { uint8_t *item = l_tx->tx_items + l_tx_items_count; size_t l_item_tx_size = dap_chain_datum_item_tx_get_size(item); - if(dap_strcmp(a_add,dap_chain_addr_to_str(&((dap_chain_tx_out_old_t*)item)->addr))&& dap_strcmp(a_add,dap_chain_addr_to_str(&((dap_chain_tx_out_t*)item)->addr))&& dap_strcmp(a_add,dap_chain_addr_to_str(&((dap_chain_tx_out_cond_t*)item)->subtype.srv_stake.fee_addr))&& @@ -2628,21 +2617,53 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a } if(!l_f_found) continue; + break; + case DAP_CHAIN_DATUM_TOKEN_EMISSION: + if(dap_strcmp(a_add,dap_chain_addr_to_str(&(l_emission->hdr.address)))) + continue; + else + l_objs_addr++; + break; + default: + continue; + break; } } + char buf[50] = {[0]='\0'}; + dap_hash_fast_t l_data_hash; + char l_data_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE] = {[0]='\0'}; + dap_hash_fast(l_datum->data,l_datum->header.data_size,&l_data_hash); + dap_hash_fast_to_str(&l_data_hash,l_data_hash_str,DAP_CHAIN_HASH_FAST_STR_SIZE); + if (strcmp(l_data_hash_str, l_objs[i].key)) + dap_string_append_printf(a_str_tmp, + "WARNING: key field in DB %s do not match datums hash %s", + l_objs[i].key, l_data_hash_str); + const char *l_type = NULL; + DAP_DATUM_TYPE_STR(l_datum->header.type_id, l_type) + const char *l_token_ticker = NULL; + if (l_datum->header.type_id == DAP_CHAIN_DATUM_TX) { + dap_chain_tx_in_t *obj_in = (dap_chain_tx_in_t *)dap_chain_datum_tx_item_get((dap_chain_datum_tx_t*)l_datum->data, NULL, TX_ITEM_TYPE_IN, NULL); + l_token_ticker = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &obj_in->header.tx_prev_hash); + } dap_string_append_printf(a_str_tmp, - "type_id=%s%s%s data_size=%u ts_create=%s", // \n included in timestamp - l_type, - l_datum->header.type_id == DAP_CHAIN_DATUM_TX ? " ticker=" : "", - l_token_ticker ? l_token_ticker : - (l_datum->header.type_id == DAP_CHAIN_DATUM_TX ) ? "" : "UNKNOWN", - l_datum->header.data_size, - dap_ctime_r(&l_ts_create, buf)); + "type_id=%s%s%s data_size=%u ts_create=%s", // \n included in timestamp + l_type, + l_datum->header.type_id == DAP_CHAIN_DATUM_TX ? " ticker=" : "", + l_token_ticker ? l_token_ticker : + (l_datum->header.type_id == DAP_CHAIN_DATUM_TX ) ? "" : "UNKNOWN", + l_datum->header.data_size, + dap_ctime_r(&l_ts_create, buf)); + dap_chain_datum_dump(a_str_tmp, l_datum, a_hash_out_type); } - dap_string_append_printf(a_str_tmp, l_objs_size + if(a_add) + dap_string_append_printf(a_str_tmp, l_objs_addr + ? "%s.%s: Total %zu records\n" + : "%s.%s: No records\n", a_net->pub.name, a_chain->name, l_objs_addr); + else + dap_string_append_printf(a_str_tmp, l_objs_size ? "%s.%s: Total %zu records\n" - : "%s.%s: No records\n", a_net->pub.name, a_chain->name, l_objs_addr ? l_objs_addr : l_objs_size); + : "%s.%s: No records\n", a_net->pub.name, a_chain->name, l_objs_size); dap_global_db_objs_delete(l_objs, l_objs_size); DAP_DELETE(l_gdb_group_mempool); }