diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c
index fda6f8dbdeaf7821d3cbddf821675555b39248fb..012ddc9352eca9262843890f2760138c7a8922b1 100755
--- a/dap_chain_net_srv_vpn.c
+++ b/dap_chain_net_srv_vpn.c
@@ -165,14 +165,16 @@ typedef struct ch_vpn_socket_proxy {
  *
  *
  **/
-typedef struct dap_stream_ch_vpn
+typedef struct dap_chain_net_srv_vpn
 {
     dap_chain_net_srv_t net_srv;
     //dap_chain_net_srv_uid_t srv_uid; // Unique ID for service.
     pthread_mutex_t mutex;
     ch_vpn_socket_proxy_t * socks;
     int raw_l3_sock;
-} dap_stream_ch_vpn_t;
+
+    dap_ledger_t *ledger;
+} dap_chain_net_srv_vpn_t;
 
 typedef struct dap_stream_ch_vpn_remote_single { //
     in_addr_t addr;
@@ -221,7 +223,7 @@ static pthread_t srv_sf_socks_raw_pid;
 
 vpn_local_network_t *raw_server;
 
-#define CH_SF(a) ((dap_stream_ch_vpn_t *) ((a)->internal) )
+#define CH_VPN(a) ((dap_chain_net_srv_vpn_t *) ((a)->internal) )
 
 void *srv_ch_sf_thread(void * arg);
 void *srv_ch_sf_thread_raw(void *arg);
@@ -321,7 +323,7 @@ void srv_ch_sf_tun_destroy()
 
 static void callback_trafic(dap_client_remote_t *a_client, dap_stream_ch_t* a_ch)
 {
-    dap_stream_ch_vpn_t *l_ch_vpn = CH_SF(a_ch);
+    dap_chain_net_srv_vpn_t *l_ch_vpn = CH_VPN(a_ch);
     //dap_stream_ch_vpn_t *l_ch_vpn = (dap_stream_ch_vpn_t*)(a_ch->internal);
     if(!a_client || !l_ch_vpn)
         return;
@@ -354,8 +356,8 @@ static void callback_trafic(dap_client_remote_t *a_client, dap_stream_ch_t* a_ch
  */
 void srv_ch_sf_new(dap_stream_ch_t* ch, void* arg)
 {
-    ch->internal = calloc(1, sizeof(dap_stream_ch_vpn_t));
-    dap_stream_ch_vpn_t * sf = CH_SF(ch);
+    ch->internal = calloc(1, sizeof(dap_chain_net_srv_vpn_t));
+    dap_chain_net_srv_vpn_t * sf = CH_VPN(ch);
     pthread_mutex_init(&sf->mutex, NULL);
     sf->raw_l3_sock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
     //
@@ -427,16 +429,16 @@ void srv_ch_sf_delete(dap_stream_ch_t* ch, void* arg)
 
         pthread_mutex_unlock(&raw_server->clients_mutex);
     }
-    HASH_ITER(hh, CH_SF(ch)->socks , cur, tmp)
+    HASH_ITER(hh, CH_VPN(ch)->socks , cur, tmp)
     {
         log_it(L_DEBUG, "delete socket: %i", cur->sock);
-        HASH_DEL(CH_SF(ch)->socks, cur);
+        HASH_DEL(CH_VPN(ch)->socks, cur);
         if(cur)
             free(cur);
     }
-    pthread_mutex_unlock(&( CH_SF(ch)->mutex));
-    if(CH_SF(ch)->raw_l3_sock)
-        close(CH_SF(ch)->raw_l3_sock);
+    pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
+    if(CH_VPN(ch)->raw_l3_sock)
+        close(CH_VPN(ch)->raw_l3_sock);
 }
 
 static void stream_sf_socket_delete(ch_vpn_socket_proxy_t * sf)
@@ -600,10 +602,10 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
     } else { // All except CONNECT
         ch_vpn_socket_proxy_t * sf_sock = NULL;
         if(sf_pkt->header.op_code != VPN_PACKET_OP_CODE_CONNECT) {
-            pthread_mutex_lock(&( CH_SF(ch)->mutex));
+            pthread_mutex_lock(&( CH_VPN(ch)->mutex));
             //      log_it(L_DEBUG,"Looking in hash table with %d",remote_sock_id);
-            HASH_FIND_INT((CH_SF(ch)->socks), &remote_sock_id, sf_sock);
-            pthread_mutex_unlock(&( CH_SF(ch)->mutex));
+            HASH_FIND_INT((CH_VPN(ch)->socks), &remote_sock_id, sf_sock);
+            pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
             if(sf_sock != NULL) {
                 pthread_mutex_lock(&sf_sock->mutex); // Unlock it in your case as soon as possible to reduce lock time
                 sf_sock->time_lastused = time(NULL);
@@ -619,9 +621,9 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
                     if((ret = send(sf_sock->sock, sf_pkt->data, sf_pkt->header.op_data.data_size, 0)) < 0) {
                         log_it(L_INFO, "Disconnected from the remote host");
                         pthread_mutex_unlock(&sf_sock->mutex);
-                        pthread_mutex_lock(&( CH_SF(ch)->mutex));
-                        HASH_DEL(CH_SF(ch)->socks, sf_sock);
-                        pthread_mutex_unlock(&( CH_SF(ch)->mutex));
+                        pthread_mutex_lock(&( CH_VPN(ch)->mutex));
+                        HASH_DEL(CH_VPN(ch)->socks, sf_sock);
+                        pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
 
                         pthread_mutex_lock(&sf_socks_mutex);
                         HASH_DELETE(hh2, sf_socks, sf_sock);
@@ -651,9 +653,9 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
                 case VPN_PACKET_OP_CODE_DISCONNECT: {
                     log_it(L_INFO, "Disconnect action from %d sock_id", sf_sock->id);
 
-                    pthread_mutex_lock(&( CH_SF(ch)->mutex));
-                    HASH_DEL(CH_SF(ch)->socks, sf_sock);
-                    pthread_mutex_unlock(&( CH_SF(ch)->mutex));
+                    pthread_mutex_lock(&( CH_VPN(ch)->mutex));
+                    HASH_DEL(CH_VPN(ch)->socks, sf_sock);
+                    pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
 
                     pthread_mutex_lock(&sf_socks_mutex);
                     HASH_DELETE(hh2, sf_socks, sf_sock);
@@ -683,7 +685,7 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
                 log_it(L_WARNING, "Packet input: packet with sock_id %d thats not present in current stream channel",
                         remote_sock_id);
         } else {
-            HASH_FIND_INT(CH_SF(ch)->socks, &remote_sock_id, sf_sock);
+            HASH_FIND_INT(CH_VPN(ch)->socks, &remote_sock_id, sf_sock);
             if(sf_sock) {
                 log_it(L_WARNING, "Socket id %d is already used, take another number for socket id", remote_sock_id);
             } else { // Connect action
@@ -720,8 +722,8 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
                             pthread_mutex_init(&sf_sock->mutex, NULL);
 
                             pthread_mutex_lock(&sf_socks_mutex);
-                            pthread_mutex_lock(&( CH_SF(ch)->mutex));
-                            HASH_ADD_INT(CH_SF(ch)->socks, id, sf_sock);
+                            pthread_mutex_lock(&( CH_VPN(ch)->mutex));
+                            HASH_ADD_INT(CH_VPN(ch)->socks, id, sf_sock);
                             log_it(L_DEBUG, "Added %d sock_id with sock %d to the hash table", sf_sock->id,
                                     sf_sock->sock);
                             HASH_ADD(hh2, sf_socks, id, sizeof(sf_sock->id), sf_sock);
@@ -730,7 +732,7 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg)
                             HASH_ADD(hh_sock, sf_socks_client, sock, sizeof(int), sf_sock);
                             //log_it(L_DEBUG,"Added %d sock_id with sock %d to the socks hash table",sf->id,sf->sock);
                             pthread_mutex_unlock(&sf_socks_mutex);
-                            pthread_mutex_unlock(&( CH_SF(ch)->mutex));
+                            pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
 
                             struct epoll_event ev;
                             ev.data.fd = s;
@@ -944,8 +946,8 @@ void* srv_ch_sf_thread_raw(void *arg)
                     in_daddr.s_addr = iph->daddr;
                     in_saddr.s_addr = iph->saddr;
                     char str_daddr[42], str_saddr[42];
-                    strncpy(str_saddr, inet_ntoa(in_saddr), sizeof(str_saddr));
-                    strncpy(str_daddr, inet_ntoa(in_daddr), sizeof(str_daddr));
+                    dap_snprintf(str_saddr, sizeof(str_saddr), "%s",inet_ntoa(in_saddr) );
+                    dap_snprintf(str_daddr, sizeof(str_daddr), "%s",inet_ntoa(in_daddr) );
 
                     if(iph->tot_len > (uint16_t) read_ret) {
                         log_it(L_INFO, "Tun/Tap interface returned only the fragment (tot_len =%u  read_ret=%d) ",
@@ -1002,7 +1004,7 @@ void srv_ch_sf_packet_out(dap_stream_ch_t* ch, void* arg)
     ch_vpn_socket_proxy_t * cur, *tmp;
     bool isSmthOut = false;
 //    log_it(L_DEBUG,"Socket forwarding packet out callback: %u sockets in hashtable", HASH_COUNT(CH_SF(ch)->socks) );
-    HASH_ITER(hh, CH_SF(ch)->socks , cur, tmp)
+    HASH_ITER(hh, CH_VPN(ch)->socks , cur, tmp)
     {
         bool signalToBreak = false;
         pthread_mutex_lock(&(cur->mutex));
@@ -1035,9 +1037,9 @@ void srv_ch_sf_packet_out(dap_stream_ch_t* ch, void* arg)
         cur->pkt_out_size = 0;
         if(cur->signal_to_delete) {
             log_it(L_NOTICE, "Socket id %d got signal to be deleted", cur->id);
-            pthread_mutex_lock(&( CH_SF(ch)->mutex));
-            HASH_DEL(CH_SF(ch)->socks, cur);
-            pthread_mutex_unlock(&( CH_SF(ch)->mutex));
+            pthread_mutex_lock(&( CH_VPN(ch)->mutex));
+            HASH_DEL(CH_VPN(ch)->socks, cur);
+            pthread_mutex_unlock(&( CH_VPN(ch)->mutex));
 
             pthread_mutex_lock(&(sf_socks_mutex));
             HASH_DELETE(hh2, sf_socks, cur);