diff --git a/dap_chain_node_cli.c b/dap_chain_node_cli.c
index a53a53ed498f859abdbd0f53bacfa53536eca3e3..cc2f6caa016806bd2a370a8fa647bcef43385b12 100644
--- a/dap_chain_node_cli.c
+++ b/dap_chain_node_cli.c
@@ -835,6 +835,9 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
     dap_chain_node_cli_cmd_item_create ("tx_verify", com_tx_verify, "Verifing transaction",
             "tx_verify  -wallet <wallet name> [-path <wallet path>]\n" );
 
+    // Transaction history
+    dap_chain_node_cli_cmd_item_create("tx_history", com_tx_history, "Transaction history",
+            "tx_verify  -addr <addr> -w <wallet name> [-path <wallet path>]\n");
     // Log
     dap_chain_node_cli_cmd_item_create ("print_log", com_print_log, "Print log info",
                 "print_log [ts_after <timestamp >] [limit <line numbers>]\n" );
diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c
index 75802c9796eaab53009f9c9d46d324e24fb05f65..ab463f811e0a62ccfc072b76d639b2a9e6aa55a8 100644
--- a/dap_chain_node_cli_cmd.c
+++ b/dap_chain_node_cli_cmd.c
@@ -455,7 +455,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
         if ( l_addr ) {
         }
     }else { // Dump list
-        dap_global_db_obj_t **l_objs = NULL;
+        dap_global_db_obj_t *l_objs = NULL;
         size_t l_nodes_count = 0;
         dap_chain_node_info_t *l_node_info;
         // read all node
@@ -467,7 +467,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
         }else {
             dap_string_append_printf(l_string_reply,"Got %u records:\n",l_nodes_count);
             for(size_t i = 0; i < l_nodes_count; i++) {
-                dap_chain_node_info_t *node_info =  (dap_chain_node_info_t *) l_objs[i]->value;
+                dap_chain_node_info_t *node_info =  (dap_chain_node_info_t *) l_objs[i].value;
                 // find addr by alias or addr_str
                 dap_chain_node_addr_t *address = node_info_get_addr(a_net, node_info, &node_info->hdr.address, a_alias);
                 if(!address) {
@@ -539,6 +539,7 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
                 DAP_DELETE(node_info_read);
             }
         }
+    dap_chain_global_db_objs_delete(l_objs, l_nodes_count);
     }
     dap_chain_node_cli_set_reply_text(a_str_reply, l_string_reply->str);
     dap_string_free(l_string_reply, true);
@@ -1174,7 +1175,7 @@ int com_help(int argc, char ** argv, char **str_reply)
  */
 int com_tx_wallet(int argc,  char ** argv, char **str_reply)
 {
-    const char *c_wallets_path = dap_config_get_item_str(g_config, "general", "wallets_path");
+    const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
     // Get address of wallet
     enum {
         CMD_NONE, CMD_WALLET_NEW, CMD_WALLET_LIST, CMD_WALLET_INFO
@@ -2117,7 +2118,7 @@ int com_tx_cond_create(int argc, char ** argv, char **str_reply)
     (void) argc;
     // test
     const char * l_token_ticker = NULL;
-    const char *c_wallets_path = dap_config_get_item_str(g_config, "general", "wallets_path");
+    const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
     const char *c_wallet_name_from = "w_tesla"; // where to take coins for service
     const char *c_wallet_name_cond = "w_picnic"; // who will be use service, usually the same address (addr_from)
     const char *c_net_name = "kelvin-testnet";
@@ -2233,7 +2234,7 @@ int com_tx_create(int argc, char ** argv, char **str_reply)
         return -1;
     }
 
-    const char *c_wallets_path = dap_config_get_item_str(g_config, "general", "wallets_path");
+    const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
     dap_chain_wallet_t * l_wallet = dap_chain_wallet_open(l_from_wallet_name, c_wallets_path);
 
     if(!l_wallet) {
@@ -2293,6 +2294,66 @@ int com_tx_verify(int argc, char ** argv, char **str_reply)
     return -1;
 }
 
+
+/**
+ * tx_history command
+ *
+ * Transaction history for an address
+ */
+int com_tx_history(int argc, char ** argv, char **str_reply)
+{
+    int arg_index = 1;
+    const char *l_addr_base58 = NULL;
+    const char *l_wallet_name = NULL;
+
+    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-addr", &l_addr_base58);
+    dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-w", &l_wallet_name);
+
+    if(!l_addr_base58 && !l_wallet_name) {
+        dap_chain_node_cli_set_reply_text(str_reply, "tx_history requires parameter '-addr' or '-wallet'");
+        return -1;
+    }
+
+    dap_chain_addr_t *l_addr = NULL;
+    if(l_wallet_name) {
+        const char *c_wallets_path = dap_chain_wallet_get_path(g_config);
+        dap_chain_wallet_t * l_wallet = dap_chain_wallet_open(l_wallet_name, c_wallets_path);
+        if(l_wallet) {
+            dap_chain_addr_t *l_addr_tmp = (dap_chain_addr_t *) dap_chain_wallet_get_addr(l_wallet);
+            l_addr = DAP_NEW_SIZE(dap_chain_addr_t, sizeof(dap_chain_addr_t));
+            memcpy(l_addr, l_addr_tmp, sizeof(dap_chain_addr_t));
+            dap_chain_wallet_close(l_wallet);
+        }
+    }
+    if(l_addr && l_addr_base58) {
+        l_addr = dap_chain_addr_from_str(l_addr_base58);
+    }
+    if(!l_addr) {
+        dap_chain_node_cli_set_reply_text(str_reply, "wallet address not recognized");
+        return -1;
+    }
+
+    char *l_str_ret = NULL;
+
+    // read all history
+    size_t l_objs_count = 0;
+    dap_global_db_obj_t *l_objs = dap_chain_global_db_gr_load(GROUP_LOCAL_HISTORY, &l_objs_count);
+
+    size_t l_objs_count_filter = l_objs_count;
+   //uint8_t*a = dap_db_log_pack(l_objs, &l_objs_count);
+    dap_global_db_obj_t *a = dap_db_history_filter("123", &l_objs_count_filter);
+    for(size_t i = 0; i < l_objs_count_filter; i++) {
+        dap_global_db_obj_t *l_node_info =  (dap_chain_node_info_t *) l_objs[i].value;
+        l_node_info = 0;
+    }
+    //dap_store_obj_free(l_objs, l_objs_count);
+    dap_chain_global_db_objs_delete(l_objs, l_objs_count);
+
+    dap_chain_node_cli_set_reply_text(str_reply, l_str_ret);
+    DAP_DELETE(l_str_ret);
+    return 0;
+}
+
 /**
  * print_log command
  *
diff --git a/dap_chain_node_cli_cmd.h b/dap_chain_node_cli_cmd.h
index aa650f4018da9216e44625538ca5df03224cfd6f..ccea01fd45bb318a8fc1f137227dc6cfcc784dd6 100644
--- a/dap_chain_node_cli_cmd.h
+++ b/dap_chain_node_cli_cmd.h
@@ -116,6 +116,13 @@ int com_tx_cond_create(int argc, char ** argv, char **str_reply);
  */
 int com_tx_verify(int argc, char ** argv, char **str_reply);
 
+/**
+ * tx_history command
+ *
+ * Transaction history for an address
+ */
+int com_tx_history(int argc, char ** argv, char **str_reply);
+
 // Print log info
 int com_print_log(int argc, char ** argv, char **str_reply);