diff --git a/modules/chain/include/dap_chain_common.h b/modules/chain/include/dap_chain_common.h index edd061b252458ad77e9c86aaaa9fc8d357c52bdd..ab2cf1b055a271ffa085359e7b024cc17e563b78 100644 --- a/modules/chain/include/dap_chain_common.h +++ b/modules/chain/include/dap_chain_common.h @@ -129,7 +129,7 @@ typedef union { uint8_t raw[8]; uint64_t raw_ui64; uint64_t uint64; -} dap_chain_srv_uid_t; +} DAP_ALIGN_PACKED dap_chain_srv_uid_t; extern const dap_chain_srv_uid_t c_dap_chain_srv_uid_null; extern const dap_chain_cell_id_t c_dap_chain_cell_id_null; diff --git a/modules/datum/include/dap_chain_datum_tx_out_cond.h b/modules/datum/include/dap_chain_datum_tx_out_cond.h index dfe9d5d96759af01f881bab9711822f4eb7031ed..c3e7b9922bab114197a100f93840b1cb958e1767 100644 --- a/modules/datum/include/dap_chain_datum_tx_out_cond.h +++ b/modules/datum/include/dap_chain_datum_tx_out_cond.h @@ -83,9 +83,7 @@ typedef struct dap_chain_tx_out_cond { dap_time_t ts_expires; /// Service uid that only could be used for this out dap_chain_srv_uid_t srv_uid; -#if DAP_CHAIN_NET_SRV_UID_SIZE == 8 byte_t padding[8]; -#endif } DAP_ALIGN_PACKED header; union { /// Structure with specific for service pay condition subtype diff --git a/modules/datum/include/dap_chain_datum_tx_receipt.h b/modules/datum/include/dap_chain_datum_tx_receipt.h index 4975a9c9b7211d3b452860005d74995301d23a69..6ab5d94fd804c4ba87bd603d5891b2cb683768c3 100644 --- a/modules/datum/include/dap_chain_datum_tx_receipt.h +++ b/modules/datum/include/dap_chain_datum_tx_receipt.h @@ -29,9 +29,7 @@ typedef struct dap_chain_receipt_info { dap_chain_srv_uid_t srv_uid; // Service UID -#if DAP_CHAIN_NET_SRV_UID_SIZE == 8 uint64_t addition; -#endif dap_chain_net_srv_price_unit_uid_t units_type; byte_t version; byte_t padding[3]; diff --git a/modules/net-srv/dap_chain_net_srv.c b/modules/net-srv/dap_chain_net_srv.c index 900babd5f292c0936c815d97776955b644daba9f..fd149f2ed894eddc903aafce529f0107f6873a43 100644 --- a/modules/net-srv/dap_chain_net_srv.c +++ b/modules/net-srv/dap_chain_net_srv.c @@ -314,11 +314,12 @@ static int s_cli_net_srv( int argc, char **argv, void **a_str_reply) return -18; } } - - if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str ,&l_srv_uid.uint64)) { + uint64_t l_64 = 0; + if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str, &l_64)) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't recognize '%s' string as 64-bit id, hex or dec.", l_srv_uid_str); return -21; } + l_srv_uid.uint64 = l_64; if ( l_price_min_str ) l_price_min = dap_chain_balance_scan(l_price_min_str); @@ -431,13 +432,15 @@ static int s_cli_net_srv( int argc, char **argv, void **a_str_reply) if (l_expires_str) l_expires = (dap_time_t ) atoll( l_expires_str); - if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str ,&l_srv_uid.uint64)) { + uint64_t l_64 = 0; + if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str, &l_64)) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't recognize '%s' string as 64-bit id, hex or dec.", l_srv_uid_str); return -21; - }else if (!l_srv_uid_str){ + } else if (!l_srv_uid_str){ dap_cli_server_cmd_set_reply_text(a_str_reply, "Parameter -srv_uid is required."); return -22; } + l_srv_uid.uint64 = l_64; if (l_node_addr_str){ if (dap_chain_node_addr_str_check(l_node_addr_str)) { dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str ); @@ -543,8 +546,8 @@ static int s_cli_net_srv( int argc, char **argv, void **a_str_reply) return -16; } - dap_chain_srv_uid_t l_srv_uid={{0}}; - if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str ,&l_srv_uid.uint64)) { + uint64_t l_64 = 0; + if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str, &l_64)) { dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't recognize '%s' string as 64-bit id, hex or dec.", l_srv_uid_str); dap_string_free(l_string_ret, true); return -21; @@ -553,7 +556,7 @@ static int s_cli_net_srv( int argc, char **argv, void **a_str_reply) dap_string_free(l_string_ret, true); return -22; } - + dap_chain_srv_uid_t l_srv_uid= { .uint64 = l_64}; dap_chain_net_srv_ch_remain_service_store_t *l_remain_service = NULL; size_t l_remain_service_size = 0; char *l_remain_limits_gdb_group = dap_strdup_printf( "local.%s.0x%016"DAP_UINT64_FORMAT_x".remain_limits.%s", diff --git a/modules/net-srv/include/dap_chain_net_srv_order.h b/modules/net-srv/include/dap_chain_net_srv_order.h index aabedab8fb5b5f8d25737f15db0f698f1ec9c040..de6eae09178df9ad59a35b63a1468ebd88460956 100644 --- a/modules/net-srv/include/dap_chain_net_srv_order.h +++ b/modules/net-srv/include/dap_chain_net_srv_order.h @@ -29,13 +29,10 @@ along with any CellFrame SDK based project. If not, see <http://www.gnu.org/lic #include "dap_chain_common.h" #include "dap_chain_net_srv.h" -typedef struct dap_chain_net_srv_order -{ +typedef struct dap_chain_net_srv_order { uint16_t version; dap_chain_srv_uid_t srv_uid; // Service UID -#if DAP_CHAIN_NET_SRV_UID_SIZE == 8 byte_t padding[8]; -#endif dap_chain_net_srv_order_direction_t direction; // Order direction - SELL or PURCHASE byte_t padding_dir[3]; dap_chain_node_addr_t node_addr; // Node address that servs the order (if present) diff --git a/modules/node-cli/dap_chain_node_cli_cmd.c b/modules/node-cli/dap_chain_node_cli_cmd.c index 60d70207a238cf7b4eb9d433fed921c274cbaa2d..c3d3e8c56474c24386dd49e53bb25a618b37f230 100644 --- a/modules/node-cli/dap_chain_node_cli_cmd.c +++ b/modules/node-cli/dap_chain_node_cli_cmd.c @@ -6384,12 +6384,10 @@ int s_json_rpc_tx_parse_json(dap_chain_net_t *a_net, dap_chain_t *a_chain, json_ log_it(L_ERROR, "Json TX: bad price_unit in OUT_COND_SUBTYPE_SRV_PAY"); break; } - dap_chain_srv_uid_t l_srv_uid; - if(!s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_srv_uid.uint64)){ - // Default service DAP_CHAIN_NET_SRV_VPN_ID - l_srv_uid.uint64 = 0x0000000000000001; - } - + // Default service DAP_CHAIN_NET_SRV_VPN_ID + uint64_t l_64 = 0x0000000000000001; + s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_64); + dap_chain_srv_uid_t l_srv_uid = { .uint64 = l_64}; // From "wallet" or "cert" dap_pkey_t *l_pkey = s_json_get_pkey(l_json_item_obj); if(!l_pkey) { @@ -6415,12 +6413,10 @@ int s_json_rpc_tx_parse_json(dap_chain_net_t *a_net, dap_chain_t *a_chain, json_ } break; case DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_XCHANGE: { - - dap_chain_srv_uid_t l_srv_uid; - if(!s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_srv_uid.uint64)) { - // Default service DAP_CHAIN_NET_SRV_XCHANGE_ID - l_srv_uid.uint64 = 0x2; - } + // Default service DAP_CHAIN_NET_SRV_XCHANGE_ID + uint64_t l_64 = 0x0000000000000002; + s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_64); + dap_chain_srv_uid_t l_srv_uid = { .uint64 = l_64}; dap_chain_net_t *l_net = dap_chain_net_by_name(s_json_get_text(l_json_item_obj, "net")); if(!l_net) { log_it(L_ERROR, "Json TX: bad net in OUT_COND_SUBTYPE_SRV_XCHANGE"); @@ -6453,11 +6449,10 @@ int s_json_rpc_tx_parse_json(dap_chain_net_t *a_net, dap_chain_t *a_chain, json_ } break; case DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE_POS_DELEGATE:{ - dap_chain_srv_uid_t l_srv_uid; - if(!s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_srv_uid.uint64)) { - // Default service DAP_CHAIN_NET_SRV_STAKE_ID - l_srv_uid.uint64 = 0x13; - } + // Default service DAP_CHAIN_NET_SRV_STAKE_ID + uint64_t l_64 = 0x0000000000000013; + s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_64); + dap_chain_srv_uid_t l_srv_uid = { .uint64 = l_64}; uint256_t l_value = { }; if(!s_json_get_uint256(l_json_item_obj, "value", &l_value) || IS_ZERO_256(l_value)) { log_it(L_ERROR, "Json TX: bad value in OUT_COND_SUBTYPE_SRV_STAKE_POS_DELEGATE"); @@ -6535,11 +6530,12 @@ int s_json_rpc_tx_parse_json(dap_chain_net_t *a_net, dap_chain_t *a_chain, json_ } break; case TX_ITEM_TYPE_RECEIPT: { - dap_chain_srv_uid_t l_srv_uid; - if(!s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_srv_uid.uint64)) { + uint64_t l_64 = 0; + if (!s_json_get_srv_uid(l_json_item_obj, "service_id", "service", &l_64)) { log_it(L_ERROR, "Json TX: bad service_id in TYPE_RECEIPT"); break; } + dap_chain_srv_uid_t l_srv_uid = { .uint64 = l_64 }; dap_chain_net_srv_price_unit_uid_t l_price_unit; if(!s_json_get_unit(l_json_item_obj, "price_unit", &l_price_unit)) { log_it(L_ERROR, "Json TX: bad price_unit in TYPE_RECEIPT");