From 2746fc99013e45d7a8090e7030bf4bf6016bcd14 Mon Sep 17 00:00:00 2001 From: "roman.khlopkov" <roman.khlopkov@demlabs.net> Date: Thu, 27 Jun 2024 16:36:21 +0300 Subject: [PATCH] [*] Timestamps printing unification --- dap-sdk | 2 +- .../chain-net/dap_stream_ch_chain_net.c | 140 +++++++++--------- .../include/dap_stream_ch_chain_net_pkt.h | 2 + modules/net/dap_chain_node_cli_cmd_tx.c | 14 +- .../dap_chain_net_srv_stake_pos_delegate.c | 3 +- .../dap_chain_net_srv_stake_pos_delegate.h | 1 - .../xchange/dap_chain_net_srv_xchange.c | 29 ++-- 7 files changed, 89 insertions(+), 102 deletions(-) diff --git a/dap-sdk b/dap-sdk index d7b44bbf0a..6433d931b9 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit d7b44bbf0a05f38687dba28821502b71e5e7ba80 +Subproject commit 6433d931b917ceb7b71967817acc03c454dabb30 diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c index 661b934c1d..8707e576fc 100644 --- a/modules/channel/chain-net/dap_stream_ch_chain_net.c +++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c @@ -188,13 +188,19 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void* a_arg) l_ch_chain_net_pkt->hdr.net_id,NULL, 0); dap_stream_ch_set_ready_to_write_unsafe(a_ch, true); break; - // receive pong request -> send nothing + + // received pong request -> send nothing case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_PONG: //log_it(L_INFO, "Get CHAIN_CH_NET_PKT_TYPE_PONG"); dap_stream_ch_set_ready_to_write_unsafe(a_ch, false); break; case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST:{ + if (l_ch_chain_net_pkt->hdr.data_size != DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE) { + log_it(L_WARNING, "Invalid VALIDATOR_READY_REQUEST size %hu, expected %zu", l_ch_chain_net_pkt->hdr.data_size, + DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE); + return false; + } log_it(L_INFO, "Get CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST"); dap_chain_net_t * l_net = dap_chain_net_by_id( l_ch_chain_net_pkt->hdr.net_id ); if ( l_net == NULL){ @@ -203,83 +209,77 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void* a_arg) l_ch_chain_net_pkt->hdr.net_id, l_err_str,sizeof (l_err_str)); dap_stream_ch_set_ready_to_write_unsafe(a_ch, true); log_it(L_ERROR, "Invalid net id in packet"); - } else { - dap_list_t * l_orders = NULL; - dap_enc_key_t *l_enc_key_pvt = NULL; - dap_chain_t *l_chain = NULL; - DL_FOREACH(l_net->pub.chains, l_chain) - if (!dap_strcmp(dap_chain_get_cs_type(l_chain), "esbocs")) { - l_enc_key_pvt = dap_chain_esbocs_get_sign_key(l_chain); - if (l_enc_key_pvt) - break; - } - dap_sign_t *l_sign = NULL; - size_t sign_s = 0; - size_t l_orders_num = 0; - dap_chain_ch_validator_test_t *send = NULL; - dap_chain_net_srv_price_unit_uid_t l_price_unit = { { 0 } }; - dap_chain_net_srv_uid_t l_uid = { .uint64 = DAP_CHAIN_NET_SRV_STAKE_POS_DELEGATE_ID }; - uint256_t l_price_min = {}; - uint256_t l_price_max = {}; - uint8_t flags = 0; - dap_chain_node_addr_t l_cur_node_addr = { - .uint64 = dap_chain_net_get_cur_addr_int(l_net) - }; - - if (l_enc_key_pvt) { - flags = flags | F_CERT;//faund sert - l_sign = dap_sign_create(l_enc_key_pvt, (uint8_t*)l_ch_chain_net_pkt->data, - l_ch_chain_net_pkt->hdr.data_size, 0); - if(l_sign) - { - sign_s = dap_sign_get_size(l_sign); - flags = flags | D_SIGN;//data signed - } - else - flags = flags & ~D_SIGN;//data doesn't sign + break; + } + dap_list_t * l_orders = NULL; + dap_enc_key_t *l_enc_key_pvt = NULL; + dap_chain_t *l_chain = NULL; + DL_FOREACH(l_net->pub.chains, l_chain) + if (!dap_strcmp(dap_chain_get_cs_type(l_chain), "esbocs")) { + l_enc_key_pvt = dap_chain_esbocs_get_sign_key(l_chain); + if (l_enc_key_pvt) + break; } - else - flags = flags & ~F_CERT;//Specified certificate not found + dap_sign_t *l_sign = NULL; + size_t sign_s = 0; + size_t l_orders_num = 0; + dap_chain_ch_validator_test_t *send = NULL; + dap_chain_net_srv_price_unit_uid_t l_price_unit = { { 0 } }; + dap_chain_net_srv_uid_t l_uid = { .uint64 = DAP_CHAIN_NET_SRV_STAKE_POS_DELEGATE_ID }; + uint256_t l_price_min = {}; + uint256_t l_price_max = {}; + uint8_t flags = 0; + + if (l_enc_key_pvt) { + flags = flags | F_CERT;//faund sert + l_sign = dap_sign_create(l_enc_key_pvt, (uint8_t*)l_ch_chain_net_pkt->data, l_ch_chain_net_pkt->hdr.data_size, 0); + if (l_sign) { + sign_s = dap_sign_get_size(l_sign); + flags = flags | D_SIGN;//data signed + } else + flags = flags & ~D_SIGN;//data doesn't sign + } + else + flags = flags & ~F_CERT;//Specified certificate not found - send = DAP_NEW_Z_SIZE(dap_chain_ch_validator_test_t, sizeof(dap_chain_ch_validator_test_t) + sign_s); + send = DAP_NEW_Z_SIZE(dap_chain_ch_validator_test_t, sizeof(dap_chain_ch_validator_test_t) + sign_s); #ifdef DAP_VERSION - strncpy((char *)send->header.version, (char *)DAP_VERSION, sizeof(send->header.version)); + strncpy((char *)send->header.version, (char *)DAP_VERSION, sizeof(send->header.version)); #endif - send->header.sign_size = sign_s; - //strncpy(send->header.data,(uint8_t*)l_ch_chain_net_pkt->data,10); - flags = (l_net->pub.mempool_autoproc) ? flags | A_PROC : flags & ~A_PROC; + send->header.sign_size = sign_s; + //strncpy(send->header.data,(uint8_t*)l_ch_chain_net_pkt->data,10); + flags = (l_net->pub.mempool_autoproc) ? flags | A_PROC : flags & ~A_PROC; - if (dap_chain_net_srv_order_find_all_by(l_net,SERV_DIR_UNDEFINED,l_uid, - l_price_unit,NULL,l_price_min,l_price_max,&l_orders,&l_orders_num)==0){ - for (dap_list_t *l_temp = l_orders;l_temp; l_temp = l_orders->next){ - dap_chain_net_srv_order_t *l_order =(dap_chain_net_srv_order_t *) l_temp->data; - if(l_order->node_addr.uint64 == l_cur_node_addr.uint64) - { - flags = flags | F_ORDR; - break; - } + if (dap_chain_net_srv_order_find_all_by(l_net,SERV_DIR_UNDEFINED,l_uid, + l_price_unit,NULL,l_price_min,l_price_max,&l_orders,&l_orders_num)==0){ + for (dap_list_t *l_temp = l_orders;l_temp; l_temp = l_orders->next){ + dap_chain_net_srv_order_t *l_order =(dap_chain_net_srv_order_t *) l_temp->data; + if(l_order->node_addr.uint64 == g_node_addr.uint64) + { + flags = flags | F_ORDR; + break; } - dap_list_free_full(l_orders, NULL); } - bool auto_online = dap_config_get_item_bool_default( g_config, "general", "auto_online", false ); - bool auto_update = false; - if((system("systemctl status cellframe-updater.service") == 768) && (system("systemctl status cellframe-updater.timer") == 0)) - auto_update = true; - else - auto_update = false; - flags = auto_online ? flags | A_ONLN : flags & ~A_ONLN; - flags = auto_update ? flags | A_UPDT : flags & ~A_UPDT; - send->header.flags = flags; - //add sign - if(sign_s) - memcpy(send->sign,l_sign,sign_s); - dap_stream_ch_chain_net_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY , - l_ch_chain_net_pkt->hdr.net_id, send, sizeof(dap_chain_ch_validator_test_t) + sign_s); - dap_stream_ch_set_ready_to_write_unsafe(a_ch, true); - if(l_sign) - DAP_DELETE(l_sign); - DAP_DELETE(send); + dap_list_free_full(l_orders, NULL); } + bool auto_online = dap_config_get_item_bool_default( g_config, "general", "auto_online", false ); + bool auto_update = false; + if((system("systemctl status cellframe-updater.service") == 768) && (system("systemctl status cellframe-updater.timer") == 0)) + auto_update = true; + else + auto_update = false; + flags = auto_online ? flags | A_ONLN : flags & ~A_ONLN; + flags = auto_update ? flags | A_UPDT : flags & ~A_UPDT; + send->header.flags = flags; + //add sign + if(sign_s) + memcpy(send->sign,l_sign,sign_s); + dap_stream_ch_chain_net_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY , + l_ch_chain_net_pkt->hdr.net_id, send, sizeof(dap_chain_ch_validator_test_t) + sign_s); + dap_stream_ch_set_ready_to_write_unsafe(a_ch, true); + if(l_sign) + DAP_DELETE(l_sign); + DAP_DELETE(send); } break; case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY:{ diff --git a/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h b/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h index d6a9573c7d..983a290cdc 100644 --- a/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h +++ b/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h @@ -45,6 +45,8 @@ #define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ERROR 0xff +#define DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE 1024 + typedef struct stream_ch_chain_net_pkt_hdr { uint8_t version; byte_t padding; diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index 709cfb6dc1..18174820bb 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -98,7 +98,6 @@ bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, const char *a_hash_out_type, dap_chain_hash_fast_t *a_tx_hash) { - dap_time_t l_ts_create = (dap_time_t)a_datum->header.ts_created; char l_tx_hash_str[70]={0}; char l_tmp_buf[DAP_TIME_STR_SIZE]; const char *l_ticker = a_ledger @@ -107,7 +106,7 @@ bool s_dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum, if (!l_ticker) return false; const char *l_description = dap_ledger_get_description_by_ticker(a_ledger, l_ticker); - dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create); + dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, a_datum->header.ts_created); dap_chain_hash_fast_to_str(a_tx_hash,l_tx_hash_str,sizeof(l_tx_hash_str)); json_object_object_add(json_obj_out, "Datum_tx_hash", json_object_new_string(l_tx_hash_str)); json_object_object_add(json_obj_out, "TS_Created", json_object_new_string(l_tmp_buf)); @@ -212,10 +211,7 @@ json_object * dap_db_tx_history_to_json(dap_chain_hash_fast_t* a_tx_hash, } char l_time_str[DAP_TIME_STR_SIZE]; - if (l_tx->header.ts_created) { - dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, l_tx->header.ts_created);/* Convert ts to "Sat May 17 01:17:08 2014\n" */ - l_time_str[strlen(l_time_str)-1] = '\0'; /* Remove "\n"*/ - } + dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, l_tx->header.ts_created); /* Convert ts to "Sat May 17 01:17:08 2014" */ json_object *l_obj_ts_created = json_object_new_string(l_time_str); json_object_object_add(json_obj_datum, "tx_created", l_obj_ts_created); @@ -265,10 +261,8 @@ static void s_tx_header_print(json_object* json_obj_datum, dap_chain_tx_hash_pro bool l_declined = false; // transaction time char l_time_str[DAP_TIME_STR_SIZE] = "unknown"; /* Prefill string */ - if (a_tx->header.ts_created) { - dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, a_tx->header.ts_created); /* Convert ts to "Sat May 17 01:17:08 2014\n" */ - l_time_str[strlen(l_time_str)-1] = '\0'; /* Remove "\n"*/ - } + if (a_tx->header.ts_created) + dap_time_to_str_rfc822(l_time_str, DAP_TIME_STR_SIZE, a_tx->header.ts_created); /* Convert ts to "Sat May 17 01:17:08 2014" */ 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) diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index e7c6ef1816..da0faa4edc 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -2216,9 +2216,8 @@ static int s_callback_compare_tx_list(dap_list_t *a_datum1, dap_list_t *a_datum2 int dap_chain_net_srv_stake_check_validator(dap_chain_net_t * a_net, dap_hash_fast_t *a_tx_hash, dap_chain_ch_validator_test_t * out_data, int a_time_connect, int a_time_respone) { - char *l_key = NULL; size_t l_node_info_size = 0; - uint8_t l_test_data[1024] = {0}; + uint8_t l_test_data[DAP_CHAIN_NET_CH_VALIDATOR_READY_REQUEST_SIZE] = {0}; dap_chain_node_client_t *l_node_client = NULL; dap_chain_node_info_t *l_remote_node_info = NULL; dap_ledger_t *l_ledger = dap_ledger_by_net_name(a_net->pub.name); diff --git a/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h b/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h index 0469a280fc..19ca297c30 100644 --- a/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h +++ b/modules/service/stake/include/dap_chain_net_srv_stake_pos_delegate.h @@ -45,7 +45,6 @@ typedef struct dap_chain_net_srv_stake_item { UT_hash_handle hh, ht; } dap_chain_net_srv_stake_item_t; - typedef struct dap_chain_net_srv_stake_cache_data { dap_chain_hash_fast_t tx_hash; dap_chain_addr_t signing_addr; diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c index e0cd881759..0040e2d36f 100644 --- a/modules/service/xchange/dap_chain_net_srv_xchange.c +++ b/modules/service/xchange/dap_chain_net_srv_xchange.c @@ -1568,17 +1568,14 @@ static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, v l_cp_rate = dap_chain_balance_to_coins(l_price->rate); // must be free'd - char l_tmp_buf[DAP_TIME_STR_SIZE] = {}; - dap_time_t l_ts_create = (dap_time_t)l_tx->header.ts_created; - dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create); - l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0'; - + char l_tmp_buf[DAP_TIME_STR_SIZE]; + dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_tx->header.ts_created); if (l_out_cond_last_tx) l_amount_datoshi_str = dap_uint256_to_char(l_out_cond_last_tx->header.value, &l_amount_coins_str); - dap_cli_server_cmd_set_reply_text(a_str_reply, "orderHash: %s\n ts_created: %s (%"DAP_UINT64_FORMAT_U")\n Status: %s, amount: %s (%s) %s, filled: %lu%%, rate (%s/%s): %s, net: %s\n\n", + dap_cli_server_cmd_set_reply_text(a_str_reply, "orderHash: %s\n ts_created: %s\n Status: %s, amount: %s (%s) %s, filled: %lu%%, rate (%s/%s): %s, net: %s\n\n", dap_chain_hash_fast_to_str_static(&l_tx_hash), - l_tmp_buf, l_ts_create, l_status_order, + l_tmp_buf, l_status_order, l_amount_coins_str ? l_amount_coins_str : "0.0", l_amount_datoshi_str ? l_amount_datoshi_str : "0", l_price->token_sell, l_percent_completed, @@ -2118,16 +2115,13 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) uint64_t l_percent_completed = dap_chain_net_srv_xchange_get_order_completion_rate(l_net, l_tx_hash); char l_tmp_buf[DAP_TIME_STR_SIZE]; - dap_time_t l_ts_create = l_tx->header.ts_created; - dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_ts_create); - l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0'; - + dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_tx->header.ts_created); l_cp_rate = dap_chain_balance_to_coins(l_price->rate); const char *l_amount_coins_str = NULL, *l_amount_datoshi_str = l_out_cond_last_tx ? dap_uint256_to_char(l_out_cond_last_tx->header.value, &l_amount_coins_str) : NULL; - dap_string_append_printf(l_reply_str, "orderHash: %s\n ts_created: %s (%"DAP_UINT64_FORMAT_U")\n Status: %s, amount: %s (%s) %s, filled: %lu%%, rate (%s/%s): %s, net: %s\n\n", l_tx_hash_str, - l_tmp_buf, l_ts_create, l_status_order, + dap_string_append_printf(l_reply_str, "orderHash: %s\n ts_created: %s\n Status: %s, amount: %s (%s) %s, filled: %lu%%, rate (%s/%s): %s, net: %s\n\n", l_tx_hash_str, + l_tmp_buf, l_status_order, l_amount_coins_str ? l_amount_coins_str : "0.0", l_amount_datoshi_str ? l_amount_datoshi_str : "0", l_price->token_sell, l_percent_completed, @@ -2428,12 +2422,11 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) char l_tmp_buf[DAP_TIME_STR_SIZE]; dap_time_to_str_rfc822(l_tmp_buf, DAP_TIME_STR_SIZE, l_last_rate_time); - l_tmp_buf[strlen(l_tmp_buf) - 1] = '\0'; const char *l_rate_average_str; dap_uint256_to_char(l_rate_average, &l_rate_average_str); - dap_string_append_printf(l_reply_str,"Average rate: %s \r\n", l_rate_average_str); + dap_string_append_printf(l_reply_str,"Average rate: %s\n", l_rate_average_str); const char *l_last_rate_str; dap_uint256_to_char(l_rate, &l_last_rate_str); - dap_string_append_printf(l_reply_str, "Last rate: %s Last rate time: %s (%"DAP_UINT64_FORMAT_U")", - l_last_rate_str, l_tmp_buf, l_last_rate_time); + dap_string_append_printf(l_reply_str, "Last rate: %s Last rate time: %s", + l_last_rate_str, l_tmp_buf); *a_str_reply = dap_string_free(l_reply_str, false); break; }else if (strcmp(l_price_subcommand,"history") == 0){ @@ -2453,7 +2446,7 @@ static int s_cli_srv_xchange(int a_argc, char **a_argv, void **a_str_reply) size_t l_datum_num = dap_list_length(l_datum_list0); if (l_datum_num == 0){ - dap_cli_server_cmd_set_reply_text(a_str_reply,"Can't find transactions"); + dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't find transactions"); return -6; } size_t l_arr_start = 0; -- GitLab