diff --git a/dap-sdk b/dap-sdk
index 872d510565f32895c7493e620ba47848dab653af..f030e6c0cb23b019e360d379b4c803713b8a1116 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit 872d510565f32895c7493e620ba47848dab653af
+Subproject commit f030e6c0cb23b019e360d379b4c803713b8a1116
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index 7b133067b03c0996dd184d4630981a6f2acf0659..f83c08f57d84a831a9e33140696f064eb687b022 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -82,12 +82,6 @@ static void s_ch_chain_callback_notify_packet_in(dap_chain_ch_t* a_ch_chain, uin
         dap_chain_ch_pkt_t *a_pkt, size_t a_pkt_data_size,
         void * a_arg);
 
-#ifdef DAP_OS_WINDOWS
-#define dap_cond_signal(x) SetEvent(x)
-#else
-#define dap_cond_signal(x) pthread_cond_broadcast(&x)
-#endif
-
 /**
  * @brief dap_chain_node_client_init
  * @return always 0
@@ -129,7 +123,7 @@ static void s_stage_status_error_callback(dap_client_t *a_client, void *a_arg)
     if (l_is_last_attempt) {
         pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->state = NODE_CLIENT_STATE_DISCONNECTED;
-        dap_cond_signal(l_node_client->wait_cond);
+        pthread_cond_signal(&l_node_client->wait_cond);
         pthread_mutex_unlock(&l_node_client->wait_mutex);
 
         l_node_client->esocket_uuid = 0;
@@ -193,7 +187,7 @@ static void s_ch_chain_callback_notify_packet_in2(dap_stream_ch_chain_net_t* a_c
         pthread_mutex_lock(&l_node_client->wait_mutex);
         l_node_client->callbacks_arg = DAP_DUP_SIZE(a_pkt_net->data, a_pkt_net_data_size);
         l_node_client->state = NODE_CLIENT_STATE_VALID_READY;
-        dap_cond_signal(l_node_client->wait_cond);
+        pthread_cond_signal(&l_node_client->wait_cond);
         pthread_mutex_unlock(&l_node_client->wait_mutex);
         break;
 
@@ -225,7 +219,7 @@ static void s_ch_chain_callback_notify_packet_R(dap_stream_ch_chain_net_srv_t* a
             //s_save_stat_to_database(l_request, l_node_client);
             pthread_mutex_lock(&l_node_client->wait_mutex);
             l_node_client->state = NODE_CLIENT_STATE_CHECKED;
-            dap_cond_signal(l_node_client->wait_cond);
+            pthread_cond_signal(&l_node_client->wait_cond);
             pthread_mutex_unlock(&l_node_client->wait_mutex);
             break;
         }
@@ -278,17 +272,12 @@ dap_chain_node_client_t *dap_chain_node_client_create(dap_chain_net_t *a_net,
         l_node_client->callbacks = *a_callbacks;
     l_node_client->info = DAP_DUP_SIZE(a_node_info, sizeof(dap_chain_node_info_t) + a_node_info->ext_host_len + 1);
     l_node_client->net = a_net;
-#ifndef _WIN32
     pthread_condattr_t attr;
     pthread_condattr_init(&attr);
 #ifndef DAP_OS_DARWIN
     pthread_condattr_setclock(&attr, CLOCK_MONOTONIC);
 #endif
     pthread_cond_init(&l_node_client->wait_cond, &attr);
-#else
-    l_node_client->wait_cond = CreateEventA( NULL, FALSE, FALSE, NULL );
-#endif
-
     pthread_mutex_init(&l_node_client->wait_mutex, NULL);
     l_node_client->remote_node_addr.uint64 = a_node_info->address.uint64;
     return l_node_client;
@@ -306,7 +295,7 @@ bool dap_chain_node_client_connect(dap_chain_node_client_t *a_node_client, const
 {
     if (!a_node_client)
         return false;
-    a_node_client->client = dap_client_new(NULL, s_stage_status_error_callback, a_node_client);
+    a_node_client->client = dap_client_new(s_stage_status_error_callback, a_node_client);
     dap_client_set_is_always_reconnect(a_node_client->client, false);
     a_node_client->client->_inheritor = a_node_client;
     dap_client_set_active_channels_unsafe(a_node_client->client, a_active_channels);
@@ -352,15 +341,9 @@ void dap_chain_node_client_close_unsafe(dap_chain_node_client_t *a_node_client)
         }
     }
     // clean client
-    if(a_node_client->client){
-        a_node_client->client->delete_callback = NULL;
+    if (a_node_client->client)
         dap_client_delete_unsafe(a_node_client->client);
-    }
-#ifndef _WIN32
     pthread_cond_destroy(&a_node_client->wait_cond);
-#else
-    CloseHandle( a_node_client->wait_cond );
-#endif
     pthread_mutex_destroy(&a_node_client->wait_mutex);
     DAP_DEL_Z(a_node_client->info);
     DAP_DELETE(a_node_client);
@@ -412,7 +395,6 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s
         return -2;
     }
 
-#ifndef DAP_OS_WINDOWS
     // prepare for signal waiting
     struct timespec l_cond_timeout;
     clock_gettime( CLOCK_MONOTONIC, &l_cond_timeout);
@@ -440,19 +422,6 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s
         }
     }
     pthread_mutex_unlock(&a_client->wait_mutex);
-#else
-    pthread_mutex_unlock( &a_client->wait_mutex );
-    DWORD wait = WaitForSingleObject( a_client->wait_cond, (uint32_t)a_timeout_ms);
-    if ( wait == WAIT_OBJECT_0 && (
-             a_client->state == a_waited_state ||
-             a_client->state == NODE_CLIENT_STATE_ERROR ||
-             a_client->state == NODE_CLIENT_STATE_DISCONNECTED))
-    {
-        return a_client->state == a_waited_state ? 0 : -2;
-    } else if ( wait == WAIT_TIMEOUT || wait == WAIT_FAILED ) {
-        return -1;
-    }
-#endif
     return ret;
 }