diff --git a/dap-sdk b/dap-sdk
index 1f0c4caf7a9cec9ddee67e9019e337c4c9278168..5d4221856c689086adb730cbc530111d1ea1e21d 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit 1f0c4caf7a9cec9ddee67e9019e337c4c9278168
+Subproject commit 5d4221856c689086adb730cbc530111d1ea1e21d
diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c
index 7dbf04b51274ef029b745509fa14f186eb41158e..44fe70e5886e581aed4c1eaa83e100cd0b42cf2f 100644
--- a/modules/mempool/dap_chain_mempool.c
+++ b/modules/mempool/dap_chain_mempool.c
@@ -1449,7 +1449,7 @@ void chain_mempool_proc(struct dap_http_simple *cl_st, void * arg)
  * @param sh HTTP server instance
  * @param url URL string
  */
-void dap_chain_mempool_add_proc(dap_http_t * a_http_server, const char * a_url)
+void dap_chain_mempool_add_proc(dap_http_server_t * a_http_server, const char * a_url)
 {
     dap_http_simple_proc_add(a_http_server, a_url, 4096, chain_mempool_proc);
 }
diff --git a/modules/mempool/include/dap_chain_mempool.h b/modules/mempool/include/dap_chain_mempool.h
index d18df1e803e53ec819a4f0635fe31e00efb368d9..a2221296a2a3e5de36bd2360878f659bcb4b53a9 100644
--- a/modules/mempool/include/dap_chain_mempool.h
+++ b/modules/mempool/include/dap_chain_mempool.h
@@ -4,7 +4,7 @@
 #include "dap_chain_net.h"
 #include "dap_chain_datum.h"
 #include "dap_chain_ledger.h"
-#include "dap_http.h"
+#include "dap_http_server.h"
 #include "dap_cert.h"
 #include "dap_chain_block_cache.h"
 /*
@@ -56,7 +56,7 @@ dap_datum_mempool_t * dap_datum_mempool_deserialize(uint8_t *datum_mempool_str,
 void dap_datum_mempool_clean(dap_datum_mempool_t *datum);
 void dap_datum_mempool_free(dap_datum_mempool_t *datum);
 
-void dap_chain_mempool_add_proc(dap_http_t * a_http_server, const char * a_url);
+void dap_chain_mempool_add_proc(dap_http_server_t * a_http_server, const char * a_url);
 
 void dap_chain_mempool_filter(dap_chain_t *a_chain, int *a_removed);
 
diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c
index 227d5c0bd2c7d138c07e75a955ec20bdee7ca103..bc549582557f87509b80b4e74fcf1188a543bc3a 100644
--- a/modules/net/dap_chain_ledger.c
+++ b/modules/net/dap_chain_ledger.c
@@ -4783,6 +4783,7 @@ int dap_ledger_tx_load(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, dap_c
  */
 void dap_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db)
 {
+    dap_return_if_fail(a_ledger);
     dap_ledger_private_t *l_ledger_pvt = PVT(a_ledger);
     pthread_rwlock_wrlock(&l_ledger_pvt->ledger_rwlock);
     pthread_rwlock_wrlock(&l_ledger_pvt->tokens_rwlock);
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index d85f0058f2441c2996521ad0e88c8f71bcf2ed8b..0f5ca1b87e4100f4ab84a3dc0d0bec60538d25ef 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -181,6 +181,9 @@ typedef struct dap_chain_net_pvt{
     uint16_t permanent_links_count;
     dap_stream_node_addr_t *permanent_links; // TODO realize permanent links from config
 
+    uint16_t poa_nodes_count;
+    dap_stream_node_addr_t *poa_nodes_addrs;
+
     uint16_t seed_nodes_count;
     struct sockaddr_in *seed_nodes_ipv4;
     struct sockaddr_in6 *seed_nodes_ipv6;       // TODO
@@ -577,6 +580,7 @@ static void s_fill_links_from_root_aliases(dap_chain_net_t * a_net)
         dap_chain_node_info_t l_link_node_info = {};
         l_link_node_info.hdr.ext_addr_v4 = l_net_pvt->seed_nodes_ipv4[i].sin_addr;
         l_link_node_info.hdr.ext_port = l_net_pvt->seed_nodes_ipv4[i].sin_port;
+        l_link_node_info.hdr.address = l_net_pvt->poa_nodes_addrs[i];
         if (s_net_link_add(a_net, &l_link_node_info) > 0)    // Maximum links count reached
             break;
     }
@@ -2414,11 +2418,14 @@ void dap_chain_net_delete(dap_chain_net_t *a_net)
     }
     if (PVT(a_net)->main_timer)
         dap_interval_timer_delete(PVT(a_net)->main_timer);
