Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cellframe/cellframe-sdk
  • MIKA83/cellframe-sdk
2 results
Show changes
Commits on Source (16)
Showing
with 468 additions and 548 deletions
Subproject commit 3ea2d8efab87f827cc27f903778db66c61074eef
Subproject commit cfa30cd79b3326caa8c02a35a380f4821de6ec10
......@@ -745,7 +745,7 @@ ssize_t dap_chain_atom_save(dap_chain_cell_t *a_chain_cell, const uint8_t *a_ato
log_it(L_CRITICAL, g_error_memory_alloc);
continue;
}
dap_proc_thread_callback_add(NULL, s_notify_atom_on_thread, l_arg);
dap_proc_thread_callback_add_pri(NULL, s_notify_atom_on_thread, l_arg, DAP_QUEUE_MSG_PRIORITY_LOW);
}
}
if (l_chain->callback_atom_add_from_treshold) {
......
......@@ -456,9 +456,8 @@ static void s_grace_period_start(dap_chain_net_srv_grace_t *a_grace)
}
a_grace->usage->price = l_price;
} else {
char *l_order_hash_str = dap_chain_hash_fast_to_str_new(&a_grace->usage->static_order_hash);
log_it(L_MSG, "Get price from order %s.", l_order_hash_str);
DAP_DELETE(l_order_hash_str);
log_it(L_MSG, "Get price from order %s.",
dap_chain_hash_fast_to_str_static(&a_grace->usage->static_order_hash));
if ((l_price = dap_chain_net_srv_get_price_from_order(a_grace->usage->service, "srv_vpn", &a_grace->usage->static_order_hash))){
switch (l_price->units_uid.enm) {
case SERV_UNIT_MB:
......@@ -620,9 +619,8 @@ static void s_grace_period_start(dap_chain_net_srv_grace_t *a_grace)
}
}
} else {
char *l_order_hash_str = dap_chain_hash_fast_to_str_new(&a_grace->usage->static_order_hash);
log_it(L_MSG, "Get price from order %s.", l_order_hash_str);
DAP_DELETE(l_order_hash_str);
log_it(L_MSG, "Get price from order %s.",
dap_chain_hash_fast_to_str_static(&a_grace->usage->static_order_hash));
if ((l_price = dap_chain_net_srv_get_price_from_order(a_grace->usage->service, "srv_vpn", &a_grace->usage->static_order_hash))){
if (l_price->net->pub.id.uint64 != a_grace->usage->net->pub.id.uint64){
log_it( L_WARNING, "Pricelist is not for net %s.", a_grace->usage->net->pub.name);
......@@ -885,9 +883,8 @@ static bool s_grace_period_finish(usages_in_grace_t *a_grace_item)
}
}
} else {
char *l_order_hash_str = dap_chain_hash_fast_to_str_new(&l_grace->usage->static_order_hash);
log_it(L_MSG, "Get price from order %s.", l_order_hash_str);
DAP_DELETE(l_order_hash_str);
log_it(L_MSG, "Get price from order %s.",
dap_chain_hash_fast_to_str_static(&l_grace->usage->static_order_hash));
if ((l_price = dap_chain_net_srv_get_price_from_order(l_grace->usage->service, "srv_vpn", &l_grace->usage->static_order_hash))){
if (l_price->net->pub.id.uint64 != l_grace->usage->net->pub.id.uint64){
log_it( L_WARNING, "Pricelist is not for net %s.", l_grace->usage->net->pub.name);
......
......@@ -84,17 +84,10 @@ size_t dap_chain_hash_slow_to_str( dap_chain_hash_slow_t *a_hash, char *a_str, s
*/
char *dap_chain_addr_to_str(const dap_chain_addr_t *a_addr)
{
// sanity check
dap_return_val_if_pass(!a_addr, NULL);
dap_return_val_if_pass(dap_chain_addr_is_blank(a_addr), dap_strdup("null"));
//func work
size_t l_ret_size = DAP_ENC_BASE58_ENCODE_SIZE(sizeof(dap_chain_addr_t));
char *l_ret = DAP_NEW_SIZE(char, l_ret_size);
if(!dap_enc_base58_encode(a_addr, sizeof(dap_chain_addr_t), l_ret)) {
DAP_DELETE(l_ret);
return NULL;
}
return l_ret;
dap_return_val_if_pass(dap_chain_addr_is_blank(a_addr), "null");
static _Thread_local char s_buf[DAP_ENC_BASE58_ENCODE_SIZE(sizeof(dap_chain_addr_t))] = { '\0' };
return dap_enc_base58_encode(a_addr, sizeof(dap_chain_addr_t), s_buf) ? s_buf : NULL;
}
/**
......
This diff is collapsed.
......@@ -84,10 +84,9 @@ void dap_chain_datum_anchor_certs_dump(dap_string_t * a_str_out, byte_t * a_sign
continue;
}
char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_hash)
: dap_chain_hash_fast_to_str_new(&l_pkey_hash);
? dap_enc_base58_encode_hash_to_str_static(&l_pkey_hash)
: dap_chain_hash_fast_to_str_static(&l_pkey_hash);
dap_string_append_printf(a_str_out, "%d) %s, %s, %u bytes\n", i, l_hash_str,
dap_sign_type_to_str(l_sign->header.type), l_sign->header.sign_size);
DAP_DEL_Z(l_hash_str);
}
}
......@@ -193,9 +193,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_value);
char *l_value_str = dap_chain_balance_print(l_value);
char *l_value_str = dap_uint256_to_char(l_value, NULL);
dap_string_append_printf(a_str_out, "\tValue: %s\n", l_value_str);
DAP_DELETE(l_value_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_SIGN:
break;
......@@ -206,9 +205,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_fee_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_fee_value);
char *l_fee_value_str = dap_chain_balance_print(l_fee_value);
char *l_fee_value_str = dap_uint256_to_char(l_fee_value, NULL);
dap_string_append_printf(a_str_out, "\tFee: %s\n", l_fee_value_str);
DAP_DELETE(l_fee_value_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_OWNER:
if (l_tsd->size < sizeof(dap_pkey_t)) {
......@@ -228,9 +226,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_owner_min = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_owner_min);
char *l_owner_min_str = dap_chain_balance_print(l_owner_min);
char *l_owner_min_str = dap_uint256_to_char(l_owner_min, NULL);
dap_string_append_printf(a_str_out, "\tOwner min: %s\n", l_owner_min_str);
DAP_DELETE(l_owner_min_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_FEE_WALLET:
if (l_tsd->size > sizeof(dap_chain_addr_t)) {
......@@ -239,9 +236,7 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
dap_chain_addr_t *l_addr_fee_wallet = /*{ };
_dap_tsd_get_scalar(l_tsd, &l_addr_fee_wallet);*/ _dap_tsd_get_object(l_tsd, dap_chain_addr_t);
char *l_addr_fee_wallet_str = dap_chain_addr_to_str(l_addr_fee_wallet);
dap_string_append_printf(a_str_out, "\tWallet for fee: %s\n", l_addr_fee_wallet_str);
DAP_DELETE(l_addr_fee_wallet_str);
dap_string_append_printf(a_str_out, "\tWallet for fee: %s\n", dap_chain_addr_to_str(l_addr_fee_wallet));
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_TX_HASH:
if (l_tsd->size > sizeof(dap_hash_fast_t)) {
......@@ -251,10 +246,9 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
dap_hash_fast_t *l_stake_tx = /*{ };
_dap_tsd_get_scalar(l_tsd, &l_stake_tx);*/ _dap_tsd_get_object(l_tsd, dap_hash_fast_t);
char *l_stake_tx_hash = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(l_stake_tx)
: dap_chain_hash_fast_to_str_new(l_stake_tx);
? dap_enc_base58_encode_hash_to_str_static(l_stake_tx)
: dap_chain_hash_fast_to_str_static(l_stake_tx);
dap_string_append_printf(a_str_out, "\tStake tx: %s\n", l_stake_tx_hash);
DAP_DELETE(l_stake_tx_hash);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_VALUE:
if (l_tsd->size > sizeof(uint256_t)){
......@@ -263,9 +257,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_stake_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_stake_value);
char *l_stake_value_str = dap_chain_balance_print(l_stake_value);
char *l_stake_value_str = dap_uint256_to_char(l_stake_value, NULL);
dap_string_append_printf(a_str_out, "\tStake value: %s\n", l_stake_value_str);
DAP_DELETE(l_stake_value_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_SIGNING_ADDR:
if (l_tsd->size > sizeof(dap_chain_addr_t)) {
......@@ -274,15 +267,12 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
dap_chain_addr_t *l_stake_addr_signing = /*{ };
_dap_tsd_get_scalar(l_tsd, &l_stake_addr_signing);*/ _dap_tsd_get_object(l_tsd, dap_chain_addr_t);
char *l_stake_addr_signing_str = dap_chain_addr_to_str(l_stake_addr_signing);
dap_string_append_printf(a_str_out, "\tSigning addr: %s\n", l_stake_addr_signing_str);
dap_string_append_printf(a_str_out, "\tSigning addr: %s\n", dap_chain_addr_to_str(l_stake_addr_signing));
dap_chain_hash_fast_t l_pkey_signing = l_stake_addr_signing->data.hash_fast;
char *l_pkey_signing_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_signing)
: dap_chain_hash_fast_to_str_new(&l_pkey_signing);
? dap_enc_base58_encode_hash_to_str_static(&l_pkey_signing)
: dap_chain_hash_fast_to_str_static(&l_pkey_signing);
dap_string_append_printf(a_str_out, "\tSigning pkey fingerprint: %s\n", l_pkey_signing_str);
DAP_DELETE(l_stake_addr_signing_str);
DAP_DELETE(l_pkey_signing_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_SIGNER_NODE_ADDR:
if(l_tsd->size > sizeof(dap_chain_node_addr_t)){
......@@ -300,9 +290,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_min_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_min_value);
char *l_min_value_str = dap_chain_balance_print(l_min_value);
char *l_min_value_str = dap_uint256_to_char(l_min_value, NULL);
dap_string_append_printf(a_str_out, "\tMin value: %s\n", l_min_value_str);
DAP_DELETE(l_min_value_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_MIN_SIGNERS_COUNT:
if (l_tsd->size > sizeof(uint256_t)) {
......@@ -311,9 +300,8 @@ void dap_chain_datum_decree_dump(dap_string_t *a_str_out, dap_chain_datum_decree
}
uint256_t l_min_signers_count = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_min_signers_count);
char *l_min_signers_count_str = dap_chain_balance_print(l_min_signers_count);
char *l_min_signers_count_str = dap_uint256_to_char(l_min_signers_count, NULL);
dap_string_append_printf(a_str_out, "\tMin signers count: %s\n", l_min_signers_count_str);
DAP_DELETE(l_min_signers_count_str);
break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_IP_V4: {
struct in_addr l_ip_addr = dap_tsd_get_scalar(l_tsd, struct in_addr);
......@@ -367,11 +355,10 @@ void dap_chain_datum_decree_certs_dump(dap_string_t * a_str_out, byte_t * a_sign
}
char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_hash)
: dap_chain_hash_fast_to_str_new(&l_pkey_hash);
? dap_enc_base58_encode_hash_to_str_static(&l_pkey_hash)
: dap_chain_hash_fast_to_str_static(&l_pkey_hash);
dap_string_append_printf(a_str_out, "%d) %s, %s, %u bytes\n", i, l_hash_str,
dap_sign_type_to_str(l_sign->header.type), l_sign->header.sign_size);
DAP_DEL_Z(l_hash_str);
}
}
......
......@@ -219,6 +219,31 @@ void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags
}
}
/**
* @brief dap_chain_datum_token_flags_dump_to_json
* @param json_obj_out
* @param a_flags
*/
void dap_chain_datum_token_flags_dump_to_json(json_object * json_obj_out, uint16_t a_flags)
{
if(!a_flags){
json_object_object_add(json_obj_out, "flags:", json_object_new_string(c_dap_chain_datum_token_flag_str[DAP_CHAIN_DATUM_TOKEN_FLAG_NONE]));
return;
}
bool is_first = true;
for ( uint16_t i = 0; BIT(i) <= DAP_CHAIN_DATUM_TOKEN_FLAG_MAX; i++){
if( a_flags & (1 << i) ){
if(is_first)
is_first = false;
json_object_object_add(json_obj_out, "flags:", json_object_new_string(c_dap_chain_datum_token_flag_str[BIT(i)]));
}
}
}
/**
* @brief dap_chain_datum_token_certs_dump
......@@ -258,15 +283,66 @@ void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_
}
char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_hash)
: dap_chain_hash_fast_to_str_new(&l_pkey_hash);
? dap_enc_base58_encode_hash_to_str_static(&l_pkey_hash)
: dap_chain_hash_fast_to_str_static(&l_pkey_hash);
dap_string_append_printf(a_str_out, "%d) %s, %s, %u bytes\n", i, l_hash_str,
dap_sign_type_to_str(l_sign->header.type), l_sign->header.sign_size);
}
}
/**
* @brief dap_chain_datum_token_certs_dump_to_json
* @param a_json_obj_out
* @param a_data_n_tsd
* @param a_certs_size
*/
void dap_chain_datum_token_certs_dump_to_json(json_object *a_json_obj_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type)
{
json_object_object_add(a_json_obj_out, "Signatures", json_object_new_string(""));
if (!a_certs_size) {
json_object_object_add(a_json_obj_out, "status", json_object_new_string("<NONE>"));
return;
}
size_t l_offset = 0;
json_object * json_arr_seg = json_object_new_array();
for (int i = 1; l_offset < (a_certs_size); i++) {
json_object * l_json_obj_out = json_object_new_object();
dap_sign_t *l_sign = (dap_sign_t *) (a_data_n_tsd + l_offset);
l_offset += dap_sign_get_size(l_sign);
if (l_sign->header.sign_size == 0) {
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - 0 size signature>"));
break;
}
if (l_sign->header.sign_size > a_certs_size)
{
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - signature size is greater than a_certs_size>"));
continue;
}
dap_chain_hash_fast_t l_pkey_hash = {0};
if (dap_sign_get_pkey_hash(l_sign, &l_pkey_hash) == false) {
json_object_object_add(l_json_obj_out, "status", json_object_new_string("<CORRUPTED - can't calc hash>"));
continue;
}
char *l_hash_str = dap_strcmp(a_hash_out_type, "hex")
? dap_enc_base58_encode_hash_to_str(&l_pkey_hash)
: dap_chain_hash_fast_to_str_new(&l_pkey_hash);
json_object_object_add(l_json_obj_out, "line", json_object_new_int(i));
json_object_object_add(l_json_obj_out, "hash", json_object_new_string(l_hash_str));
json_object_object_add(l_json_obj_out, "sign_type", json_object_new_string(dap_sign_type_to_str(l_sign->header.type)));
json_object_object_add(l_json_obj_out, "bytes", json_object_new_int(l_sign->header.sign_size));
json_object_array_add(json_arr_seg, l_json_obj_out);
DAP_DEL_Z(l_hash_str);
}
json_object_object_add(a_json_obj_out, "status", json_arr_seg);
}
dap_sign_t ** dap_chain_datum_token_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_total, size_t * a_signs_valid)
{
assert(a_datum_token_size);
......
......@@ -541,9 +541,7 @@ dap_chain_tx_sig_t* dap_chain_datum_tx_item_sign_create(dap_enc_key_t *a_key, co
*/
dap_sign_t* dap_chain_datum_tx_item_sign_get_sig(dap_chain_tx_sig_t *a_tx_sig)
{
if(!a_tx_sig || !a_tx_sig->header.sig_size)
return NULL;
return (dap_sign_t*) a_tx_sig->sig;
return a_tx_sig && a_tx_sig->header.sig_size ? (dap_sign_t*)a_tx_sig->sig : NULL;
}
/**
......
......@@ -154,6 +154,7 @@ DAP_STATIC_INLINE const char *dap_chain_datum_type_id_to_str(uint16_t a_type_id)
}
void dap_chain_datum_token_dump_tsd(dap_string_t *a_str_out, dap_chain_datum_token_t *a_token, size_t a_token_size, const char *a_hash_out_type);
void dap_datum_token_dump_tsd_to_json(json_object * json_obj_out, dap_chain_datum_token_t *a_token, size_t a_token_size, const char *a_hash_out_type);
void dap_chain_datum_dump(dap_string_t *a_str_out, dap_chain_datum_t *a_datum, const char *a_hash_out_type, dap_chain_net_id_t a_net_id);
bool dap_chain_datum_dump_tx(dap_chain_datum_tx_t *a_datum,
const char *a_ticker,
......
......@@ -30,6 +30,7 @@
#include "dap_string.h"
#include "dap_tsd.h"
#include "dap_strfuncs.h"
#include "json_object.h"
// Token declaration
......@@ -504,7 +505,9 @@ extern const char *c_dap_chain_datum_token_emission_type_str[];
/// TDS op funcs
dap_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t * a_token, size_t a_token_size);
void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags);
void dap_chain_datum_token_flags_dump_to_json(json_object * json_obj_out, uint16_t a_flags);
void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type);
void dap_chain_datum_token_certs_dump_to_json(json_object *a_json_obj_out, byte_t * a_data_n_tsd, size_t a_certs_size, const char *a_hash_out_type);
dap_sign_t ** dap_chain_datum_token_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_count, size_t * a_signs_valid);
dap_chain_datum_token_t *dap_chain_datum_token_read(const byte_t *a_token_serial, size_t *a_token_size);
......
......@@ -153,6 +153,6 @@ dap_sign_t *dap_chain_datum_tx_get_sign(dap_chain_datum_tx_t *a_tx, int a_sign_n
*/
int dap_chain_datum_tx_verify_sign(dap_chain_datum_tx_t *a_tx);
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx);
//json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx);
int dap_chain_datum_tx_get_fee_value (dap_chain_datum_tx_t *a_tx, uint256_t *a_value);
......@@ -273,7 +273,7 @@ static int s_cli_dag_poa(int argc, char ** argv, void **a_str_reply)
dap_chain_cs_dag_event_calc_hash(l_event, l_event_size_new, &l_event_new_hash);
char l_event_new_hash_hex_str[DAP_CHAIN_HASH_FAST_STR_SIZE];
dap_chain_hash_fast_to_str(&l_event_new_hash, l_event_new_hash_hex_str, DAP_CHAIN_HASH_FAST_STR_SIZE);
char *l_event_new_hash_base58_str = dap_enc_base58_encode_hash_to_str(&l_event_new_hash);
char *l_event_new_hash_base58_str = dap_enc_base58_encode_hash_to_str_static(&l_event_new_hash);
bool l_event_is_ready = s_round_event_ready_minimum_check(l_dag, l_event, l_event_size_new,
l_event_new_hash_hex_str);
......@@ -305,7 +305,6 @@ static int s_cli_dag_poa(int argc, char ** argv, void **a_str_reply)
ret=-31;
}
DAP_DELETE(l_event_new_hash_base58_str);
} else {
dap_cli_server_cmd_set_reply_text(a_str_reply,
"Can't sign event %s in round.new\n",
......@@ -595,12 +594,12 @@ static bool s_callback_round_event_to_chain_callback_get_round_item(dap_global_d
HASH_DEL(l_poa_pvt->active_rounds, l_arg);
pthread_rwlock_unlock(&l_poa_pvt->rounds_rwlock);
DAP_DELETE(a_arg);
size_t l_events_round_size = a_values_count;
dap_store_obj_t *l_events_round = a_values;
uint16_t l_max_signs_count = 0;
dap_list_t *l_dups_list = NULL;
for (size_t l_index = 0; l_index < l_events_round_size; l_index++) {
dap_chain_cs_dag_event_round_item_t *l_round_item = (dap_chain_cs_dag_event_round_item_t *)l_events_round[l_index].value;
for (size_t i = 0; i < a_values_count; i++) {
if (!strcmp(DAG_ROUND_CURRENT_KEY, a_values[i].key))
continue;
dap_chain_cs_dag_event_round_item_t *l_round_item = (dap_chain_cs_dag_event_round_item_t *)a_values[i].value;
dap_chain_cs_dag_event_t *l_event = (dap_chain_cs_dag_event_t *)l_round_item->event_n_signs;
if (l_event->header.round_id == l_round_id &&
l_round_item->round_info.reject_count < l_poa_pvt->auth_certs_count_verify) {
......@@ -685,6 +684,16 @@ static void s_round_event_cs_done(dap_chain_cs_dag_t * a_dag, uint64_t a_round_i
pthread_rwlock_unlock(&l_poa_pvt->rounds_rwlock);
}
static bool s_callback_sync_all_on_start(dap_global_db_instance_t *a_dbi, int a_rc, const char *a_group,
const size_t a_values_total, const size_t a_values_count,
dap_global_db_obj_t *a_values, void *a_arg)
{
for (size_t i = 0; i < a_values_count; i++)
s_callback_event_round_sync((dap_chain_cs_dag_t *)a_arg, DAP_GLOBAL_DB_OPTYPE_ADD, a_group,
a_values[i].key, a_values[i].value, a_values[i].value_len);
return false;
}
/**
* @brief create callback load certificate for event signing for specific chain
* path to certificate iw written to chain config file in dag_poa section
......@@ -711,6 +720,7 @@ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_c
l_dag->callback_cs_event_round_sync = s_callback_event_round_sync;
l_dag->round_completed = l_dag->round_current++;
log_it(L_MSG, "Round complete ID %"DAP_UINT64_FORMAT_U", current ID %"DAP_UINT64_FORMAT_U, l_dag->round_completed, l_dag->round_current);
dap_global_db_get_all(l_dag->gdb_group_events_round_new, 0, s_callback_sync_all_on_start, l_dag);
}
return 0;
}
......@@ -792,6 +802,9 @@ static int s_callback_event_round_sync(dap_chain_cs_dag_t * a_dag, const char a_
if (a_op_code != DAP_GLOBAL_DB_OPTYPE_ADD || !a_key || !a_value || !a_value_size)
return 0;
if (!strcmp(DAG_ROUND_CURRENT_KEY, a_key))
return 0;
dap_chain_cs_dag_poa_t * l_poa = DAP_CHAIN_CS_DAG_POA(a_dag);
dap_chain_cs_dag_poa_pvt_t *l_poa_pvt = PVT(l_poa);
......@@ -957,7 +970,6 @@ dap_list_t *dap_chain_cs_dag_poa_get_auth_certs(dap_chain_t *a_chain, size_t *a_
if (a_count_verify)
*a_count_verify = l_poa_pvt->auth_certs_count_verify;
dap_list_t *l_keys_list = NULL;
for(size_t i = 0; i < l_poa_pvt->auth_certs_count; i++)
{
......
......@@ -262,9 +262,8 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
l_validator->node_addr = l_signer_node_addr;
l_validator->weight = uint256_1;
l_esbocs_pvt->poa_validators = dap_list_append(l_esbocs_pvt->poa_validators, l_validator);
char *l_signer_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast);
char *l_signer_addr = dap_chain_hash_fast_to_str_static(&l_signing_addr.data.hash_fast);
log_it(L_MSG, "add validator addr "NODE_ADDR_FP_STR", signing addr %s", NODE_ADDR_FP_ARGS_S(l_signer_node_addr), l_signer_addr);
DAP_DELETE(l_signer_addr);
if (!l_esbocs_pvt->poa_mode) { // auth certs in PoA mode will be first PoS validators keys
dap_hash_fast_t l_stake_tx_hash = {};
......@@ -748,14 +747,18 @@ static dap_list_t *s_get_validators_list(dap_chain_esbocs_session_t *a_session,
uint256_t l_raw_result;
uint256_t l_chosen_weight = dap_pseudo_random_get(l_total_weight, &l_raw_result);
if (false) { //PVT(a_session->esbocs)->debug) {
char *l_chosen_weignt_str = dap_chain_balance_print(l_chosen_weight);
char *l_total_weight_str = dap_chain_balance_print(l_total_weight);
char *l_seed_hash_str = dap_hash_fast_to_str_new(&a_session->cur_round.last_block_hash);
char *l_raw_result_str = dap_chain_balance_print(l_raw_result);
log_it(L_MSG, "Round seed %s, sync attempt %"DAP_UINT64_FORMAT_U", chosen weight %s from %s, by number %s",
l_seed_hash_str, a_skip_count + 1,
l_chosen_weignt_str, l_total_weight_str, l_raw_result_str);
DAP_DEL_MULTY(l_chosen_weignt_str, l_total_weight_str, l_raw_result_str, l_seed_hash_str);
unsigned l_strlen = 1024, l_off = 0;
char *l_chosen_weight_str, *l_total_weight_str, *l_raw_result_str, l_str[l_strlen];
dap_uint256_to_char(l_chosen_weight, &l_chosen_weight_str);
l_off = dap_snprintf(l_str, l_strlen,
"Round seed %s, sync attempt %"DAP_UINT64_FORMAT_U", chosen weight %s ",
dap_hash_fast_to_str_static(&a_session->cur_round.last_block_hash),
a_skip_count + 1, l_chosen_weight_str);
dap_uint256_to_char(l_total_weight, &l_total_weight_str);
l_off += dap_snprintf(l_str + l_off, l_strlen - l_off, "from %s, ", l_total_weight_str);
dap_uint256_to_char(l_raw_result, &l_raw_result_str);
l_off += dap_snprintf(l_str + l_off, l_strlen - l_off, "by number %s", l_raw_result_str);
log_it(L_MSG, "%s", l_str);
}
dap_list_t *l_chosen = NULL;
uint256_t l_cur_weight = uint256_0;
......@@ -871,10 +874,9 @@ static void s_session_update_penalty(dap_chain_esbocs_session_t *a_session)
}
if (l_item->miss_count < DAP_CHAIN_ESBOCS_PENALTY_KICK) {
if (PVT(a_session->esbocs)->debug) {
char *l_addr_str = dap_chain_hash_fast_to_str_new(&l_signing_addr->data.hash_fast);
char *l_addr_str = dap_chain_hash_fast_to_str_static(&l_signing_addr->data.hash_fast);
log_it(L_DEBUG, "Increment miss count %d for addr %s. Miss count for kick is %d",
l_item->miss_count, l_addr_str, DAP_CHAIN_ESBOCS_PENALTY_KICK);
DAP_DELETE(l_addr_str);
}
l_item->miss_count++;
}
......@@ -1035,9 +1037,8 @@ static uint64_t s_session_calc_current_round_id(dap_chain_esbocs_session_t *a_se
}
}
if (l_id_candidate == 0) {
char *l_signing_addr_str = dap_chain_hash_fast_to_str_new(&l_validator->signing_addr.data.hash_fast);
char *l_signing_addr_str = dap_chain_hash_fast_to_str_static(&l_validator->signing_addr.data.hash_fast);
log_it(L_ERROR, "Can't find sync message of synced validator %s", l_signing_addr_str);
DAP_DELETE(l_signing_addr_str);
continue;
}
bool l_candidate_found = false;
......@@ -1164,11 +1165,10 @@ static void s_session_state_change(dap_chain_esbocs_session_t *a_session, enum s
dap_hash_fast_t l_directive_hash;
dap_hash_fast(l_directive, l_directive->size, &l_directive_hash);
if (PVT(a_session->esbocs)->debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_directive_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_directive_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu. Put on the vote my directive:%s",
a_session->chain->net_name, a_session->chain->name,
a_session->cur_round.id, a_session->cur_round.attempt_num, l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
}
s_message_send(a_session, DAP_CHAIN_ESBOCS_MSG_TYPE_DIRECTIVE, &l_directive_hash,
l_directive, l_directive->size, a_session->cur_round.all_validators);
......@@ -1206,9 +1206,8 @@ static void s_session_state_change(dap_chain_esbocs_session_t *a_session, enum s
);
dap_chain_esbocs_validator_t *l_validator = l_list ? l_list->data : NULL;
if (!l_validator || !l_validator->is_chosen) {
char *l_addr = dap_chain_hash_fast_to_str_new(&a_session->cur_round.attempt_submit_validator.data.hash_fast);
char *l_addr = dap_chain_hash_fast_to_str_static(&a_session->cur_round.attempt_submit_validator.data.hash_fast);
log_it(L_MSG, "Error: can't find current attmempt submit validator %s in signers list", l_addr);
DAP_DELETE(l_addr);
}
l_validator->is_chosen = false;
} else
......@@ -1334,12 +1333,11 @@ static void s_session_proc_state(dap_chain_esbocs_session_t *a_session)
}
if (dap_list_length(l_store->candidate_signs) >= PVT(a_session->esbocs)->min_validators_count) {
if(l_cs_debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(&a_session->cur_round.attempt_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(&a_session->cur_round.attempt_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu"
" Candidate %s collected sings of minimum number of validators, so to sent PRE_COMMIT",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
a_session->cur_round.attempt_num, l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
}
s_session_state_change(a_session, DAP_CHAIN_ESBOCS_SESSION_STATE_WAIT_FINISH, l_time);
break;
......@@ -1362,13 +1360,12 @@ static void s_session_proc_state(dap_chain_esbocs_session_t *a_session)
break;
case DAP_CHAIN_ESBOCS_SESSION_STATE_WAIT_VOTING:
if (l_time - a_session->ts_stage_entry >= PVT(a_session->esbocs)->round_attempt_timeout * 2) {
const char *l_hash_str = dap_chain_hash_fast_to_str_new(&a_session->cur_round.directive_hash);
const char *l_hash_str = dap_chain_hash_fast_to_str_static(&a_session->cur_round.directive_hash);
debug_if(l_cs_debug, L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Voting finished by reason: cant't collect minimum number of validator's votes for directive %s",
a_session->chain->net_name, a_session->chain->name,
a_session->cur_round.id, a_session->cur_round.attempt_num,
l_hash_str);
DAP_DELETE(l_hash_str);
s_session_state_change(a_session, DAP_CHAIN_ESBOCS_SESSION_STATE_PREVIOUS, l_time);
}
break;
......@@ -1422,11 +1419,10 @@ static void s_session_candidate_submit(dap_chain_esbocs_session_t *a_session)
if (l_candidate_size) {
dap_hash_fast(l_candidate, l_candidate_size, &l_candidate_hash);
if (PVT(a_session->esbocs)->debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu. Submit my candidate %s",
a_session->chain->net_name, a_session->chain->name,
a_session->cur_round.id, a_session->cur_round.attempt_num, l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
}
} else { // there is no my candidate, send null hash
if (PVT(a_session->esbocs)->debug)
......@@ -1468,22 +1464,20 @@ static void s_session_candidate_verify(dap_chain_esbocs_session_t *a_session, da
s_message_send(a_session, DAP_CHAIN_ESBOCS_MSG_TYPE_APPROVE, a_candidate_hash,
NULL, 0, a_session->cur_round.validators_list);
if (PVT(a_session->esbocs)->debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(a_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(a_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu Sent APPROVE candidate %s",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
a_session->cur_round.attempt_num, l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
}
} else {
// validation - fail, gen event Reject
s_message_send(a_session, DAP_CHAIN_ESBOCS_MSG_TYPE_REJECT, a_candidate_hash,
NULL, 0, a_session->cur_round.validators_list);
if (PVT(a_session->esbocs)->debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(a_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(a_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu Sent REJECT candidate %s",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
a_session->cur_round.attempt_num, l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
}
}
a_session->processing_candidate = NULL;
......@@ -1503,13 +1497,12 @@ static void s_session_candidate_precommit(dap_chain_esbocs_session_t *a_session,
char *l_candidate_hash_str = NULL;
HASH_FIND(hh, a_session->cur_round.store_items, l_candidate_hash, sizeof(dap_chain_hash_fast_t), l_store);
if (!l_store) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive PRE_COMMIT message for unknown candidate %s",
a_session->chain->net_name, a_session->chain->name,
a_session->cur_round.id, a_message->hdr.attempt_num,
l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
return;
}
......@@ -1534,7 +1527,7 @@ static void s_session_candidate_precommit(dap_chain_esbocs_session_t *a_session,
}
if (l_cs_debug) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive PRE_COMMIT: candidate %s",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
......@@ -1544,13 +1537,12 @@ static void s_session_candidate_precommit(dap_chain_esbocs_session_t *a_session,
dap_hash_fast_compare(&a_session->cur_round.attempt_candidate_hash, l_candidate_hash)) {
l_store->decide_commit = true;
debug_if(l_cs_debug, L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Candidate %s precommted by minimum number of validators, try to finish this round",
" Candidate %s precommited by minimum number of validators, try to finish this round",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
a_message->hdr.attempt_num, l_candidate_hash_str);
s_session_round_finish(a_session, l_store);
// ATTENTION: New round will be started by incoming atom notifier event
}
DAP_DEL_Z(l_candidate_hash_str);
}
static bool s_session_candidate_to_chain(dap_chain_esbocs_session_t *a_session, dap_chain_hash_fast_t *a_candidate_hash,
......@@ -1562,7 +1554,7 @@ static bool s_session_candidate_to_chain(dap_chain_esbocs_session_t *a_session,
}
bool res = false;
dap_chain_atom_verify_res_t l_res = a_session->chain->callback_atom_add(a_session->chain, a_candidate, a_candidate_size);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(a_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(a_candidate_hash);
switch (l_res) {
case ATOM_ACCEPT:
// block save to chain
......@@ -1586,7 +1578,6 @@ static bool s_session_candidate_to_chain(dap_chain_esbocs_session_t *a_session,
default:
log_it(L_CRITICAL, "Wtf is this ret code ? Atom hash %s code %d", l_candidate_hash_str, l_res);
}
DAP_DELETE(l_candidate_hash_str);
return res;
}
......@@ -1605,30 +1596,26 @@ static void s_session_round_finish(dap_chain_esbocs_session_t *a_session, dap_ch
}
if (l_store->reject_count >= l_cs_level) {
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_store->candidate_hash);
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_store->candidate_hash);
debug_if(l_cs_debug, L_WARNING, "Trying to finish rejected candidate %s", l_finish_candidate_hash_str);
DAP_DELETE(l_finish_candidate_hash_str);
return;
}
if (l_store->approve_count < l_cs_level) {
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_store->candidate_hash);
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_store->candidate_hash);
debug_if(l_cs_debug, L_WARNING, "Trying to finish not properly approved candidate %s", l_finish_candidate_hash_str);
DAP_DELETE(l_finish_candidate_hash_str);
return;
}
if (dap_list_length(l_store->candidate_signs) < l_cs_level) {
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_store->candidate_hash);
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_store->candidate_hash);
debug_if(l_cs_debug, L_WARNING, "Trying to finish not properly signed candidate %s", l_finish_candidate_hash_str);
DAP_DELETE(l_finish_candidate_hash_str);
return;
}
if (l_store->precommit_count < l_cs_level) {
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_store->candidate_hash);
char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_static(&l_store->candidate_hash);
debug_if(l_cs_debug, L_WARNING, "Trying to finish not properly precommited candidate %s", l_finish_candidate_hash_str);
DAP_DELETE(l_finish_candidate_hash_str);
return;
}
......@@ -1669,23 +1656,20 @@ void s_session_validator_mark_online(dap_chain_esbocs_session_t *a_session, dap_
if (!l_was_synced)
a_session->cur_round.total_validators_synced++;
if (PVT(a_session->esbocs)->debug) {
const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
const char *l_addr_str = dap_chain_hash_fast_to_str_static(&a_signing_addr->data.hash_fast);
log_it(L_DEBUG, "Mark validator %s as online", l_addr_str);
DAP_DELETE(l_addr_str);
}
} else {
const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
const char *l_addr_str = dap_chain_hash_fast_to_str_static(&a_signing_addr->data.hash_fast);
log_it(L_ERROR, "Can't find validator %s in validators list", l_addr_str);
DAP_DELETE(l_addr_str);
}
dap_chain_esbocs_penalty_item_t *l_item = NULL;
HASH_FIND(hh, a_session->penalty, a_signing_addr, sizeof(*a_signing_addr), l_item);
bool l_inactive = dap_chain_net_srv_stake_key_delegated(a_signing_addr) == -1;
if (l_inactive && !l_item) {
const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
const char *l_addr_str = dap_chain_hash_fast_to_str_static(&a_signing_addr->data.hash_fast);
log_it(L_DEBUG, "Validator %s not in penalty list, but currently disabled", l_addr_str);
DAP_DELETE(l_addr_str);
DAP_NEW_Z_RET(l_item, dap_chain_esbocs_penalty_item_t, NULL);
l_item->signing_addr = *a_signing_addr;
l_item->miss_count = DAP_CHAIN_ESBOCS_PENALTY_KICK;
......@@ -1695,10 +1679,9 @@ void s_session_validator_mark_online(dap_chain_esbocs_session_t *a_session, dap_
if (l_item->miss_count > DAP_CHAIN_ESBOCS_PENALTY_KICK)
l_item->miss_count = DAP_CHAIN_ESBOCS_PENALTY_KICK;
if (PVT(a_session->esbocs)->debug) {
const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
const char *l_addr_str = dap_chain_hash_fast_to_str_static(&a_signing_addr->data.hash_fast);
log_it(L_DEBUG, "Decrement miss count %d for addr %s. Miss count for kick is %d",
l_item->miss_count, l_addr_str, DAP_CHAIN_ESBOCS_PENALTY_KICK);
DAP_DELETE(l_addr_str);
}
if (l_item->miss_count)
l_item->miss_count--;
......@@ -1740,11 +1723,10 @@ static void s_session_directive_process(dap_chain_esbocs_session_t *a_session, d
}
int l_status = dap_chain_net_srv_stake_key_delegated(l_voting_addr);
if (l_status == 0) {
const char *l_addr_str = dap_chain_hash_fast_to_str_new(&l_voting_addr->data.hash_fast);
const char *l_addr_str = dap_chain_hash_fast_to_str_static(&l_voting_addr->data.hash_fast);
log_it(L_WARNING, "Trying to put to the vote directive type %s for non delegated key %s",
a_directive->type == DAP_CHAIN_ESBOCS_DIRECTIVE_KICK ? "KICK" : "LIFT",
l_addr_str);
DAP_DELETE(l_addr_str);
return;
}
dap_chain_esbocs_penalty_item_t *l_item = NULL;
......@@ -1771,12 +1753,11 @@ static void s_session_directive_process(dap_chain_esbocs_session_t *a_session, d
}
if (PVT(a_session->esbocs)->debug) {
char *l_directive_hash_str = dap_chain_hash_fast_to_str_new(a_directive_hash);
char *l_directive_hash_str = dap_chain_hash_fast_to_str_static(a_directive_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu Send VOTE %s directive %s",
a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
a_session->cur_round.attempt_num, l_vote_for ? "FOR" : "AGAINST",
l_directive_hash_str);
DAP_DELETE(l_directive_hash_str);
}
a_session->cur_round.directive_hash = *a_directive_hash;
a_session->cur_round.directive = DAP_DUP_SIZE(a_directive, a_directive->size);
......@@ -2137,20 +2118,18 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
}
if (l_cs_debug) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive SUBMIT candidate %s, size %zu",
l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id,
l_message->hdr.attempt_num, l_candidate_hash_str, l_candidate_size);
DAP_DELETE(l_candidate_hash_str);
}
dap_chain_esbocs_store_t *l_store;
HASH_FIND(hh, l_session->cur_round.store_items, l_candidate_hash, sizeof(dap_chain_hash_fast_t), l_store);
if (l_store) {
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
char *l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_WARNING, "Duplicate candidate: %s", l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
break;
}
......@@ -2181,7 +2160,7 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
bool l_approve = l_message->hdr.type == DAP_CHAIN_ESBOCS_MSG_TYPE_APPROVE;
HASH_FIND(hh, l_session->cur_round.store_items, l_candidate_hash, sizeof(dap_chain_hash_fast_t), l_store);
if (!l_store) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive %s message for unknown candidate %s, process it later",
l_session->chain->net_name, l_session->chain->name,
......@@ -2191,12 +2170,11 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
HASH_FIND(hh, l_round->message_items, a_data_hash, sizeof(dap_chain_hash_fast_t), l_unprocessed_item);
if (l_unprocessed_item)
l_unprocessed_item->unprocessed = true;
DAP_DELETE(l_candidate_hash_str);
break;
}
if (l_cs_debug) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive %s: candidate %s",
l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id,
......@@ -2226,7 +2204,6 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
l_message->hdr.attempt_num, l_candidate_hash_str);
s_session_attempt_new(l_session);
}
DAP_DEL_Z(l_candidate_hash_str);
} break;
case DAP_CHAIN_ESBOCS_MSG_TYPE_COMMIT_SIGN: {
......@@ -2249,18 +2226,17 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
char *l_candidate_hash_str = NULL;
HASH_FIND(hh, l_session->cur_round.store_items, l_candidate_hash, sizeof(dap_chain_hash_fast_t), l_store);
if (!l_store) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_WARNING, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive COMMIT_SIGN message for unknown candidate %s",
l_session->chain->net_name, l_session->chain->name,
l_session->cur_round.id, l_message->hdr.attempt_num,
l_candidate_hash_str);
DAP_DELETE(l_candidate_hash_str);
break;
}
if (l_cs_debug) {
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive COMMIT_SIGN: candidate %s",
l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id,
......@@ -2284,10 +2260,9 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
}
} else {
if (!l_candidate_hash_str)
l_candidate_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
l_candidate_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_WARNING, "Candidate: %s sign is incorrect: code %d", l_candidate_hash_str, l_sign_verified);
}
DAP_DEL_Z(l_candidate_hash_str);
} break;
case DAP_CHAIN_ESBOCS_MSG_TYPE_DIRECTIVE: {
......@@ -2316,12 +2291,11 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
break;
}
if (l_cs_debug) {
char *l_dirtective_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
char *l_dirtective_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive DIRECTIVE hash %s, size %zu",
l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id,
l_message->hdr.attempt_num, l_dirtective_hash_str, l_directive_size);
DAP_DELETE(l_dirtective_hash_str);
}
s_session_directive_process(l_session, l_directive, &l_directive_hash);
} break;
......@@ -2348,13 +2322,12 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
break;
}
if (l_cs_debug) {
char *l_directive_hash_str = dap_chain_hash_fast_to_str_new(l_candidate_hash);
char *l_directive_hash_str = dap_chain_hash_fast_to_str_static(l_candidate_hash);
log_it(L_MSG, "net:%s, chain:%s, round:%"DAP_UINT64_FORMAT_U", attempt:%hhu."
" Receive VOTE %s directive %s",
l_session->chain->net_name, l_session->chain->name, l_session->cur_round.id,
l_message->hdr.attempt_num, l_message->hdr.type == DAP_CHAIN_ESBOCS_MSG_TYPE_VOTE_FOR ?
"FOR" : "AGAINST", l_directive_hash_str);
DAP_DELETE(l_directive_hash_str);
}
if (l_message->hdr.type == DAP_CHAIN_ESBOCS_MSG_TYPE_VOTE_FOR) {
if (!l_session->cur_round.directive_applied &&
......@@ -2501,17 +2474,15 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_bl
if (!l_esbocs_pvt->poa_mode) {
// Compare signature with delegated keys
if (!dap_chain_net_srv_stake_key_delegated(&l_signing_addr)) {
char *l_bad_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast);
log_it(L_ATT, "Unknown PoS signer %s", l_bad_addr);
DAP_DELETE(l_bad_addr);
log_it(L_ATT, "Unknown PoS signer %s",
dap_chain_hash_fast_to_str_static(&l_signing_addr.data.hash_fast));
continue;
}
} else {
// Compare signature with auth_certs
if (!s_validator_check(&l_signing_addr, l_esbocs_pvt->poa_validators)) {
char *l_bad_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast);
log_it(L_ATT, "Unknown PoA signer %s", l_bad_addr);
DAP_DELETE(l_bad_addr);
log_it(L_ATT, "Unknown PoA signer %s",
dap_chain_hash_fast_to_str_static(&l_signing_addr.data.hash_fast));
continue;
}
}
......
......@@ -8,17 +8,6 @@
* @param a_addr
* @return
*/
json_object *dap_chain_addr_to_json(const dap_chain_addr_t *a_addr){
char *l_addr_str = dap_chain_addr_to_str(a_addr);
if (!l_addr_str) {
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_obj = json_object_new_string(l_addr_str);
DAP_DELETE(l_addr_str);
if (!l_obj) {
dap_json_rpc_allocation_error;
return NULL;
}
return l_obj;
json_object *dap_chain_addr_to_json(const dap_chain_addr_t *a_addr) {
return json_object_new_string(dap_chain_addr_to_str(a_addr));
}
......@@ -182,16 +182,7 @@ json_object *s_dap_chain_datum_token_tsd_to_json(dap_chain_datum_token_t *a_toke
}
uint256_t l_balance_native = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_balance_native);
char *l_balance = dap_chain_balance_print(l_balance_native);
if (!l_balance) {
json_object_put(l_jobj_tsd);
json_object_put(l_jobj_tsd_type);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_tsd_value = json_object_new_string(l_balance);
DAP_DELETE(l_balance);
json_object *l_jobj_tsd_value = json_object_new_string(dap_uint256_to_char(l_balance_native, NULL));
if (!l_jobj_tsd_value) {
json_object_put(l_jobj_tsd);
json_object_put(l_jobj_tsd_type);
......@@ -219,16 +210,8 @@ json_object *s_dap_chain_datum_token_tsd_to_json(dap_chain_datum_token_t *a_toke
}
uint128_t l_balance_native_old = uint128_0;
_dap_tsd_get_scalar(l_tsd, &l_balance_native_old);
char *l_balance = dap_chain_balance_print(GET_256_FROM_128(l_balance_native_old));
if (!l_balance) {
json_object_put(l_jobj_tsd);
json_object_put(l_jobj_tsd_type);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_tsd_value = json_object_new_string(l_balance);
DAP_DELETE(l_balance);
json_object *l_jobj_tsd_value =
json_object_new_string(dap_uint256_to_char(GET_256_FROM_128(l_balance_native_old), NULL));
if (!l_jobj_tsd_value) {
json_object_put(l_jobj_tsd_type);
json_object_put(l_jobj_tsd);
......@@ -278,22 +261,8 @@ json_object *s_dap_chain_datum_token_tsd_to_json(dap_chain_datum_token_t *a_toke
}
json_object_object_add(l_jobj_tsd, "warning", l_wgn_text);
} else {
char *l_hash_str = dap_chain_hash_fast_to_str_new(&l_hf);
if (!l_hash_str) {
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_hash = json_object_new_string(l_hash_str);
DAP_DELETE(l_hash_str);
if (l_jobj_hash) {
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object_object_add(l_jobj_tsd, "pkey", l_jobj_hash);
json_object_object_add(l_jobj_tsd, "pkey",
json_object_new_string(dap_chain_hash_fast_to_str_static(&l_hf)));
}
} else {
char *l_wgn_text = dap_strdup_printf("total_pkeys_add: <WRONG SIZE %u>\n", l_tsd->size);
......@@ -331,22 +300,8 @@ json_object *s_dap_chain_datum_token_tsd_to_json(dap_chain_datum_token_t *a_toke
}
json_object_object_add(l_jobj_tsd, "type", l_jobj_tsd_type);
if (l_tsd->size == sizeof(dap_chain_hash_fast_t)) {
char *l_hash_str = dap_chain_hash_fast_to_str_new((dap_chain_hash_fast_t *) l_tsd->data);
if (!l_hash_str) {
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_hash = json_object_new_string(l_hash_str);
DAP_DELETE(l_hash_str);
if (!l_jobj_hash) {
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object_object_add(l_jobj_tsd, "pkey", l_jobj_hash);
json_object_object_add(l_jobj_tsd, "pkey",
json_object_new_string(dap_chain_hash_fast_to_str_static((dap_chain_hash_fast_t*) l_tsd->data)));
} else {
char *l_wgn_text = dap_strdup_printf("total_pkeys_remove: <WRONG SIZE %u>\n", l_tsd->size);
if (!l_wgn_text) {
......@@ -384,18 +339,16 @@ json_object *s_dap_chain_datum_token_tsd_to_json(dap_chain_datum_token_t *a_toke
json_object_object_add(l_jobj_tsd, "type", l_jobj_tsd_type);
dap_chain_datum_token_tsd_delegate_from_stake_lock_t *l_tsd_section = _dap_tsd_get_object(l_tsd, dap_chain_datum_token_tsd_delegate_from_stake_lock_t);
json_object *l_jobj_ticker_token_from = json_object_new_string((char*)l_tsd_section->ticker_token_from);
char *balance = dap_chain_balance_to_coins(l_tsd_section->emission_rate);
if (!l_jobj_ticker_token_from || !balance) {
if (!l_jobj_ticker_token_from) {
json_object_put(l_jobj_ticker_token_from);
DAP_DEL_Z(balance);
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
dap_json_rpc_allocation_error;
return NULL;
}
json_object_object_add(l_jobj_tsd, "ticker_token_from", l_jobj_ticker_token_from);
char *balance; dap_uint256_to_char(l_tsd_section->emission_rate, &balance);
json_object *l_jobj_emission_rate = json_object_new_string(balance);
DAP_DEL_Z(balance);
if (!l_jobj_emission_rate) {
json_object_put(l_jobj_tsd);
json_object_put(l_tsd_array);
......@@ -698,7 +651,7 @@ json_object * dap_chain_datum_data_to_json(dap_chain_datum_t *a_datum) {
json_object *l_obj_data;
switch (a_datum->header.type_id) {
case DAP_CHAIN_DATUM_TX:
l_obj_data = dap_chain_datum_tx_to_json((dap_chain_datum_tx_t*)a_datum->data);
l_obj_data = dap_chain_datum_tx_to_json((dap_chain_datum_tx_t*)a_datum->data,NULL);
if (!l_obj_data) {
dap_json_rpc_error_add(CHAIN_DATUM_TO_JSON_ERR_CAN_NOT_SERIALIZATION_TX_TO_JSON,
"Can't convert DAP_CHAIN_DATUM_TX to JSON");
......
......@@ -23,14 +23,12 @@ json_object *s_dap_chain_datum_anchor_sign_to_json(byte_t * a_signs, size_t a_ce
json_object_object_add(l_jobj_sign, "warning", l_wrn_text);
continue;
}
char *l_hash_str = dap_chain_hash_fast_to_str_new(&l_pkey_hash);
json_object *l_jobj_hash_str = json_object_new_string(l_hash_str);
json_object *l_jobj_hash_str = json_object_new_string(dap_chain_hash_fast_to_str_static(&l_pkey_hash));
json_object *l_jobj_type_str = json_object_new_string(dap_sign_type_to_str(l_sign->header.type));
json_object *l_jobj_sign_size = json_object_new_uint64(l_sign->header.sign_size);
json_object_object_add(l_jobj_sign, "hash", l_jobj_hash_str);
json_object_object_add(l_jobj_sign, "type", l_jobj_type_str);
json_object_object_add(l_jobj_sign, "size", l_jobj_sign_size);
DAP_DEL_Z(l_hash_str);
json_object_array_add(l_jobs_signs, l_jobj_sign);
}
return l_jobs_signs;
......
#include "dap_json_rpc_chain_datum_decree.h"
#include "dap_json_rpc_chain_common.h"
#include "json.h"
......@@ -46,16 +47,9 @@ json_object *s_dap_chain_datum_decree_certs_dump_json(byte_t * a_signs, size_t a
continue;
}
char *l_hash_str = dap_chain_hash_fast_to_str_new(&l_pkey_hash);
if (!l_hash_str) {
json_object_put(l_jobj_signature);
json_object_put(l_jobj_signatures);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_hash_str = json_object_new_string(l_hash_str);
json_object *l_jobj_hash_str
= json_object_new_string(dap_chain_hash_fast_to_str_static(&l_pkey_hash));
if (!l_jobj_hash_str) {
DAP_DEL_Z(l_hash_str);
json_object_put(l_jobj_signature);
json_object_put(l_jobj_signatures);
dap_json_rpc_allocation_error;
......@@ -78,7 +72,6 @@ json_object *s_dap_chain_datum_decree_certs_dump_json(byte_t * a_signs, size_t a
dap_json_rpc_allocation_error;
return NULL;
}
DAP_DEL_Z(l_hash_str);
json_object_object_add(l_jobj_signature, "hash", l_jobj_hash_str);
json_object_object_add(l_jobj_signature, "type", l_jobj_type_str);
json_object_object_add(l_jobj_signature, "size", l_jobj_sign_size);
......@@ -181,18 +174,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
uint256_t l_fee_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_fee_value);
char *l_fee_value_str = dap_chain_balance_print(l_fee_value);
if (!l_fee_value_str) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_fee = json_object_new_string(l_fee_value_str);
DAP_DELETE(l_fee_value_str);
json_object *l_jobj_fee = json_object_new_string(dap_uint256_to_char(l_fee_value, NULL));
if (!l_jobj_fee) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -286,17 +268,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
uint256_t l_owner_min = {0};
_dap_tsd_get_scalar(l_tsd, &l_owner_min);
char *l_owner_min_str = dap_chain_balance_print(l_owner_min);
if (!l_owner_min_str) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_owner_min = json_object_new_string(l_owner_min_str);
json_object *l_jobj_owner_min = json_object_new_string(dap_uint256_to_char(l_owner_min, NULL));
if (!l_jobj_owner_min) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -307,7 +279,6 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
return NULL;
}
json_object_object_add(l_jobj_tsd, "owner_min", l_jobj_owner_min);
DAP_DELETE(l_owner_min_str);
} break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_FEE_WALLET: {
json_object *l_obj_tsd_type = json_object_new_string("DAP_CHAIN_DATUM_DECREE_TSD_TYPE_FEE_WALLET");
......@@ -337,19 +308,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
dap_chain_addr_t l_addr_fee_wallet = {0};
_dap_tsd_get_scalar(l_tsd, &l_addr_fee_wallet);
char *l_addr_fee_wallet_str = dap_chain_addr_to_str(&l_addr_fee_wallet);
if (!l_addr_fee_wallet_str) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_error_add(DAP_JSON_RPC_ERR_CODE_SERIALIZATION_ADDR_TO_JSON,
"Failed to serialize address to JSON.");
return NULL;
}
json_object *l_jobj_addr_fee_wallet = json_object_new_string(l_addr_fee_wallet_str);
DAP_DELETE(l_addr_fee_wallet_str);
json_object *l_jobj_addr_fee_wallet = dap_chain_addr_to_json(&l_addr_fee_wallet);
if (!l_jobj_addr_fee_wallet) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -371,18 +330,8 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
dap_hash_fast_t l_stake_tx = {0};
_dap_tsd_get_scalar(l_tsd, &l_stake_tx);
char *l_stake_tx_hash = dap_chain_hash_fast_to_str_new(&l_stake_tx);
if (!l_stake_tx_hash) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_tx_hash = json_object_new_string(l_stake_tx_hash);
DAP_DELETE(l_stake_tx_hash);
json_object *l_jobj_tx_hash =
json_object_new_string(dap_chain_hash_fast_to_str_static(&l_stake_tx));
if (!l_jobj_tx_hash) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -426,18 +375,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
uint256_t l_stake_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_stake_value);
char *l_stake_value_str = dap_chain_balance_print(l_stake_value);
if (!l_stake_value_str) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_stake_value = json_object_new_string(l_stake_value_str);
DAP_DELETE(l_stake_value_str);
json_object *l_jobj_stake_value = json_object_new_string(dap_uint256_to_char(l_stake_value, NULL));
if (!l_jobj_stake_value){
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -459,59 +397,17 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
dap_chain_addr_t l_stake_addr_signing = {0};
_dap_tsd_get_scalar(l_tsd, &l_stake_addr_signing);
char *l_stake_addr_signing_str = dap_chain_addr_to_str(&l_stake_addr_signing);
// dap_string_append_printf(a_str_out, "\tSigning addr: %s\n", l_stake_addr_signing_str);
dap_chain_hash_fast_t *l_pkey_signing = DAP_NEW(dap_chain_hash_fast_t);
if (!l_pkey_signing) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
memcpy(l_pkey_signing, l_stake_addr_signing.data.key, sizeof(dap_chain_hash_fast_t));
char *l_pkey_signing_str = dap_chain_hash_fast_to_str_new(l_pkey_signing);
if (!l_pkey_signing_str){
DAP_DELETE(l_pkey_signing);
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_stake_addr_signing = json_object_new_string(l_stake_addr_signing_str);
if (!l_jobj_stake_addr_signing) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
dap_chain_hash_fast_t l_pkey_signing = l_stake_addr_signing.data.hash_fast;
char *l_pkey_signing_str = dap_chain_hash_fast_to_str_static(&l_pkey_signing);
json_object *l_jobj_stake_addr_signing = dap_chain_addr_to_json(&l_stake_addr_signing);
json_object *l_jobj_pkey_signing = json_object_new_string(l_pkey_signing_str);
if (!l_jobj_pkey_signing) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object_object_add(l_jobj_tsd, "addr", l_jobj_stake_addr_signing);
json_object_object_add(l_jobj_tsd, "pkey", l_jobj_pkey_signing);
// char *l_pkey_signing_str = dap_strcmp(a_hash_out_type, "hex")
// ? dap_enc_base58_encode_hash_to_str(l_pkey_signing)
// : dap_chain_hash_fast_to_str_new(l_pkey_signing);
// dap_string_append_printf(a_str_out, "\tSigning pkey fingerprint: %s\n", l_pkey_signing_str);
DAP_DELETE(l_stake_addr_signing_str);
DAP_DELETE(l_pkey_signing_str);
DAP_DELETE(l_pkey_signing);
} break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_SIGNER_NODE_ADDR: {
json_object *l_obj_tsd_type = json_object_new_string(
......@@ -576,10 +472,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
uint256_t l_min_value = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_min_value);
char *l_min_value_str = dap_chain_balance_print(l_min_value);
json_object *l_jobj_min_value = json_object_new_string(l_min_value_str);
json_object_object_add(l_jobj_tsd, "value", l_jobj_min_value);
DAP_DELETE(l_min_value_str);
json_object_object_add(l_jobj_tsd, "value", json_object_new_string(dap_uint256_to_char(l_min_value, NULL)));
} break;
case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_MIN_SIGNERS_COUNT: {
json_object *l_obj_tsd_type = json_object_new_string(
......@@ -610,17 +503,7 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
}
uint256_t l_min_signers_count = uint256_0;
_dap_tsd_get_scalar(l_tsd, &l_min_signers_count);
char *l_min_signers_count_str = dap_chain_balance_print(l_min_signers_count);
if (!l_min_signers_count_str) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
json_object_put(l_jobj_type);
json_object_put(l_jobj_decree);
json_object_put(l_jobj_tsd);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_min_signers_count = json_object_new_string(l_min_signers_count_str);
json_object *l_jobj_min_signers_count = json_object_new_string(dap_uint256_to_char(l_min_signers_count, NULL));
if (!l_jobj_min_signers_count) {
json_object_put(l_json_tsd_array);
json_object_put(l_json_subtype);
......@@ -630,7 +513,6 @@ json_object *dap_chain_datum_decree_to_json(dap_chain_datum_decree_t *a_decree){
dap_json_rpc_allocation_error;
return NULL;
}
DAP_DELETE(l_min_signers_count_str);
json_object_object_add(l_jobj_tsd, "count", l_jobj_min_signers_count);
} break;
default: {
......
......@@ -166,16 +166,7 @@ json_object *dap_chain_datum_token_to_json(dap_chain_datum_token_t * a_token, si
dap_json_rpc_allocation_error;
return NULL;
}
char *l_premine_supply_str = dap_chain_balance_print(a_token->header_public.premine_supply);
if (!l_premine_supply_str) {
json_object_put(l_jobj_flags);
json_object_put(l_jobj_header);
json_object_put(l_jobj_token);
dap_json_rpc_allocation_error;
return NULL;
}
json_object *l_jobj_premine_supply = json_object_new_string(l_premine_supply_str);
DAP_DELETE(l_premine_supply_str);
json_object *l_jobj_premine_supply = json_object_new_string(dap_uint256_to_char(a_token->header_public.premine_supply, NULL));
if (!l_jobj_premine_supply) {
json_object_put(l_jobj_flags);
json_object_put(l_jobj_header);
......
......@@ -14,7 +14,7 @@
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx){
json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx,dap_chain_net_id_t *a_net_id){
json_object *l_obj_items = json_object_new_array();
if (!l_obj_items) {
dap_json_rpc_allocation_error;
......@@ -92,12 +92,12 @@ json_object *dap_chain_datum_tx_to_json(dap_chain_datum_tx_t *a_tx){
}
json_object_object_add(l_obj_item_data, "ts_expires", json_object_new_string(l_time_str));
json_object_object_add(l_obj_item_data, "subtype", json_object_new_string(dap_chain_tx_out_cond_subtype_to_str(((dap_chain_tx_out_cond_t*)item)->header.subtype)));
json_object_object_add(l_obj_item_data, "value", json_object_new_string(dap_chain_balance_to_coins(((dap_chain_tx_out_cond_t*)item)->header.value)));
json_object_object_add(l_obj_item_data, "value_datoshi", json_object_new_string(dap_chain_balance_print(((dap_chain_tx_out_cond_t*)item)->header.value)));
char * uid_str = DAP_NEW_SIZE(char, 32);
char *l_val_str, *l_val_datoshi_str = dap_uint256_to_char(((dap_chain_tx_out_cond_t*)item)->header.value, &l_val_str);
json_object_object_add(l_obj_item_data, "value", json_object_new_string(l_val_str));
json_object_object_add(l_obj_item_data, "value_datoshi", json_object_new_string(l_val_datoshi_str));
char uid_str[32];
sprintf(uid_str, "0x%016"DAP_UINT64_FORMAT_x"", ((dap_chain_tx_out_cond_t*)item)->header.srv_uid.uint64);
json_object_object_add(l_obj_item_data, "uid", json_object_new_string(uid_str));
DAP_DEL_Z(uid_str);
break;
case TX_ITEM_TYPE_OUT_EXT:
l_obj_item_type = json_object_new_string("TX_ITEM_TYPE_OUT_EXT");
......