diff --git a/dap_chain_node_cli.c b/dap_chain_node_cli.c
index 600387ed652610ebb1f85127d8eab4739bd7f71b..96f456eebde5ce5219d11c6657abdc9190128480 100755
--- a/dap_chain_node_cli.c
+++ b/dap_chain_node_cli.c
@@ -66,9 +66,15 @@ static const COMMAND commands[] =
                 "global_db node add -addr {<node address> | -alias <node alias>} -shard <shard id>  {-ipv4 <ipv4 external address> | -ipv6 <ipv6 external address>}\n"
                         "global_db node del -addr <node address> | -alias <node alias>\n"
                         "global_db node link {add|del} {-addr <node address> | -alias <node alias>} -link <node address>\n"
-                        "global_db node dump -addr <node address> | -alias <node alias>" },
+                        "global_db node dump\n"
+                        "global_db node dump -addr <node address> | -alias <node alias>\n"
+                        "global_db node get\n"
+                        "global_db node set -addr <node address> | -alias <node alias>\n"
+                        "global_db node remote_set -addr <node address> | -alias <node alias>"
+            },
             { "node", com_node, "Work with node",
                 "node alias {<node address> | -alias <node alias>}\n"
+                        "node connect {<node address> | -alias <node alias>}\n"
                         "node handshake {<node address> | -alias <node alias>}" },
             { "ping", com_ping, "Send ICMP ECHO_REQUEST to network hosts",
                 "ping [-c <count>] host" },
diff --git a/dap_chain_node_cli_cmd.c b/dap_chain_node_cli_cmd.c
index cd75919f2acc6b24adf3a23fd29d728f09bcca2f..eec05b5cb21a556261520e748601c30ecf10cc6b 100755
--- a/dap_chain_node_cli_cmd.c
+++ b/dap_chain_node_cli_cmd.c
@@ -717,7 +717,7 @@ static int com_global_db_set_remote(dap_chain_node_info_t *a_node_info, const ch
         return -1;
     }
     // wait connected
-    int timeout_ms = 150000; //15 sec = 15000 ms
+    int timeout_ms = 15000; //15 sec = 15000 ms
     int res = chain_node_client_wait(client, NODE_CLIENT_STATE_CONNECTED, timeout_ms);
     if(res != 1) {
         set_reply_text(a_str_reply, "no response from node");
@@ -739,7 +739,7 @@ static int com_global_db_set_remote(dap_chain_node_info_t *a_node_info, const ch
     }
 
     // wait for finishing of request
-    timeout_ms = 9120000; // 2 min = 120 sec = 120 000 ms
+    timeout_ms = 120000; // 2 min = 120 sec = 120 000 ms
     res = chain_node_client_wait(client, NODE_CLIENT_STATE_GET_NODE_ADDR, timeout_ms);
     DAP_DELETE(l_node_info);
     dap_client_disconnect(client->client);
@@ -979,30 +979,6 @@ int com_node(int argc, const char ** argv, char **str_reply)
             return -1;
         }
 
-        /*// debug
-         //if(0)
-         {
-         #include "dap_chain_global_db.h"
-         size_t l_data_size_out = 0;
-         dap_global_db_obj_t a_objs[2];
-         a_objs[0].key = "k1";
-         a_objs[1].key = "k2";
-         a_objs[0].value = "v1";
-         a_objs[0].value_len = strlen(a_objs[0].value);
-         a_objs[1].value = "v2";
-         a_objs[1].value_len = strlen(a_objs[1].value);
-         dap_chain_global_db_save(a_objs, 2); //dap_chain_global_db_save
-         char *l_diff = dap_db_log_get_diff(NULL);
-         DAP_DELETE(l_diff);
-         dap_global_db_obj_t **db1 = dap_chain_global_db_gr_load(GROUP_DATUM, &l_data_size_out);
-         printf("GROUP_DATUM size = %d\n", l_data_size_out);
-         dap_global_db_obj_t **db2 = dap_chain_global_db_gr_load(GROUP_ALIAS, &l_data_size_out);
-         printf("GROUP_ALIAS size = %d\n", l_data_size_out);
-         dap_global_db_obj_t **db3 = dap_chain_global_db_gr_load(GROUP_NODE, &l_data_size_out);
-         printf("GROUP_NODE size = %d\n", l_data_size_out);
-         //set_reply_text(str_reply, "debug ok");
-         //return 0;
-         }*/
         dap_chain_node_info_t *node_info = dap_chain_node_info_read(&address, str_reply);
         if(!node_info) {
             return -1;
@@ -1015,7 +991,7 @@ int com_node(int argc, const char ** argv, char **str_reply)
             return -1;
         }
         // wait connected