+    DAP_DEL_Z(PVT(a_net)->poa_nodes_addrs);
     DAP_DEL_Z(PVT(a_net)->seed_nodes_ipv4);
     DAP_DEL_Z(PVT(a_net)->seed_nodes_ipv6);
     DAP_DEL_Z(PVT(a_net)->node_info);
-    dap_ledger_purge(a_net->pub.ledger, true);
-    dap_ledger_handle_free(a_net->pub.ledger);
+    if (a_net->pub.ledger) {
+        dap_ledger_purge(a_net->pub.ledger, true);
+        dap_ledger_handle_free(a_net->pub.ledger);
+    }
     DAP_DELETE(a_net);
 }
 
@@ -2506,6 +2513,28 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
     // Wait time before reconnect attempt with same link
     l_net_pvt->reconnect_delay = dap_config_get_item_int16_default(l_cfg, "general", "reconnect_delay", 10);
 
+    char **l_poa_nodes_addrs = dap_config_get_array_str(l_cfg, "general", "seed_nodes_addrs", &l_net_pvt->poa_nodes_count);
+    if (!l_net_pvt->poa_nodes_count) {
+        log_it(L_ERROR, "Can't read seed nodes addresses");
+        dap_chain_net_delete(l_net);
+        dap_config_close(l_cfg);
+        return -15;
+    }
+    l_net_pvt->poa_nodes_addrs = DAP_NEW_SIZE(dap_stream_node_addr_t, l_net_pvt->poa_nodes_count * sizeof(dap_stream_node_addr_t));
+    if (!l_net_pvt->poa_nodes_addrs) {
+        log_it(L_CRITICAL, g_error_memory_alloc);
+        dap_chain_net_delete(l_net);
+        dap_config_close(l_cfg);
+        return -1;
+    }
+    for (uint16_t i = 0; i < l_net_pvt->poa_nodes_count; i++) {
+        if (dap_stream_node_addr_from_str(l_net_pvt->poa_nodes_addrs + i, l_poa_nodes_addrs[i])) {
+            log_it(L_ERROR, "Incorrect format for address #%hu", i);
+            dap_chain_net_delete(l_net);
+            dap_config_close(l_cfg);
+            return -16;
+        }
+    }
     uint16_t l_seed_nodes_ipv4_len = 0;
     char **l_seed_nodes_ipv4 = dap_config_get_array_str(l_cfg, "general", "seed_nodes_ipv4", &l_seed_nodes_ipv4_len);
     uint16_t l_seed_nodes_ipv6_len = 0;
