diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c index 59e87cd51ae436d280838d24c0b8420317552293..ba54cceed23c06d607448a2840580fee99ce8e4d 100644 --- a/modules/chain/dap_chain_ledger.c +++ b/modules/chain/dap_chain_ledger.c @@ -500,11 +500,12 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite }break; // set total supply - case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY:{ - a_token_item->total_supply = dap_chain_datum_token_is_old(a_token->type) - ? GET_256_FROM_128(dap_tsd_get_scalar(l_tsd,uint64_t)) - : dap_tsd_get_scalar(l_tsd,uint256_t); // 256 - // a_token_item->total_supply = GET_256_FROM_128(dap_tsd_get_scalar(l_tsd,uint64_t)); + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256:{ // 256 + a_token_item->total_supply = dap_tsd_get_scalar(l_tsd,uint256_t); + }break; + + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY:{ // 128 + a_token_item->total_supply = GET_256_FROM_128(dap_tsd_get_scalar(l_tsd,uint128_t)); }break; // Set total signs count value to set to be valid diff --git a/modules/common/include/dap_chain_datum_token.h b/modules/common/include/dap_chain_datum_token.h index 8a6ef75ec5252f5d8c0811d59b28658331f59aa6..53939e98082797f9f3514dd14a77aa359875a4b3 100644 --- a/modules/common/include/dap_chain_datum_token.h +++ b/modules/common/include/dap_chain_datum_token.h @@ -196,7 +196,8 @@ static inline uint16_t dap_chain_datum_token_flag_from_str(const char* a_str) #define DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_UNSET_FLAGS 0x0002 // Total supply limits -#define DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY 0x0003 +#define DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY 0x0003 // 128 +#define DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256 0x0026 // 256 // Set total signs count value to set to be valid #define DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_VALID 0x0004 diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 927f51bb816ebe988d8ad7c905e9b382f2b05414..e2548f03a57de335cf8b54a4f443304c0bb15b17 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -2631,15 +2631,15 @@ void dap_chain_net_dump_datum(dap_string_t * a_str_out, dap_chain_datum_t * a_da dap_chain_datum_token_flags_dump(a_str_out, dap_tsd_get_scalar(l_tsd, uint16_t)); break; - case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: - if ( dap_chain_datum_token_is_old(l_token->type) ) - dap_string_append_printf(a_str_out,"total_supply: %s\n", - dap_chain_balance_print( - dap_tsd_get_scalar(l_tsd, uint128_t))); - else // 256 - dap_string_append_printf(a_str_out,"total_supply: %s\n", - dap_chain_u256tostr( - dap_tsd_get_scalar(l_tsd, uint256_t))); + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256: // 256 + dap_string_append_printf(a_str_out,"total_supply: %s\n", + dap_chain_u256tostr( + dap_tsd_get_scalar(l_tsd, uint256_t))); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: // 128 + dap_string_append_printf(a_str_out,"total_supply: %s\n", + dap_chain_balance_print( + dap_tsd_get_scalar(l_tsd, uint128_t))); break; case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_VALID : dap_string_append_printf(a_str_out,"total_signs_valid: %u\n", @@ -2743,15 +2743,15 @@ void dap_chain_net_dump_datum(dap_string_t * a_str_out, dap_chain_datum_t * a_da return; } switch( l_tsd->type){ - case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: - if ( dap_chain_datum_token_is_old(l_token->type) ) + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256: // 256 + dap_string_append_printf(a_str_out,"total_supply: %s\n", + dap_chain_u256tostr( + dap_tsd_get_scalar(l_tsd, uint256_t))); + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: // 128 dap_string_append_printf(a_str_out,"total_supply: %s\n", dap_chain_balance_print( dap_tsd_get_scalar(l_tsd, uint128_t))); - else // 256 - dap_string_append_printf(a_str_out,"total_supply: %s\n", - dap_chain_u256tostr( - dap_tsd_get_scalar(l_tsd, uint256_t))); break; case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_VALID : dap_string_append_printf(a_str_out,"total_signs_valid: %u\n", diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c index c85e049e4a896575389d52e8db520cce6187b28d..75e348ad4ef6424351e4790cf25de256a8574429 100644 --- a/modules/net/dap_chain_node_cli_cmd.c +++ b/modules/net/dap_chain_node_cli_cmd.c @@ -2493,7 +2493,7 @@ int com_token_update(int a_argc, char ** a_argv, char ** a_str_reply) l_arg_index=dap_chain_node_cli_find_option_val(a_argv, l_arg_index, a_argc, "-type", &l_type_str); if (!l_type_str || !strcmp(l_type_str, "private")) { - l_type = DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE; + l_type = DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE; // 256 } else { dap_chain_node_cli_set_reply_text(a_str_reply, "token_update can't accept type \"%s\"", l_type_str); return -22; @@ -2556,19 +2556,15 @@ int com_token_update(int a_argc, char ** a_argv, char ** a_str_reply) return -10; } } else if ( strcmp( a_argv[l_arg_index],"-total_supply" )==0){ // Total supply - // uint128_t l_param_value = dap_chain_balance_scan(l_arg_param); - // uint256_t l_param_value = GET_256_FROM_128(dap_chain_balance_scan(l_arg_param)); // 256 - // dap_tsd_t * l_tsd = dap_tsd_create_scalar( - // DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); dap_tsd_t * l_tsd; - if ( dap_chain_datum_token_is_old(l_type) ) { - uint128_t l_param_value = dap_chain_balance_scan(l_arg_param); + if ( dap_chain_datum_token_is_old(l_type) ) { // 128 + uint128_t l_param_value = dap_chain_balance_scan(l_arg_param); l_tsd = dap_tsd_create_scalar( DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); } else { // 256 - uint256_t l_param_value = GET_256_FROM_128(dap_chain_balance_scan(l_arg_param)); // 256 + uint256_t l_param_value = GET_256_FROM_128(dap_chain_balance_scan(l_arg_param)); l_tsd = dap_tsd_create_scalar( - DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); + DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256, l_param_value); } dap_list_append( l_tsd_list, l_tsd); l_tsd_total_size+= dap_tsd_size( l_tsd); @@ -2658,7 +2654,7 @@ int com_token_update(int a_argc, char ** a_argv, char ** a_str_reply) // Create new datum token l_datum_token_update = DAP_NEW_Z_SIZE(dap_chain_datum_token_t, sizeof(dap_chain_datum_token_t)+l_tsd_total_size ) ; - l_datum_token_update->type = DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE; + l_datum_token_update->type = DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE; // 256 dap_snprintf(l_datum_token_update->ticker, sizeof(l_datum_token_update->ticker), "%s", l_ticker); l_datum_token_update->header_private_update.tsd_total_size = l_tsd_total_size; @@ -2880,14 +2876,15 @@ int com_token_decl(int a_argc, char ** a_argv, char ** a_str_reply) l_str_flags++; } } else if ( strcmp( a_argv[l_arg_index],"-total_supply" )==0){ // Total supply - // uint128_t l_param_value = dap_chain_balance_scan(l_arg_param); dap_tsd_t * l_tsd; if ( l_type == DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL ) { // 256 uint256_t l_param_value = GET_256_FROM_128(dap_chain_balance_scan(l_arg_param)); - l_tsd = dap_tsd_create_scalar(DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); - } else { + l_tsd = dap_tsd_create_scalar( + DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256, l_param_value); + } else { // 128 uint128_t l_param_value = dap_chain_balance_scan(l_arg_param); - l_tsd = dap_tsd_create_scalar(DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); + l_tsd = dap_tsd_create_scalar( + DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY, l_param_value); } dap_list_append( l_tsd_list, l_tsd); l_tsd_total_size+= dap_tsd_size( l_tsd); @@ -2980,11 +2977,16 @@ int com_token_decl(int a_argc, char ** a_argv, char ** a_str_reply) continue; } switch (l_tsd->type){ - case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: { + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY_256: { // 256 + char *l_balance; + l_balance = dap_chain_u256tostr(dap_tsd_get_scalar(l_tsd, uint256_t)); + log_it(L_DEBUG,"== TOTAL_SUPPLY: %s", l_balance); + DAP_DELETE(l_balance); + } + break; + case DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SUPPLY: { // 128 char *l_balance; - l_balance = l_type == DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL - ? dap_chain_u256tostr(dap_tsd_get_scalar(l_tsd, uint256_t)) - : dap_chain_balance_print(dap_tsd_get_scalar(l_tsd, uint128_t)); + l_balance = dap_chain_balance_print(dap_tsd_get_scalar(l_tsd, uint128_t)); log_it(L_DEBUG,"== TOTAL_SUPPLY: %s", l_balance); DAP_DELETE(l_balance); } @@ -3423,15 +3425,23 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply) if(dap_chain_global_db_gr_set(dap_strdup(l_emission_hash_str_new), (uint8_t *) l_datum_emission, l_datum_emission_size , l_gdb_group_mempool_emission)) { if(!dap_strcmp(l_hash_out_type,"hex")) - str_reply_tmp = dap_strdup_printf("Datum emission %s is placed in datum pool", l_emission_hash_str_new); + str_reply_tmp = dap_strdup_printf("Datum%s emission %s is placed in datum pool", + (l_datum_emission->header.type_id == DAP_CHAIN_DATUM_256_TOKEN_EMISSION ? " 256_t" : ""), + l_emission_hash_str_new); else - str_reply_tmp = dap_strdup_printf("Datum emission %s is placed in datum pool", l_emission_hash_str_base58); + str_reply_tmp = dap_strdup_printf("Datum%s emission %s is placed in datum pool", + (l_datum_emission->header.type_id == DAP_CHAIN_DATUM_256_TOKEN_EMISSION ? " 256_t" : ""), + l_emission_hash_str_base58); } else { if(!dap_strcmp(l_hash_out_type,"hex")) - dap_chain_node_cli_set_reply_text(a_str_reply, "Datum emission %s is not placed in datum pool", l_emission_hash_str_new); + dap_chain_node_cli_set_reply_text(a_str_reply, "Datum%s emission %s is not placed in datum pool", + (l_datum_emission->header.type_id == DAP_CHAIN_DATUM_256_TOKEN_EMISSION ? " 256_t" : ""), + l_emission_hash_str_new); else - dap_chain_node_cli_set_reply_text(a_str_reply, "Datum emission %s is not placed in datum pool", l_emission_hash_str_base58); + dap_chain_node_cli_set_reply_text(a_str_reply, "Datum%s emission %s is not placed in datum pool", + (l_datum_emission->header.type_id == DAP_CHAIN_DATUM_256_TOKEN_EMISSION ? " 256_t" : ""), + l_emission_hash_str_base58); DAP_DEL_Z(l_emission_hash_str_new); l_emission_hash_str = NULL; DAP_DEL_Z(l_emission_hash_str_base58); @@ -3518,16 +3528,28 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply) if(dap_chain_global_db_gr_set(dap_strdup(l_tx_hash_str), l_datum_tx, l_datum_tx_size , l_gdb_group_mempool_base_tx)) { if(!dap_strcmp(l_hash_out_type,"hex")) - dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum tx %s is placed in datum pool ", str_reply_tmp, l_tx_hash_str); + dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum%s tx %s is placed in datum pool ", + str_reply_tmp, + (l_datum_tx->header.type_id == DAP_CHAIN_DATUM_256_TX ? " 256_t" : ""), + l_tx_hash_str); else - dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum tx %s is placed in datum pool ", str_reply_tmp, l_tx_hash_str_base58); + dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum%s tx %s is placed in datum pool ", + str_reply_tmp, + (l_datum_tx->header.type_id == DAP_CHAIN_DATUM_256_TX ? " 256_t" : ""), + l_tx_hash_str_base58); DAP_DEL_Z(l_tx_hash_str); DAP_DEL_Z(l_tx_hash_str_base58); } else { if(!dap_strcmp(l_hash_out_type,"hex")) - dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum tx %s is not placed in datum pool ", str_reply_tmp, l_emission_hash_str); + dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum%s tx %s is not placed in datum pool ", + str_reply_tmp, + (l_datum_tx->header.type_id == DAP_CHAIN_DATUM_256_TX ? " 256_t" : ""), + l_emission_hash_str); else - dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum tx %s is not placed in datum pool ", str_reply_tmp, l_tx_hash_str_base58); + dap_chain_node_cli_set_reply_text(a_str_reply, "%s\ndatum%s tx %s is not placed in datum pool ", + str_reply_tmp, + (l_datum_tx->header.type_id == DAP_CHAIN_DATUM_256_TX ? " 256_t" : ""), + l_tx_hash_str_base58); DAP_DEL_Z(l_tx_hash_str); DAP_DEL_Z(l_tx_hash_str_base58);