-        int timeout_ms = 150000; //15 sec = 15000 ms
+        int timeout_ms = 15000; //15 sec = 15000 ms
         int res = chain_node_client_wait(client, NODE_CLIENT_STATE_CONNECTED, timeout_ms);
         if(res != 1) {
             set_reply_text(str_reply, "no response from node");
@@ -1046,7 +1022,7 @@ int com_node(int argc, const char ** argv, char **str_reply)
         }
 
         // wait for finishing of request
-        timeout_ms = 9120000; // 2 min = 120 sec = 120 000 ms
+        timeout_ms = 120000; // 2 min = 120 sec = 120 000 ms
         // TODO add progress info to console
         res = chain_node_client_wait(client, NODE_CLIENT_STATE_END, timeout_ms);
         DAP_DELETE(node_info);
@@ -1602,186 +1578,6 @@ int com_tx_create(int argc, const char ** argv, char **str_reply)
     return 0;
 }
 
-/**
- * com_tx_create command
- *
- * Signing transaction
- */
-int com_tx_create0(int argc, const char ** argv, char **str_reply)
-{
-    // create wallet
-    const char *a_wallets_path = "/opt/kelvin-node/etc";
-    const char *a_wallet_name_bliss = "w_bliss";
-    const char *a_wallet_name_bliss2 = "w_bliss2";
-    const char *a_wallet_name_picnic = "w_picnic";
-    const char *a_wallet_name_tesla = "w_tesla";
-
-    dap_chain_net_id_t a_net_id = { 0x1 };
-    dap_chain_sign_type_t a_sig_type = { SIG_TYPE_TESLA };
-    //dap_chain_sign_type_t a_sig_type = { SIG_TYPE_PICNIC };
-    //dap_chain_sign_type_t a_sig_type = { SIG_TYPE_BLISS };
-    const char * a_wallet_name = a_wallet_name_tesla;
-    dap_chain_wallet_t *wallet0 = dap_chain_wallet_create(a_wallet_name, a_wallets_path, a_net_id, a_sig_type);
-
-    dap_chain_wallet_t *wallet_bliss = dap_chain_wallet_open(a_wallet_name_bliss, a_wallets_path);
-    dap_chain_wallet_t *wallet_bliss2 = dap_chain_wallet_open(a_wallet_name_bliss2, a_wallets_path);
-    dap_chain_wallet_t *wallet_picnic = dap_chain_wallet_open(a_wallet_name_picnic, a_wallets_path);
-    dap_chain_wallet_t *wallet_tesla = dap_chain_wallet_open(a_wallet_name_tesla, a_wallets_path);
-    dap_enc_key_t *l_key_bliss = dap_chain_wallet_get_key(wallet_bliss, 0);
-    dap_enc_key_t *l_key_bliss2 = dap_chain_wallet_get_key(wallet_bliss2, 0);
-    dap_enc_key_t *l_key_picnic = dap_chain_wallet_get_key(wallet_picnic, 0);
-    dap_enc_key_t *l_key_tesla = dap_chain_wallet_get_key(wallet_tesla, 0);
-    /*/ debug - test check signing
-     {
-
-
-     int a_data_size = 50;
-     char *a_data = "DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify";
-
-     dap_enc_key_t *l_key0 = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_BLISS, NULL, 0, NULL, 0, 0);
-     dap_enc_key_t *l_key1 = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_TESLA, NULL, 0, NULL, 0, 0);
-     dap_enc_key_t *l_key2 = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_PICNIC, NULL, 0, NULL, 0, 0);
-     dap_enc_key_t *l_key = dap_chain_wallet_get_key(wallet, 0);
-
-     size_t l_buflen_out;
-     char *l_data;
-     l_data = dap_enc_key_serealize_pub_key(l_key0, &l_buflen_out);
-     dap_enc_key_deserealize_pub_key(l_key0, l_data, l_buflen_out);
-     l_data = dap_enc_key_serealize_pub_key(l_key1, &l_buflen_out);
-     dap_enc_key_deserealize_pub_key(l_key1, l_data, l_buflen_out);
-     l_data = dap_enc_key_serealize_pub_key(l_key2, &l_buflen_out);
-     dap_enc_key_deserealize_pub_key(l_key2, l_data, l_buflen_out);
-     l_data = dap_enc_key_serealize_pub_key(l_key, &l_buflen_out);
-     dap_enc_key_deserealize_pub_key(l_key, l_data, l_buflen_out);
-
-     dap_chain_sign_t *l_chain_sign;
-     l_chain_sign = dap_chain_sign_create(l_key0, a_data, a_data_size, 0);
-     int l_size0 = dap_chain_sign_get_size(l_chain_sign);
-     int l_verify0 = dap_chain_sign_verify(l_chain_sign, a_data, a_data_size);
-     DAP_DELETE(l_chain_sign);
-     l_chain_sign = dap_chain_sign_create(l_key1, a_data, a_data_size, 0);
-     int l_size1 = dap_chain_sign_get_size(l_chain_sign);
-     int l_verify1 = dap_chain_sign_verify(l_chain_sign, a_data, a_data_size);
-     DAP_DELETE(l_chain_sign);
-     l_chain_sign = dap_chain_sign_create(l_key2, a_data, a_data_size, 0);
-     int l_size2 = dap_chain_sign_get_size(l_chain_sign);
-     int l_verify2 = dap_chain_sign_verify(l_chain_sign, a_data, a_data_size);
-     DAP_DELETE(l_chain_sign);
-     l_chain_sign = dap_chain_sign_create(l_key, a_data, a_data_size, 0);
-     int l_size = dap_chain_sign_get_size(l_chain_sign);
-     int l_verify = dap_chain_sign_verify(l_chain_sign, a_data, a_data_size);
-     DAP_DELETE(l_chain_sign);
-     printf("verify=%d/%d %d/%d %d/%d %d/%d\n", l_size0, l_verify0, l_size1, l_verify1, l_size2, l_verify2, l_size,
-     l_verify);
-
-     dap_enc_key_delete(l_key0);
-     dap_enc_key_delete(l_key1);
-     dap_enc_key_delete(l_key2);
-     }*/
-
-    static bool l_first_start = true;
-    if(l_first_start)
-    {
-        const char *l_token_name = "KLVN";
-        dap_enc_key_t *l_key = dap_chain_wallet_get_key(wallet_bliss, 0);
-        const dap_chain_addr_t *l_addr = dap_chain_wallet_get_addr(wallet_bliss);
-        dap_chain_node_datum_tx_cache_init(l_key, l_token_name, (dap_chain_addr_t*) l_addr, 1000);
-        l_first_start = false;
-    }
-    int res;
-    // transfer from 1st transaction to addr_w_bliss
-    /*    dap_chain_datum_tx_t *l_tx = dap_chain_datum_tx_create();
-     dap_chain_hash_fast_t l_tx_prev_hash = { 0 };
-     uint32_t l_tx_out_prev_idx = 0;
-     dap_chain_tx_in_t *l_tx_item_in = dap_chain_datum_tx_item_in_create(&l_tx_prev_hash, l_tx_out_prev_idx);
-     res = dap_chain_datum_tx_add_item(&l_tx, (const uint8_t *) l_tx_item_in);
-     res = dap_chain_datum_tx_add_sign_item(&l_tx, l_key);
-     res = dap_chain_node_datum_tx_cache_add(l_tx);
-     DAP_DELETE(l_tx);*/
-
-    char *addr_w_bliss =
-            "EXh66KVCxChbKHQcTWKYJXhua6HVZecpxuTTmWGuqm1V4vy5mVq52wD8rMQvfUnmJHsL4MuoJ7YVSFqn2RrdoN19mqHP1aQXSQPnXDR6oP9vsBPwYC9PhSvAxFystX";
-    char *addr_w_bliss2 =
-            "EXh66KVCxChbKHQcTeGf8TT7KhcCiiQ9TrPn6rcbNoNKuhAyJ4T9zr5yMfMCXGLVHmxVKZ6J4E9Zc7pNmAa4yrKNb3DkS34jxD6Q4MCXbHJMAPFEVtMoDdFMtCysE2";
-    char *addr_w_picnic =
-            "EXh66KVCxChbKJLxZbyNJLxfF8CfGZmdenQWuqtr8MnXavhJaLo6vckjpYgpcevBo3zB65sAGQJT3ctYVwQnASc6sYyaawFHnacsrcP47PB4XfLYiEDZvwog4AVdbC";
-
-    dap_chain_addr_t *addr_1 = (dap_chain_addr_t *) dap_chain_wallet_get_addr(wallet_bliss);
-    dap_chain_addr_t *addr_2 = dap_chain_str_to_addr(addr_w_bliss2);
-    dap_chain_addr_t *addr_3 = dap_chain_str_to_addr(addr_w_picnic);
-
-    //char *addr_str = dap_chain_addr_to_str((dap_chain_addr_t*) addr_from);
-    //const dap_chain_addr_t *addr2 = dap_chain_str_to_addr(addr_str);
-    //char *addr_str2 = dap_chain_addr_to_str(addr2);
-    //int a = strcmp(addr_str,addr_str2);
-
-    uint64_t balance1 = dap_chain_datum_tx_cache_calc_balance(addr_1);
-    uint64_t balance2 = dap_chain_datum_tx_cache_calc_balance(addr_2);
-    uint64_t balance3 = dap_chain_datum_tx_cache_calc_balance(addr_3);
-    printf("transactions in cache=%d balance %lld %lld %lld\n", dap_chain_node_datum_tx_cache_count(),
-            balance1, balance2, balance3);
-
-    res = dap_chain_datum_tx_ctrl_create_transfer(l_key_bliss, addr_1, addr_2, addr_3, 100, 2);
-    printf("transfer=%d\n", res);
-    balance1 = dap_chain_datum_tx_cache_calc_balance(addr_1);
-    balance2 = dap_chain_datum_tx_cache_calc_balance(addr_2);
-    balance3 = dap_chain_datum_tx_cache_calc_balance(addr_3);
-    printf("transactions in cache=%d balance %lld %lld %lld\n", dap_chain_node_datum_tx_cache_count(),
-            balance1, balance2, balance3);
-
-    res = dap_chain_datum_tx_ctrl_create_transfer(l_key_bliss2, addr_2, addr_3, addr_3, 200, 2);
-    printf("transfer=%d\n", res);
-    balance1 = dap_chain_datum_tx_cache_calc_balance(addr_1);
-    balance2 = dap_chain_datum_tx_cache_calc_balance(addr_2);
-    balance3 = dap_chain_datum_tx_cache_calc_balance(addr_3);
-    printf("transactions in cache=%d balance %lld %lld %lld\n", dap_chain_node_datum_tx_cache_count(),
-            balance1, balance2, balance3);
-
-    dap_chain_wallet_close(wallet_bliss);
-    dap_chain_wallet_close(wallet_bliss2);
-    dap_chain_wallet_close(wallet_picnic);
-    dap_chain_wallet_close(wallet_tesla);
-    set_reply_text(str_reply, "com_tx_create ok");
-    return 0;
-
-    /*/dap_chain_datum_tx_vefify(l_tx);
-
-     char *addr_w_tesla = "ad8VdHszE1zxS2SDFsvTsmQVBh1G7exkvPy6DiUtjzpgiGY82iMaWeP83K6Euh9fih2G3WN1E6SpfWdCfxA7yjyTu3yrw";
-     char *addr_w_picnic =
-     "ad8VdHszE1zx5WVKbKugtuBAimU3QT5FCnWMKKaYpMmeRwTwTNULiM7eyYiBskEG9LSN5NCp5roadQtCXe4caJqKPcWiB";
-     char *addr_w_bliss = "ad8VdHszE1zx5UAFyPFYryPdMiXPMeQDL5gy6jUztE6NJsTN4idtU4xtKHkknXBYfoXQUJDUYHkL5B2QDgyisdQ715hnF";
-     const dap_chain_addr_t *addr = dap_chain_wallet_get_addr(wallet);
-
-
-     dap_chain_datum_tx_t *l_tx_tmp = dap_chain_node_datum_tx_cache_find_by_pkey(l_key->pub_key_data,
-     l_key->pub_key_data_size, NULL);
-
-     char *addr_str = dap_chain_addr_to_str((dap_chain_addr_t*) addr);
-     const dap_chain_addr_t *addr2 = dap_chain_str_to_addr(addr_str);
-     char *addr_str2 = dap_chain_addr_to_str(addr2);
-     free(addr_str);
-     free(addr_str2);
-
-     if(wallet) {
-     if(dap_chain_wallet_get_certs_number(wallet) > 0) {
-     dap_chain_pkey_t *pk0 = dap_chain_wallet_get_pkey(wallet, 0);
-     dap_enc_key_t *a_key = dap_chain_wallet_get_key(wallet, 0);
-     //dap_enc_key_t *a_key1 = dap_chain_wallet_get_key(wallet, 0);
-     //dap_enc_key_t *a_key2 = dap_chain_wallet_get_key(wallet2, 0);
-
-     int res = dap_chain_datum_tx_add_item(&l_tx, l_tx_item_in);
-     int res1 = dap_chain_datum_tx_add_sign(&l_tx, a_key);
-     int res2 = dap_chain_datum_tx_add_sign(&l_tx, a_key);
-     int res3 = dap_chain_datum_tx_verify_sign(l_tx);
-     res3 = 0;
-     }
-     dap_chain_wallet_close(wallet);
-     DAP_DELETE(l_tx);
-     }
-     set_reply_text(str_reply, "com_tx_create ok");
-     return 0;*/
-}
-
 /**
  * tx_verify command
  *