diff --git a/dap-sdk b/dap-sdk
index a620492c6b5908345c55167618ab2802431cfdb9..c7b6e75b903529d767159b7fecb7a7b32a7d272c 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit a620492c6b5908345c55167618ab2802431cfdb9
+Subproject commit c7b6e75b903529d767159b7fecb7a7b32a7d272c
diff --git a/modules/chain/tests/dap_chain_ledger_tests.c b/modules/chain/tests/dap_chain_ledger_tests.c
index da64d64ce39b8e4ba83c2f4351374a2481b981f4..609408f87ae3650b825b0a9716aa83d9d30b1944 100644
--- a/modules/chain/tests/dap_chain_ledger_tests.c
+++ b/modules/chain/tests/dap_chain_ledger_tests.c
@@ -369,7 +369,7 @@ void dap_chain_ledger_test_run(void){
     dap_print_module_name("dap_chain_ledger");
     uint16_t l_flags = 0;
     l_flags |= DAP_CHAIN_LEDGER_CHECK_TOKEN_EMISSION;
-    dap_ledger_t *l_ledger = dap_chain_ledger_create(l_flags, "Snet", s_token_ticker);
+    dap_ledger_t *l_ledger = dap_chain_ledger_create(l_flags, "Snet", s_token_ticker, NULL);
     char *l_seed_ph = "H58i9GJKbn91238937^#$t6cjdf";
     size_t l_seed_ph_size = strlen(l_seed_ph);
     dap_cert_t *l_cert = dap_cert_generate_mem_with_seed("testCert", DAP_ENC_KEY_TYPE_SIG_PICNIC, l_seed_ph, l_seed_ph_size);
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index cb47e1ee7d91f14b0ce2dcc39a942a4e30c5e7e6..a1b363302d85d4679845bef3138f78718733b8a7 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -1993,7 +1993,7 @@ char    l_buf[1024];
         case CMD_WALLET_NEW: {
             dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-password", &l_pass_str);
             dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-sign", &l_sign_type_str);
-            dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-restore", &l_restore_str);
+            int l_restore_opt = dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-restore", &l_restore_str);
             // rewrite existing wallet
             int l_is_force = dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-force", NULL);
 
@@ -2038,9 +2038,23 @@ char    l_buf[1024];
             if (l_sign_type.type == SIG_TYPE_TESLA)
                 return  dap_cli_server_cmd_set_reply_text(a_str_reply, "Tesla algorithm is no longer supported, please, use another variant"), -1;
 
+            uint8_t *l_seed = NULL;
+            size_t l_seed_size = 0, l_restore_str_size = dap_strlen(l_restore_str);
+
+            if(l_restore_opt) {
+                if (l_restore_str_size > 3 && !dap_strncmp(l_restore_str, "0x", 2) && !dap_is_hex_string(l_restore_str + 2, l_restore_str_size - 2)) {
+                    l_seed_size = (l_restore_str_size - 2) / 2;
+                    l_seed = DAP_NEW_SIZE(uint8_t, l_seed_size);
+                    dap_hex2bin(l_seed, l_restore_str + 2, l_restore_str_size - 2);
+                } else {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Restored hash is invalid or too short, wallet is not created. Please use -restore 0x<hex value>");
+                    return -1;
+                }
+            }
+
             // Creates new wallet
             dap_chain_wallet_t *l_wallet = dap_chain_wallet_create_with_seed(l_wallet_name, c_wallets_path, l_sign_type,
-                    l_restore_str, dap_strlen(l_restore_str), l_pass_str);
+                    l_seed, l_seed_size, l_pass_str);
 
             if (!l_wallet)
                 return  dap_cli_server_cmd_set_reply_text(a_str_reply, "Wallet is not created because of internal error"), -1;