@@ -2519,9 +2548,12 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
     if (l_seed_nodes_port_len) {
         if ((l_seed_nodes_ipv4_len && l_seed_nodes_ipv4_len != l_seed_nodes_port_len) ||
                 (l_seed_nodes_ipv6_len && l_seed_nodes_ipv6_len != l_seed_nodes_port_len) ||
-                (l_seed_nodes_hostnames_len && l_seed_nodes_hostnames_len != l_seed_nodes_port_len)) {
+                (l_seed_nodes_hostnames_len && l_seed_nodes_hostnames_len != l_seed_nodes_port_len) ||
+                (!l_seed_nodes_ipv4_len && !l_seed_nodes_ipv6_len && !l_seed_nodes_hostnames_len)) {
             log_it (L_ERROR, "Configuration mistake for seed nodes");
-
+            dap_chain_net_delete(l_net);
+            dap_config_close(l_cfg);
+            return -6;
         }
         l_net_pvt->seed_nodes_count = l_seed_nodes_port_len;
     } else {
@@ -2530,8 +2562,23 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
         l_net_pvt->seed_nodes_count = l_bootstrap_nodes_len;
     }
     log_it (L_DEBUG, "Read %u seed nodes params", l_net_pvt->seed_nodes_count);
-    l_net_pvt->seed_nodes_ipv4 = DAP_NEW_SIZE(struct sockaddr_in, l_net_pvt->seed_nodes_count * sizeof(struct sockaddr_in));
-    l_net_pvt->seed_nodes_ipv6 = DAP_NEW_SIZE(struct sockaddr_in6, l_net_pvt->seed_nodes_count * sizeof(struct sockaddr_in6));
+    if (l_seed_nodes_ipv6_len) {
+        l_net_pvt->seed_nodes_ipv6 = DAP_NEW_SIZE(struct sockaddr_in6, l_net_pvt->seed_nodes_count * sizeof(struct sockaddr_in6));
+        if (!l_net_pvt->seed_nodes_ipv6) {
+            log_it(L_CRITICAL, g_error_memory_alloc);
+            dap_chain_net_delete(l_net);
+            dap_config_close(l_cfg);
+            return -1;
+        }
+    } else {   // Just only IPv4 can be resolved for now
+        l_net_pvt->seed_nodes_ipv4 = DAP_NEW_SIZE(struct sockaddr_in, l_net_pvt->seed_nodes_count * sizeof(struct sockaddr_in));
+        if (!l_net_pvt->seed_nodes_ipv4) {
+            log_it(L_CRITICAL, g_error_memory_alloc);
+            dap_chain_net_delete(l_net);
+            dap_config_close(l_cfg);
+            return -1;
+        }
+    }
     // Load seed nodes from cfg file
     for (uint16_t i = 0; i < l_net_pvt->seed_nodes_count; i++) {
         char *l_node_hostname = NULL;
@@ -2551,16 +2598,16 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
                 l_node_port = atoi(l_bootstrap_port_str);
             l_node_hostname = l_bootstrap_nodes[i];
         }
-        if (!l_node_port)
-            l_node_port = dap_config_get_item_uint16_default(g_config, "server", "listen_port_tcp", 8079);
         if (!l_node_port) {
             log_it(L_ERROR, "Can't find port for seed node #%hu", i);
             dap_chain_net_delete(l_net);
             dap_config_close(l_cfg);
             return -12;
         } else {
-            l_net_pvt->seed_nodes_ipv4[i].sin_port = l_node_port;
-            l_net_pvt->seed_nodes_ipv6[i].sin6_port = l_node_port;
+            if (l_seed_nodes_ipv6_len)
+                l_net_pvt->seed_nodes_ipv6[i].sin6_port = l_node_port;
+            else
+                l_net_pvt->seed_nodes_ipv4[i].sin_port = l_node_port;
         }
         if (l_node_hostname) {
             struct in_addr l_res = {};
@@ -2845,7 +2892,7 @@ int s_net_load(dap_chain_net_t *a_net)
         }
         dap_chain_net_add_poa_certs_to_cluster(l_net, l_cluster);
         DAP_DELETE(l_gdb_groups_mask);
-        if (l_net->pub.chains == l_chain)
+        if (l_net->pub.chains == l_chain)   // Pointer for first mempool cluster in global double-linked list of clusters
             l_net_pvt->mempool_clusters = l_cluster;
     }
     // Service orders cluster
