diff --git a/dap_chain_net.c b/dap_chain_net.c
index f16ece66e44c53b4f690187cf5a9740715b94cae..68df3f1f09468f90f8be8a93b9a98e35a843e905 100644
--- a/dap_chain_net.c
+++ b/dap_chain_net.c
@@ -22,10 +22,26 @@
     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 <stdlib.h>
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
 #include <stddef.h>
+#include <stdint.h>
 #include <string.h>
+
+#ifdef WIN32
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0600
+#include <winsock2.h>
+#include <windows.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#include <io.h>
+#include <wepoll.h>
+#endif
+
 #include <pthread.h>
-#include <errno.h>
 
 #include "uthash.h"
 #include "utlist.h"
@@ -33,7 +49,6 @@
 #include "dap_common.h"
 #include "dap_string.h"
 #include "dap_strfuncs.h"
-#include "dap_file_utils.h"
 #include "dap_config.h"
 #include "dap_hash.h"
 #include "dap_chain_net.h"
@@ -64,19 +79,28 @@
 
 #define LOG_TAG "chain_net"
 
+#define F_DAP_CHAIN_NET_SHUTDOWN  ( 1 << 9 )
+
 /**
   * @struct dap_chain_net_pvt
   * @details Private part of chain_net dap object
   */
-typedef struct dap_chain_net_pvt{
+typedef struct dap_chain_net_pvt {
+
     pthread_t proc_tid;
+#ifndef _WIN32
     pthread_cond_t state_proc_cond;
+#else
+    HANDLE state_proc_cond;
+#endif
     pthread_mutex_t state_mutex;
+
     dap_chain_node_role_t node_role;
-    uint8_t padding2[4];
+    uint32_t  flags;
+//    uint8_t padding2[4];
 
-    dap_chain_node_addr_t * node_addr;
-    dap_chain_node_info_t * node_info; // Current node's info
+    dap_chain_node_addr_t *node_addr;
+    dap_chain_node_info_t *node_info; // Current node's info
 
     dap_chain_node_client_t *links;
     size_t links_count;
@@ -93,6 +117,7 @@ typedef struct dap_chain_net_pvt{
     dap_chain_net_state_t state;
     dap_chain_net_state_t state_prev;
     dap_chain_net_state_t state_target;
+
 } dap_chain_net_pvt_t;
 
 typedef struct dap_chain_net_item{
@@ -102,7 +127,7 @@ typedef struct dap_chain_net_item{
     UT_hash_handle hh;
 } dap_chain_net_item_t;
 
-#define PVT(a) ( (dap_chain_net_pvt_t *) (void*) a->pvt )
+#define PVT(a)   ( (dap_chain_net_pvt_t *) (void*) a->pvt )
 #define PVT_S(a) ( (dap_chain_net_pvt_t *) (void*) a.pvt )
 
 static dap_chain_net_item_t * s_net_items = NULL;
@@ -149,15 +174,24 @@ inline static const char * s_net_state_to_str(dap_chain_net_state_t l_state)
  * @param a_net
  * @param a_new_state
  */
-int dap_chain_net_state_go_to(dap_chain_net_t * a_net, dap_chain_net_state_t a_new_state)
+int dap_chain_net_state_go_to( dap_chain_net_t *a_net, dap_chain_net_state_t a_new_state )
 {
-    pthread_mutex_lock( &PVT(a_net)->state_mutex);
-    if (PVT(a_net)->state_target == a_new_state){
-        log_it(L_WARNING,"Already going to state %s",s_net_state_to_str(a_new_state));
+    pthread_mutex_lock( &PVT(a_net)->state_mutex );
+
+    if ( PVT(a_net)->state_target == a_new_state ) {
+        log_it( L_WARNING,"Already going to state %s",s_net_state_to_str(a_new_state) );
     }
+
     PVT(a_net)->state_target = a_new_state;
-    pthread_cond_signal(&PVT(a_net)->state_proc_cond);
-    pthread_mutex_unlock( &PVT(a_net)->state_mutex);
+
+#ifndef _WIN32
+    pthread_cond_signal( &PVT(a_net)->state_proc_cond );
+#else
+    SetEvent( PVT(a_net)->state_proc_cond );
+#endif
+
+    pthread_mutex_unlock( &PVT(a_net)->state_mutex );
+
     return 0;
 }
 
@@ -189,39 +223,46 @@ static void s_gbd_history_callback_notify (void * a_arg, const char a_op_code, c
 }
 
 
-
 /**
  * @brief s_net_states_proc
  * @param l_net
  */
-static int s_net_states_proc(dap_chain_net_t * l_net)
+static int s_net_states_proc( dap_chain_net_t *l_net )
 {
-    dap_chain_net_pvt_t *pvt_debug = PVT(l_net);
-    int ret=0;
+//    dap_chain_net_pvt_t *pvt_debug = PVT( l_net );
+    int ret = 0;
+
 lb_proc_state:
-    pthread_mutex_lock(&PVT(l_net)->state_mutex );
-    switch ( PVT(l_net)->state ){
-        case NET_STATE_OFFLINE:{
+
+    pthread_mutex_lock( &PVT(l_net)->state_mutex );
+
+    switch ( PVT(l_net)->state ) {
+
+        case NET_STATE_OFFLINE: {
             log_it(L_NOTICE,"%s.state: NET_STATE_OFFLINE",l_net->pub.name);
-            // reset current link
-            PVT(l_net)->link_cur = 0;
-            // delete all links
-            dap_chain_node_client_t * l_node_client = NULL, *l_node_client_tmp = NULL;
+
+            dap_chain_node_client_t *l_node_client = NULL, *l_node_client_tmp = NULL;
+
             HASH_ITER(hh,PVT(l_net)->links,l_node_client,l_node_client_tmp){
                 HASH_DEL(PVT(l_net)->links, l_node_client);
                 dap_chain_node_client_close(l_node_client);
             }
+
             PVT(l_net)->links_addrs_count = 0;
+
             if ( PVT(l_net)->links_addrs )
                 DAP_DELETE(PVT(l_net)->links_addrs);
+
             PVT(l_net)->links_addrs = NULL;
 
-            if ( PVT(l_net)->state_target != NET_STATE_OFFLINE ){
+            if ( PVT(l_net)->state_target != NET_STATE_OFFLINE ) {
                 PVT(l_net)->state = NET_STATE_LINKS_PREPARE;
                 pthread_mutex_unlock(&PVT(l_net)->state_mutex );
                 goto lb_proc_state;
             }
+
         } break;
+
         case NET_STATE_LINKS_PREPARE:{
             log_it(L_NOTICE,"%s.state: NET_STATE_LINKS_PREPARE",l_net->pub.name);
             switch (PVT(l_net)->node_role.enums) {
@@ -308,12 +349,11 @@ lb_proc_state:
                 PVT(l_net)->state = NET_STATE_OFFLINE;
             }
         } pthread_mutex_unlock(&PVT(l_net)->state_mutex ); goto lb_proc_state;
+
         case NET_STATE_LINKS_CONNECTING:{
             log_it(L_NOTICE,"%s.state: NET_STATE_LINKS_CONNECTING",l_net->pub.name);
             size_t l_links_established = 0;
-            //for (size_t i =0 ; i < PVT(l_net)->links_addrs_count ; i++ )
-            for (size_t i = PVT(l_net)->link_cur ; i < PVT(l_net)->links_addrs_count ; i++ )
-            {
+            for (size_t i =0 ; i < PVT(l_net)->links_addrs_count ; i++ ){
                 log_it(L_INFO,"Establishing connection with " NODE_ADDR_FP_STR,
                        NODE_ADDR_FP_ARGS_S( PVT(l_net)->links_addrs[i]) );
                 dap_chain_node_info_t *l_link_node_info = dap_chain_node_info_read(l_net, &PVT(l_net)->links_addrs[i] );
@@ -331,8 +371,6 @@ lb_proc_state:
                         log_it(L_NOTICE, "Connected link %u",i);
                         l_links_established++;
                         HASH_ADD(hh,PVT(l_net)->links, remote_node_addr,sizeof(l_node_client->remote_node_addr), l_node_client);
-                        PVT(l_net)->link_cur++;
-                        break;
                     }else {
                         log_it(L_NOTICE, "Cant establish link %u",i);
                         dap_chain_node_client_close(l_node_client);
@@ -348,6 +386,7 @@ lb_proc_state:
                 PVT(l_net)->state_target = NET_STATE_OFFLINE ;
             }
         } pthread_mutex_unlock(&PVT(l_net)->state_mutex ); goto lb_proc_state;
+
         case NET_STATE_LINKS_ESTABLISHED:{
             log_it(L_NOTICE,"%s.state: NET_STATE_LINKS_ESTABLISHED",l_net->pub.name);
             switch (PVT(l_net)->state_target) {
@@ -473,7 +512,6 @@ lb_proc_state:
                     log_it(L_WARNING,"Can't send GDB sync request");
                     HASH_DEL(PVT(l_net)->links,l_node_client);
                     dap_chain_node_client_close(l_node_client);
-                    PVT(l_net)->state = NET_STATE_OFFLINE;
                     continue;
                 }
 
@@ -537,9 +575,6 @@ lb_proc_state:
 
             }
             PVT(l_net)->state = NET_STATE_ONLINE;
-            // end sync, return to online state
-            if(PVT(l_net)->state_target > NET_STATE_ONLINE)
-                PVT(l_net)->state_target = NET_STATE_ONLINE;
         }pthread_mutex_unlock(&PVT(l_net)->state_mutex ); goto lb_proc_state;
 
         case NET_STATE_ONLINE: {
@@ -569,57 +604,49 @@ lb_proc_state:
  * @param a_cfg Network1 configuration
  * @return
  */
-static void * s_net_proc_thread ( void * a_net)
+static void *s_net_proc_thread ( void *a_net )
 {
-    dap_chain_net_t * l_net = (dap_chain_net_t *) a_net;
-    bool is_looping = true ;
-    while( is_looping ) {
-        s_net_states_proc(l_net);
-        pthread_mutex_lock( &PVT(l_net)->state_mutex );
+    dap_chain_net_t *l_net = (dap_chain_net_t *)a_net;
+    dap_chain_net_pvt_t *p_net = (dap_chain_net_pvt_t *)(void *)l_net->pvt;
+
+    const uint64_t l_timeout_ms = 20000;// 20 sec
+
+    while( !(p_net->flags & F_DAP_CHAIN_NET_SHUTDOWN) ) {
+
+        s_net_states_proc( l_net );
+    #ifndef _WIN32
+        pthread_mutex_lock( &p_net->state_mutex );
 
-        int l_timeout_ms = 20000;// 20 sec
         // prepare for signal waiting
+
         struct timespec l_to;
-        clock_gettime(CLOCK_MONOTONIC, &l_to);
-        int64_t l_nsec_new = l_to.tv_nsec + l_timeout_ms * 1000000ll;
+        clock_gettime( CLOCK_MONOTONIC, &l_to );
+        //int64_t l_nsec_new = l_to.tv_nsec + l_timeout_ms * 1000000ll;
+
+        l_to.tv_sec += l_timeout_ms / 1000;
+
         // if the new number of nanoseconds is more than a second
-        if(l_nsec_new > (long) 1e9) {
-            l_to.tv_sec += l_nsec_new / (long) 1e9;
-            l_to.tv_nsec = l_nsec_new % (long) 1e9;
-        }
-        else
-            l_to.tv_nsec = (long) l_nsec_new;
+        //if(l_nsec_new > (long) 1e9) {
+        //    l_to.tv_sec += l_nsec_new / (long) 1e9;
+        //    l_to.tv_nsec = l_nsec_new % (long) 1e9;
+        //}
+        //else
+        //    l_to.tv_nsec = (long) l_nsec_new;
+
         // signal waiting
-        int l_ret = pthread_cond_timedwait(&PVT(l_net)->state_proc_cond, &PVT(l_net)->state_mutex, &l_to);
+        pthread_cond_timedwait( &p_net->state_proc_cond, &p_net->state_mutex, &l_to );
+
         //pthread_cond_wait(&PVT(l_net)->state_proc_cond,&PVT(l_net)->state_mutex);
-        pthread_mutex_unlock( &PVT(l_net)->state_mutex );
-        // only check connection
-        if(l_ret==ETIMEDOUT){
-            // send ping
-/*            dap_stream_ch_chain_net_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_PING,
-                                                                  l_ch_chain_net_pkt->hdr.net_id, NULL, 0);
-
-            if(0 == dap_stream_ch_chain_pkt_write(l_ch_chain, DAP_STREAM_CH_CHAIN_PKT_TYPE_SYNC_GLOBAL_DB,
-                    l_net->pub.id, l_chain_id_null, l_chain_cell_id_null, &l_sync_request,
-                    sizeof(l_sync_request))) {
-                dap_chain_node_cli_set_reply_text(a_str_reply, "Error: Cant send sync chains request");
-                // clean client struct
-                dap_chain_node_client_close(l_node_client);
-                DAP_DELETE(l_remote_node_info);
-                return -1;
-            }
-            dap_stream_ch_set_ready_to_write(l_ch_chain, true);
-            // wait pong
-            timeout_ms = 120000; // 20 min = 1200 sec = 1 200 000 ms
-            res = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_PONG, timeout_ms);
-            if(res) {
-                PVT(l_net)->state = NET_STATE_OFFLINE;
-            }*/
+        pthread_mutex_unlock( &p_net->state_mutex );
+    #else // WIN32
 
-        }
-        log_it( L_DEBUG, "Waked up net proHASH_COUNT( c thread, cond_wait=%d", l_ret);
+        WaitForSingleObject( p_net->state_proc_cond, (uint32_t)l_timeout_ms );
+
+    #endif
 
+        log_it( L_DEBUG, "Waked up net proHASH_COUNT( c thread" );
     }
+
     return NULL;
 }
 
@@ -640,13 +667,25 @@ static void s_net_proc_thread_start( dap_chain_net_t * a_net )
  */
 static void s_net_proc_kill( dap_chain_net_t * a_net )
 {
-    if ( PVT(a_net)->proc_tid ) {
-        pthread_cond_signal(& PVT(a_net)->state_proc_cond);
-        log_it(L_NOTICE,"Sent KILL signal to the net process thread %d, waiting for shutdown...",PVT(a_net)->proc_tid);
-        pthread_join( PVT(a_net)->proc_tid , NULL);
-        log_it(L_NOTICE,"Net process thread %d shutted down",PVT(a_net)->proc_tid);
-        PVT(a_net)->proc_tid = 0;
-    }
+    if ( !PVT(a_net)->proc_tid )
+        return;
+
+    log_it( L_NOTICE,"Sent KILL signal to the net process thread %d, waiting for shutdown...", PVT(a_net)->proc_tid );
+
+    PVT(a_net)->flags |= F_DAP_CHAIN_NET_SHUTDOWN;
+
+#ifndef _WIN32
+    pthread_cond_signal( &PVT(a_net)->state_proc_cond );
+#else
+    SetEvent( PVT(a_net)->state_proc_cond );
+#endif
+
+    pthread_join( PVT(a_net)->proc_tid , NULL );
+    log_it( L_NOTICE,"Net process thread %d shutted down", PVT(a_net)->proc_tid );
+
+    PVT(a_net)->proc_tid = 0;
+
+    return;
 }
 
 /**
@@ -657,17 +696,25 @@ static void s_net_proc_kill( dap_chain_net_t * a_net )
  * @param a_node_name
  * @return
  */
-static dap_chain_net_t * s_net_new(const char * a_id, const char * a_name ,
+static dap_chain_net_t *s_net_new(const char * a_id, const char * a_name ,
                                     const char * a_node_role)
 {
-    dap_chain_net_t * ret = DAP_NEW_Z_SIZE (dap_chain_net_t, sizeof (ret->pub)+ sizeof (dap_chain_net_pvt_t) );
+    dap_chain_net_t *ret = DAP_NEW_Z_SIZE( dap_chain_net_t, sizeof(ret->pub) + sizeof(dap_chain_net_pvt_t) );
     ret->pub.name = strdup( a_name );
-    pthread_mutex_init( &PVT(ret)->state_mutex, NULL);
+
+    pthread_mutex_init( &PVT(ret)->state_mutex, NULL );
+
+#ifndef _WIN32
     pthread_condattr_t l_attr;
-    pthread_condattr_init(&l_attr);
-    pthread_condattr_setclock(&l_attr, CLOCK_MONOTONIC);
-    pthread_cond_init( &PVT(ret)->state_proc_cond, &l_attr);
-    if ( sscanf(a_id,"0x%016lx", &ret->pub.id.uint64 ) == 1 ){
+    pthread_condattr_init( &l_attr );
+    pthread_condattr_setclock( &l_attr, CLOCK_MONOTONIC );
+    pthread_cond_init( &PVT(ret)->state_proc_cond, &l_attr );
+#else
+    PVT(ret)->state_proc_cond = CreateEventA( NULL, FALSE, FALSE, NULL );
+#endif
+
+    //    if ( sscanf(a_id,"0x%016lx", &ret->pub.id.uint64 ) == 1 ){
+    if ( sscanf(a_id,"0x%016llx", &ret->pub.id.uint64 ) == 1 ){
         if (strcmp (a_node_role, "root_master")==0){
             PVT(ret)->node_role.enums = NODE_ROLE_ROOT_MASTER;
             log_it (L_NOTICE, "Node role \"root master\" selected");
@@ -727,6 +774,7 @@ void dap_chain_net_delete( dap_chain_net_t * a_net )
 int dap_chain_net_init()
 {
     dap_chain_node_cli_cmd_item_create ("net", s_cli_net, "Network commands",
+
         "net -net <chain net name> go < online | offline >\n"
             "\tFind and establish links and stay online\n"
         "net -net <chain net name> get status\n"
@@ -738,6 +786,7 @@ int dap_chain_net_init()
         "net -net <chain net name> link < list | add | del | info | establish >\n"
             "\tList,add,del, dump or establish links\n\n"
                                         );
+
     s_seed_mode = dap_config_get_item_bool_default(g_config,"general","seed_mode",false);
     dap_chain_global_db_add_history_group_prefix("global");
 
@@ -747,28 +796,42 @@ int dap_chain_net_init()
 
 void dap_chain_net_load_all()
 {
-    char * l_net_dir_str = dap_strdup_printf("%s/network", dap_config_path());
-    DIR * l_net_dir = opendir( l_net_dir_str);
+    char * l_net_dir_str = dap_strdup_printf( "%s/network", dap_config_path() );
+
+//    printf("Scaning dir %s ...\n", l_net_dir_str );
+//    Sleep( 1000 );
+
+    DIR * l_net_dir = opendir( l_net_dir_str );
+    DAP_DELETE (l_net_dir_str);
+
     if ( l_net_dir ){
-        struct dirent * l_dir_entry;
-        while ( (l_dir_entry = readdir(l_net_dir) )!= NULL ){
-            if (l_dir_entry->d_name[0]=='\0' || l_dir_entry->d_name[0]=='.')
-                continue;
-            // don't search in directories
-            char * l_full_path = dap_strdup_printf("%s/%s", l_net_dir_str, l_dir_entry->d_name);
-            if(dap_dir_test(l_full_path)) {
-                DAP_DELETE(l_full_path);
+
+        struct dirent *l_dir_entry;
+
+        log_it( L_INFO, "*********************************************************" );
+//        printf("OPA OPA OPA\n");
+//        Sleep( 1000 );
+
+        while ( (l_dir_entry = readdir(l_net_dir) ) != NULL ) {
+
+            if ( !l_dir_entry->d_name[0] || l_dir_entry->d_name[0] == '.' )
                 continue;
-            }
-            DAP_DELETE(l_full_path);
-            log_it(L_DEBUG,"Network config %s try to load", l_dir_entry->d_name);
-            char* l_dot_pos = rindex(l_dir_entry->d_name,'.');
+
+            log_it( L_INFO, "Network config %s try to load", l_dir_entry->d_name );
+
+//            char* l_dot_pos = rindex(l_dir_entry->d_name,'.');
+
+            char* l_dot_pos = strchr(l_dir_entry->d_name,'.');
+
             if ( l_dot_pos )
-                *l_dot_pos = '\0';
-            s_net_load(l_dir_entry->d_name );
+                *l_dot_pos = 0;
+
+//            log_it( L_INFO, "*********************************************************" );
+//            Sleep( 5000 );
+
+            s_net_load( l_dir_entry->d_name );
         }
     }
-    DAP_DELETE (l_net_dir_str);
 }
 
 /**
@@ -778,18 +841,21 @@ void dap_chain_net_load_all()
  * @param str_reply
  * @return
  */
-static int s_cli_net(int argc, char ** argv, char **a_str_reply)
+static int s_cli_net( int argc, char **argv, char **a_str_reply )
 {
-    int arg_index=1;
+    int arg_index = 1;
     dap_chain_net_t * l_net = NULL;
 
-    int ret = dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index,argc,argv,a_str_reply,NULL,&l_net);
-    if ( l_net ){
-        const char * l_sync_str = NULL;
-        const char * l_links_str = NULL;
-        const char * l_go_str = NULL;
-        const char * l_get_str = NULL;
-        const char * l_stats_str = NULL;
+    int ret = dap_chain_node_cli_cmd_values_parse_net_chain( &arg_index, argc, argv, a_str_reply, NULL, &l_net );
+
+    if ( l_net ) {
+
+        const char *l_sync_str = NULL;
+        const char *l_links_str = NULL;
+        const char *l_go_str = NULL;
+        const char *l_get_str = NULL;
+        const char *l_stats_str = NULL;
+
         dap_chain_node_cli_find_option_val(argv, arg_index, argc, "sync", &l_sync_str);
         dap_chain_node_cli_find_option_val(argv, arg_index, argc, "link", &l_links_str);
         dap_chain_node_cli_find_option_val(argv, arg_index, argc, "go", &l_go_str);
@@ -797,29 +863,31 @@ static int s_cli_net(int argc, char ** argv, char **a_str_reply)
         dap_chain_node_cli_find_option_val(argv, arg_index, argc, "stats", &l_stats_str);
 
         if ( l_stats_str ){
+
             if ( strcmp(l_stats_str,"tx") == 0 ) {
-                const char * l_to_str = NULL;
+
+                const char *l_to_str = NULL;
                 struct tm l_to_tm = {0};
 
-                const char * l_from_str = NULL;
+                const char *l_from_str = NULL;
                 struct tm l_from_tm = {0};
 
-                const char * l_prev_sec_str = NULL;
+                const char *l_prev_sec_str = NULL;
                 time_t l_prev_sec_ts;
 
                 const char c_time_fmt[]="%Y-%m-%d_%H:%M:%S";
 
                 // Read from/to time
-                dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-from", &l_from_str);
-                dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-to", &l_to_str);
-                dap_chain_node_cli_find_option_val(argv, arg_index, argc, "-prev_sec", &l_prev_sec_str);
+                dap_chain_node_cli_find_option_val( argv, arg_index, argc, "-from", &l_from_str );
+                dap_chain_node_cli_find_option_val( argv, arg_index, argc, "-to", &l_to_str );
+                dap_chain_node_cli_find_option_val( argv, arg_index, argc, "-prev_sec", &l_prev_sec_str );
 
-                if (l_from_str ){
-                    strptime(l_from_str,c_time_fmt,&l_from_tm);
+                if (l_from_str ) {
+                    strptime( (char *)l_from_str, c_time_fmt, &l_from_tm );
                 }
 
-                if (l_to_str){
-                    strptime(l_to_str,c_time_fmt,&l_to_tm);
+                if (l_to_str) {
+                    strptime( (char *)l_to_str, c_time_fmt, &l_to_tm );
                 }
 
                 if ( l_to_str == NULL ){ // If not set '-to' - we set up current time
@@ -844,8 +912,9 @@ static int s_cli_net(int argc, char ** argv, char **a_str_reply)
                 // Produce strings
                 char l_from_str_new[50];
                 char l_to_str_new[50];
-                strftime(l_from_str_new, sizeof(l_from_str_new), c_time_fmt,&l_from_tm );
-                strftime(l_to_str_new, sizeof(l_to_str_new), c_time_fmt,&l_to_tm );
+
+                strftime( l_from_str_new, sizeof(l_from_str_new), c_time_fmt,&l_from_tm );
+                strftime( l_to_str_new, sizeof(l_to_str_new), c_time_fmt,&l_to_tm );
 
 
                 dap_string_t * l_ret_str = dap_string_new("Transactions statistics:\n");
@@ -980,7 +1049,7 @@ int s_net_load(const char * a_net_name)
         // Add network to the list
         dap_chain_net_item_t * l_net_item = DAP_NEW_Z( dap_chain_net_item_t);
         dap_chain_net_item_t * l_net_item2 = DAP_NEW_Z( dap_chain_net_item_t);
-        snprintf(l_net_item->name,sizeof (l_net_item->name),"%s"
+        dap_snprintf(l_net_item->name,sizeof (l_net_item->name),"%s"
                      ,dap_config_get_item_str(l_cfg , "general" , "name" ));
         l_net_item->chain_net = l_net;
         l_net_item->net_id.uint64 = l_net->pub.id.uint64;
@@ -1034,7 +1103,7 @@ int s_net_load(const char * a_net_name)
                 log_it(L_NOTICE, "Not found alias %s in database, prefill it",PVT(l_net)->seed_aliases[i]);
                 dap_chain_node_info_t * l_node_info = DAP_NEW_Z(dap_chain_node_info_t);
                 l_seed_node_addr = DAP_NEW_Z(dap_chain_node_addr_t);
-                snprintf( l_node_info->hdr.alias,sizeof ( l_node_info->hdr.alias),"%s",PVT(l_net)->seed_aliases[i]);
+                dap_snprintf( l_node_info->hdr.alias,sizeof ( l_node_info->hdr.alias),"%s",PVT(l_net)->seed_aliases[i]);
                 if (sscanf(l_seed_nodes_addrs[i],NODE_ADDR_FP_STR, NODE_ADDR_FPS_ARGS(l_seed_node_addr) ) != 4 ){
                     log_it(L_ERROR,"Wrong address format,  should be like 0123::4567::890AB::CDEF");
                     DAP_DELETE(l_seed_node_addr);
@@ -1113,7 +1182,7 @@ int s_net_load(const char * a_net_name)
         // Init chains
         size_t l_chains_path_size =strlen(dap_config_path())+1+strlen(l_net->pub.name)+1+strlen("network")+1;
         char * l_chains_path = DAP_NEW_Z_SIZE (char,l_chains_path_size);
-        snprintf(l_chains_path,l_chains_path_size,"%s/network/%s",dap_config_path(),l_net->pub.name);
+        dap_snprintf(l_chains_path,l_chains_path_size,"%s/network/%s",dap_config_path(),l_net->pub.name);
         DIR * l_chains_dir = opendir(l_chains_path);
         DAP_DELETE (l_chains_path);
         if ( l_chains_dir ){
@@ -1129,7 +1198,7 @@ int s_net_load(const char * a_net_name)
                     if ( strncmp (l_entry_name+ strlen(l_entry_name)-4,".cfg",4) == 0 ) { // its .cfg file
                         l_entry_name [strlen(l_entry_name)-4] = 0;
                         log_it(L_DEBUG,"Open chain config \"%s\"...",l_entry_name);
-                        snprintf(l_chains_path,l_chains_path_size,"network/%s/%s",l_net->pub.name,l_entry_name);
+                        dap_snprintf(l_chains_path,l_chains_path_size,"network/%s/%s",l_net->pub.name,l_entry_name);
                         //dap_config_open(l_chains_path);
 
                         // Create chain object