diff --git a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c index 0e9ae8475e5bd601bc767d4cf22fcaf721020814..9548584eddf8fbaf4cb98b6c859f9e4591dc6dd7 100644 --- a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c +++ b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx.c @@ -41,6 +41,10 @@ json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx){ l_obj_item_type = json_object_new_string("TX_ITEM_TYPE_OUT"); l_obj_item_data = dap_chain_datum_tx_item_out_to_json((dap_chain_tx_out_t*)item); break; + case TX_ITEM_TYPE_IN_REWARD: + l_obj_item_type = json_object_new_string("TX_ITEM_TYPE_IN_REWARD"); + l_obj_item_data = dap_chain_datum_tx_item_in_reward_to_json((dap_chain_tx_in_reward_t*)item); + break; case TX_ITEM_TYPE_IN_EMS: l_obj_item_type = json_object_new_string("TX_ITEM_TYPE_IN_EMS"); l_obj_item_data = dap_chain_datum_tx_item_in_ems_to_json((dap_chain_tx_in_ems_t*)item); diff --git a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx_items.c b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx_items.c index 7688d3cee037f16c2ea4ed1d55f3e43437bf1cee..810857fb55766ca27715a3fce79ae76e62915afb 100644 --- a/modules/json_rpc/common/dap_json_rpc_chain_datum_tx_items.c +++ b/modules/json_rpc/common/dap_json_rpc_chain_datum_tx_items.c @@ -355,6 +355,24 @@ json_object* dap_chain_datum_tx_item_in_to_json(dap_chain_tx_in_t *a_in){ return l_obj_in; } +json_object* dap_chain_datum_tx_item_in_reward_to_json(dap_chain_tx_in_reward_t *a_in_reward){ + json_object *l_jobj_ret = json_object_new_object(); + char *l_hash_block = dap_hash_fast_to_str_new(&a_in_reward->block_hash); + if (!l_jobj_ret && !l_hash_block) { + json_object_put(l_jobj_ret); + DAP_DEL_Z(l_hash_block); + dap_json_rpc_allocation_error; + return NULL; + } + json_object *l_jobj_block_hash = json_object_new_string(l_hash_block); + DAP_DEL_Z(l_hash_block); + if (!l_jobj_block_hash) { + return NULL; + } + json_object_object_add(l_jobj_ret, "block_hash", l_jobj_block_hash); + return l_jobj_ret; +} + json_object* dap_chain_datum_tx_item_tsd_to_json(dap_chain_tx_tsd_t *a_tsd){ json_object *l_object = json_object_new_object(); if (!l_object) { diff --git a/modules/json_rpc/common/include/dap_json_rpc_chain_datum_tx_items.h b/modules/json_rpc/common/include/dap_json_rpc_chain_datum_tx_items.h index fdc37b126e9fd65740d18a332b90067bbe4585bb..4daa8056337fdb973eacd9b1aee3179960c2ca67 100644 --- a/modules/json_rpc/common/include/dap_json_rpc_chain_datum_tx_items.h +++ b/modules/json_rpc/common/include/dap_json_rpc_chain_datum_tx_items.h @@ -30,6 +30,7 @@ json_object *dap_chain_datum_tx_item_in_ems_to_json(const dap_chain_tx_in_ems_t *a_in_ems); json_object* dap_chain_datum_tx_item_in_to_json(dap_chain_tx_in_t *a_in); +json_object* dap_chain_datum_tx_item_in_reward_to_json(dap_chain_tx_in_reward_t *a_in_reward); json_object* dap_chain_datum_tx_item_tsd_to_json(dap_chain_tx_tsd_t *a_tsd); json_object* dap_chain_datum_tx_item_in_cond_to_json(dap_chain_tx_in_cond_t *a_in_cond); json_object* dap_chain_datum_tx_item_out_to_json(const dap_chain_tx_out_t *a_out); diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index f9160c11285cce45a436232de5c577d9c265a695..0a8ea3adb89cb789ab252a34556c448cf85bf30e 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -284,11 +284,6 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, const char *a_hash_out_type, const char * l_addr_str) { - struct token_addr { - const char token[DAP_CHAIN_TICKER_SIZE_MAX]; - dap_chain_addr_t addr; - }; - json_object* json_obj_datum = json_object_new_array(); if (!json_obj_datum){ log_it(L_CRITICAL, "Memory allocation error"); @@ -392,6 +387,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, break; case TX_ITEM_TYPE_OUT_COND: { dap_chain_tx_out_cond_t *l_cond_prev = (dap_chain_tx_out_cond_t *)l_prev_out_union; + l_src_subtype = l_cond_prev->header.subtype; if (l_cond_prev->header.subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) l_noaddr_token = l_native_ticker; else { @@ -399,7 +395,6 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, l_is_unstake = true; l_unstake_value = l_cond_prev->header.value; } - l_src_subtype = l_cond_prev->header.subtype; l_noaddr_token = l_src_token; } } break; @@ -414,7 +409,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, // find OUT items bool l_header_printed = false; - uint256_t l_fee_sum = {}; + uint256_t l_fee_sum = uint256_0; dap_list_t *l_list_out_items = dap_chain_datum_tx_items_get(l_tx, TX_ITEM_TYPE_OUT_ALL, NULL); json_object * j_arr_data = json_object_new_array(); json_object * j_obj_tx = json_object_new_object(); @@ -522,7 +517,7 @@ json_object* dap_db_history_addr(dap_chain_addr_t *a_addr, dap_chain_t *a_chain, DAP_DELETE(l_value_str); DAP_DELETE(l_coins_str); } else if (!l_src_addr || dap_chain_addr_compare(l_src_addr, a_addr)) { - if (!l_dst_addr && ((dap_chain_tx_out_cond_t *)it->data)->header.subtype == l_src_subtype)\ + if (!l_dst_addr && ((dap_chain_tx_out_cond_t *)it->data)->header.subtype == l_src_subtype && l_src_subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) continue; if (!l_src_addr && l_dst_addr && !dap_chain_addr_compare(l_dst_addr, &l_net_fee_addr)) continue;