@@ -3042,11 +3089,8 @@ void dap_chain_net_srv_order_add_notify_callback(dap_chain_net_t *a_net, dap_sto
 int dap_chain_net_add_poa_certs_to_cluster(dap_chain_net_t *a_net, dap_global_db_cluster_t *a_cluster)
 {
     dap_return_val_if_fail(a_net && a_cluster, -1);
-    for (dap_list_t *it = a_net->pub.keys; it; it = it->next) {
-        dap_pkey_t *l_pkey = it->data;
-        dap_stream_node_addr_t l_poa_addr = dap_stream_node_addr_from_pkey(l_pkey);
-        dap_global_db_cluster_member_add(a_cluster, &l_poa_addr, DAP_GDB_MEMBER_ROLE_ROOT);
-    }
+    for (uint16_t i = 0; i < PVT(a_net)->poa_nodes_count; i++)
+        dap_global_db_cluster_member_add(a_cluster, PVT(a_net)->poa_nodes_addrs + i, DAP_GDB_MEMBER_ROLE_ROOT);
     return 0;
 }
 
diff --git a/modules/net/dap_chain_net_news.h b/modules/net/dap_chain_net_news.h
deleted file mode 100644
index d3c82ce4658987c30e207472e51015d55c326c0f..0000000000000000000000000000000000000000
--- a/modules/net/dap_chain_net_news.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Authors:
- * Alexander Lysikov <alexander.lysikov@demlabs.net>
- * DeM Labs Inc.   https://demlabs.net
- * Kelvin Project https://github.com/kelvinblockchain
- * Copyright  (c) 2020
- * All rights reserved.
-
- This file is part of DAP (Deus Applications Prototypes) the open source project
-
- DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- DAP is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "dap_http.h"
-
-int dap_chain_net_news_init(dap_http_t * a_http);
-void dap_chain_net_srv_vpn_cdb_news_cache_reset(void);
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 9fcfa027f558f66930d766a816c8088d0fd264f5..59765c7bd96b0bf9302c97582bb9d33bde701676 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -82,12 +82,8 @@
 #include "dap_chain_block.h"
 #include "dap_chain_cs_blocks.h"
 
-#ifndef _WIN32
-#include "dap_chain_net_news.h"
-#endif
 #include "dap_chain_cell.h"
 
-
 #include "dap_enc_base64.h"
 #include "json.h"
 #ifdef DAP_OS_UNIX
@@ -3448,7 +3444,11 @@ static int mempool_delete_for_chain(dap_chain_t *a_chain, const char * a_datum_h
         char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain);
         uint8_t *l_data_tmp = dap_global_db_get_sync(l_gdb_group_mempool, a_datum_hash_str,
                                                      NULL, NULL, NULL);
-        if(l_data_tmp && dap_global_db_del_sync(l_gdb_group_mempool, a_datum_hash_str) == 0) {
+        if (!l_data_tmp) {
+            DAP_DELETE(l_gdb_group_mempool);
+            return 1;
+        }
+        if (dap_global_db_del_sync(l_gdb_group_mempool, a_datum_hash_str) == 0) {
             char *l_msg_str = dap_strdup_printf("Datum %s deleted", a_datum_hash_str);
             json_object *l_msg = json_object_new_string(l_msg_str);
             DAP_DELETE(l_msg_str);
@@ -3465,7 +3465,7 @@ static int mempool_delete_for_chain(dap_chain_t *a_chain, const char * a_datum_h
         } else {
             DAP_DELETE(l_gdb_group_mempool);
             DAP_DELETE(l_data_tmp);
-            return 1;
+            return 2;
         }
 }
 
@@ -3501,7 +3501,7 @@ int _cmd_mempool_delete(dap_chain_net_t *a_net, dap_chain_t *a_chain, const char
         res = mempool_delete_for_chain(a_chain, a_datum_hash, a_json_reply);
     }
     if (res) {
-        char *l_msg_str = dap_strdup_printf("Error! Can't find datum %s", a_datum_hash);
+        char *l_msg_str = dap_strdup_printf("Error! Can't %s datum %s", res == 1 ? "find" : "delete", a_datum_hash);
         if (!l_msg_str) {
             dap_json_rpc_allocation_error;
             return DAP_JSON_RPC_ERR_CODE_MEMORY_ALLOCATED;
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index fadccfe53697b5ff48d867299c1c51717c43c5b9..eac80ec86b27bd2f7ef3182264e0eaaf13ec123c 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -268,8 +268,17 @@ static void s_stage_connected_callback(dap_client_t *a_client, void *a_arg)
             l_node_client->callbacks.connected(l_node_client, l_node_client->callbacks_arg);
         dap_stream_ch_chain_net_pkt_hdr_t l_announce = { .version = DAP_STREAM_CH_CHAIN_NET_PKT_VERSION,
                                                          .net_id  = l_node_client->net->pub.id };
+        // Announce net on downlink
         dap_client_write_unsafe(a_client, 'N', DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ANNOUNCE,
                                          &l_announce, sizeof(l_announce));
+        // Add uplink to clusters
+        dap_stream_node_addr_t *l_uplink_addr = &l_node_client->info->hdr.address;
+        dap_global_db_cluster_t *it;
+        DL_FOREACH(dap_global_db_instance_get_default()->clusters, it)
+            if (dap_cluster_member_find_unsafe(it->role_cluster, l_uplink_addr))
+                dap_cluster_member_add(it->links_cluster, l_uplink_addr, 0, NULL);
+        dap_chain_net_add_cluster_link(l_node_client->net, l_uplink_addr);
+
         pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_ESTABLISHED;
         if (s_stream_ch_chain_debug_more)
diff --git a/modules/net/include/dap_chain_net_bugreport.h b/modules/net/include/dap_chain_net_bugreport.h
index c930015f0b79897ba7502452b74da80595b89872..d4ca32a594bfc38129acb7504ea0dfe72fde2ade 100644
--- a/modules/net/include/dap_chain_net_bugreport.h
+++ b/modules/net/include/dap_chain_net_bugreport.h
@@ -22,6 +22,6 @@
  along with any DAP based project.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "dap_http.h"
+#include "dap_http_server.h"
 
-int dap_chain_net_bugreport_init(dap_http_t * a_http);
+int dap_chain_net_bugreport_init(dap_http_server_t * a_http);
diff --git a/modules/net/srv/dap_chain_net_srv.c b/modules/net/srv/dap_chain_net_srv.c
index 20e33178fc72ff76962a576110d4ded2f872c32e..be4dc5d5c7db959bbf037181267497274b9cf6d6 100644
--- a/modules/net/srv/dap_chain_net_srv.c
+++ b/modules/net/srv/dap_chain_net_srv.c
@@ -865,7 +865,7 @@ dap_chain_net_srv_price_t * dap_chain_net_srv_get_price_from_order(dap_chain_net
     }
 
     uint64_t l_max_price_cfg = dap_config_get_item_uint64_default(g_config, a_config_section, "max_price", 0xFFFFFFFFFFFFFFF);
-    if (l_order->node_addr.uint64 != l_node_addr->uint64 &&
+    if (l_order->node_addr.uint64 != g_node_addr.uint64 &&
         l_order->srv_uid.uint64 != a_srv->uid.uint64) {
         DAP_DELETE(l_price);
         DAP_DEL_Z(l_order);
@@ -970,7 +970,7 @@ int dap_chain_net_srv_price_apply_from_my_order(dap_chain_net_srv_t *a_srv, cons
             log_it(L_ERROR, "Invalid order: NULL. Skip order.");
             continue;
         }
-        if (l_order->node_addr.uint64 == l_node_addr->uint64 &&
+        if (l_order->node_addr.uint64 == g_node_addr.uint64 &&
             l_order->srv_uid.uint64 == a_srv->uid.uint64) {
             l_err_code = 0;
             dap_chain_net_srv_price_t *l_price = DAP_NEW_Z(dap_chain_net_srv_price_t);
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 d448dfa7877f708e65e56fbca106fe53e04aae14..0d49e1cbf4a280689545bf7531f2aeff27bb3731 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
@@ -2547,7 +2547,8 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, void **a_str_reply)
                     char l_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE];
                     dap_chain_hash_fast_to_str(&l_datum_hash, l_hash_str, sizeof(l_hash_str));
                     dap_string_append_printf(l_str_tmp,"%s \n",spaces);
-                    dap_string_append_printf(l_str_tmp, "%s \n", dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_datum_tx->header.ts_created));
+                    dap_time_to_str_rfc822(buf, DAP_TIME_STR_SIZE, l_datum_tx->header.ts_created);
+                    dap_string_append_printf(l_str_tmp, "%s \n", buf);
                     dap_string_append_printf(l_str_tmp,"tx_hash:\t%s \n",l_hash_str);
 
                     l_signing_addr_str = dap_chain_addr_to_str(&l_tx_out_cond->subtype.srv_stake_pos_delegate.signing_addr);
diff --git a/modules/service/xchange/dap_chain_net_srv_xchange.c b/modules/service/xchange/dap_chain_net_srv_xchange.c
index d7a33983479c3a3f272a53d1c9bd83047d8d69d3..3e0630c055cfac649bb14a19887b240afc3ddd91 100644
--- a/modules/service/xchange/dap_chain_net_srv_xchange.c
+++ b/modules/service/xchange/dap_chain_net_srv_xchange.c
@@ -1132,11 +1132,7 @@ static int s_cli_srv_xchange_order(int a_argc, char **a_argv, int a_arg_index, v
                     return -15;
                 }
             }
-            if (compare256(l_value, l_value_sell) == -1) {
-                dap_cli_server_cmd_set_reply_text(a_str_reply, "%s\nNot enough cash in specified wallet", l_sign_str);
-                dap_chain_wallet_close(l_wallet);
-                return -12;
-            }
+
             // Create the price
             dap_chain_net_srv_xchange_price_t *l_price = DAP_NEW_Z(dap_chain_net_srv_xchange_price_t);
             if (!l_price) {
@@ -2509,7 +2505,6 @@ int dap_chain_net_srv_xchange_create(dap_chain_net_t *a_net, const char *a_token
         log_it(L_CRITICAL, "Memory allocation error");
         return XCHANGE_CREATE_ERROR_MEMORY_ALLOCATED;
     }
-    l_price->wallet_str = dap_strdup(a_wallet->name);
     dap_stpcpy(l_price->token_sell, a_token_sell);
     l_price->net = a_net;
     dap_stpcpy(l_price->token_buy, a_token_buy);
@@ -2519,7 +2514,6 @@ int dap_chain_net_srv_xchange_create(dap_chain_net_t *a_net, const char *a_token
     // Create conditional transaction
     dap_chain_datum_tx_t *l_tx = s_xchange_tx_create_request(l_price, a_wallet);
     if (!l_tx) {
-        DAP_DELETE(l_price->wallet_str);
         DAP_DELETE(l_price);
         return XCHANGE_CREATE_ERROR_CAN_NOT_COMPOSE_THE_CONDITIONAL_TRANSACTION;
     }
@@ -2527,7 +2521,6 @@ int dap_chain_net_srv_xchange_create(dap_chain_net_t *a_net, const char *a_token
     dap_hash_fast(l_tx, dap_chain_datum_tx_get_size(l_tx), &l_tx_hash);
     char* l_ret = NULL;
     if(!(l_ret = s_xchange_tx_put(l_tx, a_net))) {
-        DAP_DELETE(l_price->wallet_str);
         DAP_DELETE(l_price);
         return XCHANGE_CREATE_ERROR_CAN_NOT_PUT_TRANSACTION_TO_MEMPOOL;
     }