diff --git a/modules/common/dap_chain_datum_decree.c b/modules/common/dap_chain_datum_decree.c index 378cd6d03035fc4d955e814772b31830c299e5eb..62d1130daa1e420a4dff8d5c4e48aae30d1193c8 100644 --- a/modules/common/dap_chain_datum_decree.c +++ b/modules/common/dap_chain_datum_decree.c @@ -318,6 +318,13 @@ void dap_chain_datum_decree_dump_json(json_object *a_json_out, dap_chain_datum_d dap_sign_type_t l_sign_type = { .type = l_type }; json_object_object_add(a_json_out, "Signature type", json_object_new_string(dap_sign_type_to_str(l_sign_type))); break; + case DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_PKEY: + if (l_tsd->size != dap_pkey_get_size((dap_pkey_t *)(l_tsd->data))) { + json_object_object_add(a_json_out, "pkey type", json_object_new_string("WRONG SIZE")); + break; + } + json_object_object_add(a_json_out, "pkey type", json_object_new_string( dap_pkey_type_to_str(((dap_pkey_t *)(l_tsd->data))->header.type) )); + break; default: json_object_object_add(a_json_out, "UNKNOWN_TYPE_TSD_SECTION", json_object_new_string("")); break; 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 497c05e900a4386e93a94566088e99c04770aa7a..6aa3304760abcbbe36ca8e21fe05f2e8b48eb683 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 @@ -1147,18 +1147,6 @@ dap_chain_datum_decree_t *dap_chain_net_srv_stake_decree_approve(dap_chain_net_t *(dap_chain_addr_t*)(l_tsd->data) = l_tx_out_cond->subtype.srv_stake_pos_delegate.signing_addr; l_tsd_list = dap_list_append(l_tsd_list, l_tsd); - l_total_tsd_size += sizeof(dap_tsd_t) + sizeof(dap_chain_node_addr_t); - l_tsd = DAP_NEW_Z_SIZE(dap_tsd_t, l_total_tsd_size); - if (!l_tsd) { - log_it(L_CRITICAL, "%s", c_error_memory_alloc); - dap_list_free_full(l_tsd_list, NULL); - return NULL; - } - l_tsd->type = DAP_CHAIN_DATUM_DECREE_TSD_TYPE_NODE_ADDR; - l_tsd->size = sizeof(dap_chain_node_addr_t); - *(dap_chain_node_addr_t*)(l_tsd->data) = l_tx_out_cond->subtype.srv_stake_pos_delegate.signer_node_addr; - l_tsd_list = dap_list_append(l_tsd_list, l_tsd); - if (DAP_SIGN_GET_PKEY_HASHING_FLAG(l_tx_out_cond->subtype.srv_stake_pos_delegate.flags)) { dap_tsd_t *l_tsd = dap_tsd_find(l_tx_out_cond->tsd, l_tx_out_cond->tsd_size, DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_PKEYS_ADD); if (!l_tsd) { @@ -1175,6 +1163,18 @@ dap_chain_datum_decree_t *dap_chain_net_srv_stake_decree_approve(dap_chain_net_t l_tsd_list = dap_list_append(l_tsd_list, l_tsd); } } + + l_total_tsd_size += sizeof(dap_tsd_t) + sizeof(dap_chain_node_addr_t); + l_tsd = DAP_NEW_Z_SIZE(dap_tsd_t, l_total_tsd_size); + if (!l_tsd) { + log_it(L_CRITICAL, "%s", c_error_memory_alloc); + dap_list_free_full(l_tsd_list, NULL); + return NULL; + } + l_tsd->type = DAP_CHAIN_DATUM_DECREE_TSD_TYPE_NODE_ADDR; + l_tsd->size = sizeof(dap_chain_node_addr_t); + *(dap_chain_node_addr_t*)(l_tsd->data) = l_tx_out_cond->subtype.srv_stake_pos_delegate.signer_node_addr; + l_tsd_list = dap_list_append(l_tsd_list, l_tsd); l_decree = DAP_NEW_Z_SIZE(dap_chain_datum_decree_t, sizeof(dap_chain_datum_decree_t) + l_total_tsd_size); if (!l_decree) {