diff --git a/dap-sdk b/dap-sdk
index 3ea2d8efab87f827cc27f903778db66c61074eef..cad9d9aad6754d38daf334a93c4f522439ae87a0 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit 3ea2d8efab87f827cc27f903778db66c61074eef
+Subproject commit cad9d9aad6754d38daf334a93c4f522439ae87a0
diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c
index 8415b5b77d1b2ef8d267e376f78a70805b6207ff..00410809fb86f219fc939b5bbdccd7f82bb3955b 100644
--- a/modules/chain/dap_chain.c
+++ b/modules/chain/dap_chain.c
@@ -745,7 +745,7 @@ ssize_t dap_chain_atom_save(dap_chain_cell_t *a_chain_cell, const uint8_t *a_ato
                 log_it(L_CRITICAL, g_error_memory_alloc);
                 continue;
             }
-            dap_proc_thread_callback_add(NULL, s_notify_atom_on_thread, l_arg);
+            dap_proc_thread_callback_add_pri(NULL, s_notify_atom_on_thread, l_arg, DAP_QUEUE_MSG_PRIORITY_LOW);
         }
     }
     if (l_chain->callback_atom_add_from_treshold) {
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index d605dd6e3823b3d6c3ecb363f4c0521afa4499c4..998ceea52d952f03f36ed4b71aa3a71aff815813 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -183,7 +183,7 @@ typedef struct dap_chain_net_pvt{
 
     uint16_t poa_nodes_count;
     dap_stream_node_addr_t *poa_nodes_addrs;
-
+    bool seeds_is_poas;
     uint16_t seed_nodes_count;
     struct sockaddr_in *seed_nodes_ipv4;
     struct sockaddr_in6 *seed_nodes_ipv6;       // TODO
@@ -573,14 +573,15 @@ static bool s_net_link_start(dap_chain_net_t *a_net, struct net_link *a_link, ui
  * @brief s_fill_links_from_root_aliases
  * @param a_net
  */
-static void s_fill_links_from_root_aliases(dap_chain_net_t * a_net)
+static void s_fill_links_from_root_aliases(dap_chain_net_t *a_net)
 {
     dap_chain_net_pvt_t *l_net_pvt = PVT(a_net);
     for (size_t i = 0; i < l_net_pvt->seed_nodes_count; i++) {
         dap_chain_node_info_t l_link_node_info = {};
         l_link_node_info.hdr.ext_addr_v4 = l_net_pvt->seed_nodes_ipv4[i].sin_addr;
         l_link_node_info.hdr.ext_port = l_net_pvt->seed_nodes_ipv4[i].sin_port;
-        l_link_node_info.hdr.address = l_net_pvt->poa_nodes_addrs[i];
+        if (PVT(a_net)->seeds_is_poas)
+            l_link_node_info.hdr.address = l_net_pvt->poa_nodes_addrs[i];
         if (s_net_link_add(a_net, &l_link_node_info) > 0)    // Maximum links count reached
             break;
     }
@@ -2549,13 +2550,15 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
         if ((l_seed_nodes_ipv4_len && l_seed_nodes_ipv4_len != l_seed_nodes_port_len) ||
                 (l_seed_nodes_ipv6_len && l_seed_nodes_ipv6_len != l_seed_nodes_port_len) ||
                 (l_seed_nodes_hostnames_len && l_seed_nodes_hostnames_len != l_seed_nodes_port_len) ||
-                (!l_seed_nodes_ipv4_len && !l_seed_nodes_ipv6_len && !l_seed_nodes_hostnames_len)) {
+                (!l_seed_nodes_ipv4_len && !l_seed_nodes_ipv6_len && !l_seed_nodes_hostnames_len) ||
+                l_net_pvt->poa_nodes_count != l_seed_nodes_port_len) {
             log_it (L_ERROR, "Configuration mistake for seed nodes");
             dap_chain_net_delete(l_net);
             dap_config_close(l_cfg);
             return -6;
         }
         l_net_pvt->seed_nodes_count = l_seed_nodes_port_len;
+        l_net_pvt->seeds_is_poas = true;
     } else {
         if (!l_bootstrap_nodes_len)
             log_it(L_WARNING, "Configuration for network %s doesn't contains any links", l_net->pub.name);
@@ -2632,6 +2635,11 @@ int s_net_init(const char * a_net_name, uint16_t a_acl_idx)
         struct sockaddr_in tmp = l_net_pvt->seed_nodes_ipv4[n];
         l_net_pvt->seed_nodes_ipv4[n] = l_net_pvt->seed_nodes_ipv4[j];
         l_net_pvt->seed_nodes_ipv4[j] = tmp;
+        if (!l_bootstrap_nodes_len) {
+            dap_stream_node_addr_t l_addr = l_net_pvt->poa_nodes_addrs[n];
+            l_net_pvt->poa_nodes_addrs[n] = l_net_pvt->poa_nodes_addrs[j];
+            l_net_pvt->poa_nodes_addrs[j] = l_addr;
+        }
     }
 
     /* *** Chains init by configs *** */
@@ -3070,7 +3078,7 @@ static void s_nodelist_change_notify(dap_store_obj_t *a_obj, void *a_arg)
     char l_ts[128] = { '\0' };
     dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
 
-    log_it(L_MSG, "Add node "NODE_ADDR_FP_STR" ipv4 %s(ipv6 %s):%s at %s to network\n",
+    log_it(L_ATT, "Add node "NODE_ADDR_FP_STR" ipv4 %s(ipv6 %s):%s at %s to network\n",
                              NODE_ADDR_FP_ARGS_S(l_node_info->hdr.address),
                              l_node_ipv4_str, dap_itoa(l_node_info->hdr.ext_port),
                              l_ts, l_net->pub.name);
diff --git a/modules/net/dap_chain_net_node_list.c b/modules/net/dap_chain_net_node_list.c
index f493431055a54c5b0a5098b8ba88d7128de7a124..74ee7e389c6988c5d518bc0336b3f9842edb7f7b 100644
--- a/modules/net/dap_chain_net_node_list.c
+++ b/modules/net/dap_chain_net_node_list.c
@@ -254,44 +254,3 @@ int dap_chain_net_node_list_request(dap_chain_net_t *a_net, dap_chain_node_info_
     s_node_list_request_deinit(l_node_list_request);
     return ret;
 }
-
-static void s_node_list_callback_notify(dap_store_obj_t *a_obj, void *a_arg)
-{
-    if (!a_arg || !a_obj || !a_obj->key)
-        return;
-    dap_chain_net_t *l_net = (dap_chain_net_t *)a_arg;
-    assert(l_net);
-
-    if (!dap_strcmp(a_obj->group, l_net->pub.gdb_nodes)) {
-        if (a_obj->value && a_obj->type == DAP_GLOBAL_DB_OPTYPE_ADD) {
-            dap_chain_node_info_t *l_node_info = (dap_chain_node_info_t *)a_obj->value;
-            if(l_node_info->info.owner_addr.uint64 == 0){
-                log_it(L_NOTICE, "Node %s removed, there is not pinners", a_obj->key);
-                dap_global_db_del_sync(a_obj->group, a_obj->key);
-            } else {
-                char l_node_ipv4_str[INET_ADDRSTRLEN]={ '\0' }, l_node_ipv6_str[INET6_ADDRSTRLEN]={ '\0' };
-                inet_ntop(AF_INET, &l_node_info->hdr.ext_addr_v4, l_node_ipv4_str, INET_ADDRSTRLEN);
-                inet_ntop(AF_INET6, &l_node_info->hdr.ext_addr_v6, l_node_ipv6_str, INET6_ADDRSTRLEN);
-                char l_ts[128] = { '\0' };
-                dap_nanotime_to_str_rfc822(l_ts, sizeof(l_ts), a_obj->timestamp);
-
-                log_it(L_MSG, "Add node "NODE_ADDR_FP_STR" %s %u, pinned by "NODE_ADDR_FP_STR" at %s",
-                                         NODE_ADDR_FP_ARGS_S(l_node_info->hdr.address),
-                                         l_node_ipv4_str, l_node_info->hdr.ext_port,
-                                         NODE_ADDR_FP_ARGS_S(l_node_info->info.owner_addr),
-                                         l_ts);
-            }
-        }
-    }
-}
-
-int dap_chain_net_node_list_init()
-{
-    uint16_t l_net_count = 0;
-    dap_chain_net_t **l_net_list = dap_chain_net_list(&l_net_count);
-    for (uint16_t i = 0; i < l_net_count; i++) {
-        dap_chain_net_add_nodelist_notify_callback(l_net_list[i], s_node_list_callback_notify, l_net_list[i]);
-    }
-    DAP_DELETE(l_net_list);
-    return 0;
-}