Skip to content
Snippets Groups Projects
Commit 26f5e036 authored by Constantin P.'s avatar Constantin P. 💬
Browse files

Merge branch 'hotfix-multiwallet-python' into 'master'

[+] emit-delegate api exported for external use

See merge request !2013
parents 48f5a77f 579ce3f9
No related branches found
No related tags found
1 merge request!2013[+] emit-delegate api exported for external use
Pipeline #49469 passed with stage
in 16 minutes and 57 seconds
...@@ -74,7 +74,8 @@ int dap_chain_datum_tx_add_item(dap_chain_datum_tx_t **a_tx, const void *a_item) ...@@ -74,7 +74,8 @@ int dap_chain_datum_tx_add_item(dap_chain_datum_tx_t **a_tx, const void *a_item)
{ {
size_t size = 0; size_t size = 0;
dap_return_val_if_pass(!a_tx || !*a_tx || !(size = dap_chain_datum_item_tx_get_size(a_item, 0)), -1 ); dap_return_val_if_pass(!a_tx || !*a_tx || !(size = dap_chain_datum_item_tx_get_size(a_item, 0)), -1 );
dap_chain_datum_tx_t *tx_new = DAP_REALLOC_RET_VAL_IF_FAIL( *a_tx, dap_chain_datum_tx_get_size(*a_tx) + size, -2 ); size_t new_size = dap_chain_datum_tx_get_size(*a_tx) + size;
dap_chain_datum_tx_t *tx_new = DAP_REALLOC_RET_VAL_IF_FAIL( *a_tx, new_size, -2 );
memcpy((uint8_t*) tx_new->tx_items + tx_new->header.tx_items_size, a_item, size); memcpy((uint8_t*) tx_new->tx_items + tx_new->header.tx_items_size, a_item, size);
tx_new->header.tx_items_size += size; tx_new->header.tx_items_size += size;
*a_tx = tx_new; *a_tx = tx_new;
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "dap_chain_net_srv_emit_delegate.h" #include "dap_chain_net_srv_emit_delegate.h"
#include "dap_chain_node_cli_cmd.h" #include "dap_chain_node_cli_cmd.h"
enum emit_delegation_error { enum emit_delegation_error {
DAP_NO_ERROR = 0, DAP_NO_ERROR = 0,
ERROR_MEMORY, ERROR_MEMORY,
...@@ -287,7 +288,7 @@ static bool s_is_key_present(dap_chain_tx_out_cond_t *a_cond, dap_enc_key_t *a_e ...@@ -287,7 +288,7 @@ static bool s_is_key_present(dap_chain_tx_out_cond_t *a_cond, dap_enc_key_t *a_e
return false; return false;
} }
static dap_chain_datum_tx_t *s_taking_tx_create(json_object *a_json_arr_reply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key, dap_chain_datum_tx_t *dap_chain_net_srv_emit_delegate_taking_tx_create(json_object *a_json_arr_reply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key,
dap_chain_addr_t *a_addr_to, uint256_t a_value, uint256_t a_fee, dap_hash_fast_t *a_tx_in_hash) dap_chain_addr_t *a_addr_to, uint256_t a_value, uint256_t a_fee, dap_hash_fast_t *a_tx_in_hash)
{ {
// create empty transaction // create empty transaction
...@@ -355,7 +356,8 @@ static dap_chain_datum_tx_t *s_taking_tx_create(json_object *a_json_arr_reply, d ...@@ -355,7 +356,8 @@ static dap_chain_datum_tx_t *s_taking_tx_create(json_object *a_json_arr_reply, d
if (!l_out_cond) if (!l_out_cond)
m_tx_fail(ERROR_COMPOSE, c_error_memory_alloc); m_tx_fail(ERROR_COMPOSE, c_error_memory_alloc);
l_out_cond->header.value = l_value_back; l_out_cond->header.value = l_value_back;
dap_chain_datum_tx_add_item(&l_tx, (const uint8_t *)l_out_cond); if (-1 == dap_chain_datum_tx_add_item(&l_tx, (const uint8_t *)l_out_cond))
m_tx_fail(ERROR_COMPOSE, "Cant add emission cond output");
DAP_DELETE(l_out_cond); DAP_DELETE(l_out_cond);
} }
...@@ -390,7 +392,7 @@ static dap_chain_datum_tx_t *s_taking_tx_create(json_object *a_json_arr_reply, d ...@@ -390,7 +392,7 @@ static dap_chain_datum_tx_t *s_taking_tx_create(json_object *a_json_arr_reply, d
#undef m_tx_fail #undef m_tx_fail
static dap_chain_datum_tx_t *s_taking_tx_sign(json_object *a_json_arr_reply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key, dap_chain_datum_tx_t *a_tx_in) dap_chain_datum_tx_t *dap_chain_net_srv_emit_delegate_taking_tx_sign(json_object *a_json_arr_reply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key, dap_chain_datum_tx_t *a_tx_in)
{ {
int l_cond_idx = 0; int l_cond_idx = 0;
dap_chain_tx_out_cond_t *l_cond = dap_chain_datum_tx_out_cond_get(a_tx_in, DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_EMIT_DELEGATE, &l_cond_idx); dap_chain_tx_out_cond_t *l_cond = dap_chain_datum_tx_out_cond_get(a_tx_in, DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_EMIT_DELEGATE, &l_cond_idx);
...@@ -614,7 +616,7 @@ static int s_cli_take(int a_argc, char **a_argv, int a_arg_index, json_object ** ...@@ -614,7 +616,7 @@ static int s_cli_take(int a_argc, char **a_argv, int a_arg_index, json_object **
return ERROR_VALUE; return ERROR_VALUE;
} }
// Create emission from conditional transaction // Create emission from conditional transaction
dap_chain_datum_tx_t *l_tx = s_taking_tx_create(*a_json_arr_reply, a_net, l_enc_key, l_addr, l_value, l_fee, &l_tx_in_hash); dap_chain_datum_tx_t *l_tx = dap_chain_net_srv_emit_delegate_taking_tx_create(*a_json_arr_reply, a_net, l_enc_key, l_addr, l_value, l_fee, &l_tx_in_hash);
DAP_DEL_MULTY(l_enc_key, l_addr); DAP_DEL_MULTY(l_enc_key, l_addr);
if (!l_tx) { if (!l_tx) {
dap_json_rpc_error_add(*a_json_arr_reply, ERROR_CREATE, "Can't compose transaction for delegated emission"); dap_json_rpc_error_add(*a_json_arr_reply, ERROR_CREATE, "Can't compose transaction for delegated emission");
...@@ -669,7 +671,7 @@ static int s_cli_sign(int a_argc, char **a_argv, int a_arg_index, json_object ** ...@@ -669,7 +671,7 @@ static int s_cli_sign(int a_argc, char **a_argv, int a_arg_index, json_object **
dap_chain_wallet_close(l_wallet); dap_chain_wallet_close(l_wallet);
// Create emission from conditional transaction // Create emission from conditional transaction
dap_chain_datum_tx_t *l_tx = s_taking_tx_sign(*a_json_arr_reply, a_net, l_enc_key, (dap_chain_datum_tx_t *)l_tx_in->data); dap_chain_datum_tx_t *l_tx = dap_chain_net_srv_emit_delegate_taking_tx_sign(*a_json_arr_reply, a_net, l_enc_key, (dap_chain_datum_tx_t *)l_tx_in->data);
DAP_DELETE(l_enc_key); DAP_DELETE(l_enc_key);
if (!l_tx) { if (!l_tx) {
dap_json_rpc_error_add(*a_json_arr_reply, ERROR_CREATE, "Can't compose transaction for delegated emission"); dap_json_rpc_error_add(*a_json_arr_reply, ERROR_CREATE, "Can't compose transaction for delegated emission");
......
...@@ -3,6 +3,15 @@ ...@@ -3,6 +3,15 @@
#define DAP_CHAIN_NET_SRV_EMIT_DELEGATE_ID 0x07 #define DAP_CHAIN_NET_SRV_EMIT_DELEGATE_ID 0x07
#define DAP_CHAIN_NET_SRV_EMIT_DELEGATE_TSD_WRITEOFF 0x14 #define DAP_CHAIN_NET_SRV_EMIT_DELEGATE_TSD_WRITEOFF 0x14
#include "dap_chain_datum_tx.h"
#include "dap_chain_mempool.h"
int dap_chain_net_srv_emit_delegate_init(); int dap_chain_net_srv_emit_delegate_init();
void dap_chain_net_srv_bridge_deinit(); void dap_chain_net_srv_emit_delegate_deinit();
dap_chain_datum_tx_t *dap_chain_net_srv_emit_delegate_taking_tx_create(json_object *a_json_arr_rweply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key,
dap_chain_addr_t *a_addr_to, uint256_t a_value, uint256_t a_fee, dap_hash_fast_t *a_tx_in_hash);
dap_chain_datum_tx_t *dap_chain_net_srv_emit_delegate_taking_tx_sign(json_object *a_json_arr_reply, dap_chain_net_t *a_net, dap_enc_key_t *a_enc_key, dap_chain_datum_tx_t *a_tx_in);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment