diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index a2411e2e2016130161e1739d5ca5c1ae262c5f0e..a372e22211c06791af76939e4f993f207a386e55 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -1167,7 +1167,7 @@ static bool s_new_balancer_link_request(dap_chain_net_t *a_net, int a_link_repla
         return false;
     }
     if(!a_link_replace_tries){
-        dap_chain_net_node_balancer_t *l_link_full_node_list = dap_chain_net_balancer_get_node(a_net->pub.name);
+        dap_chain_net_node_balancer_t *l_link_full_node_list = dap_chain_net_balancer_get_node(a_net->pub.name,l_net_pvt->max_links_count);
         size_t node_cnt = 0,i = 0;        
         if(l_link_full_node_list)
         {
@@ -1221,9 +1221,10 @@ static bool s_new_balancer_link_request(dap_chain_net_t *a_net, int a_link_repla
     int ret;
     if (PVT(a_net)->balancer_http) {
         l_balancer_request->from_http = true;
-        char *l_request = dap_strdup_printf("%s/%s?version=1,method=r,net=%s",
+        char *l_request = dap_strdup_printf("%s/%s?version=1,method=r,needlink=%d,net=%s",
                                                 DAP_UPLINK_PATH_BALANCER,
                                                 DAP_BALANCER_URI_HASH,
+                                                l_net_pvt->required_links_count,
                                                 a_net->pub.name);
         ret = dap_client_http_request(l_balancer_request->worker,
                                                 l_node_addr_str,
diff --git a/modules/net/dap_chain_net_balancer.c b/modules/net/dap_chain_net_balancer.c
index e051bdb328a066f9c9105eee96e4d6636866cf1e..4b4087c85e0ddede0984670a1ca1159b92074d5a 100644
--- a/modules/net/dap_chain_net_balancer.c
+++ b/modules/net/dap_chain_net_balancer.c
@@ -40,7 +40,7 @@ static int callback_compare_node_list(const void * a_item1, const void * a_item2
               ? 1 : -1;
 }
 
-dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net_name)
+dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net_name,uint16_t a_links_need)
 {
     dap_list_t *l_node_addr_list = NULL,*l_objs_list = NULL;
     dap_chain_net_t *l_net = dap_chain_net_by_name(a_net_name);
@@ -51,7 +51,7 @@ dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net
     // get nodes list from global_db
     dap_global_db_obj_t *l_objs = NULL;
     size_t l_nodes_count = 0;
-    size_t l_node_num = 0;
+    size_t l_node_num = 0,l_links_need = 0;
     uint64_t l_blocks_events = 0;
     // read all node
     l_objs = dap_global_db_get_all_sync(l_net->pub.gdb_nodes, &l_nodes_count);
@@ -99,17 +99,17 @@ dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net
     dap_chain_node_info_t *l_node_candidate;
     if(l_node_num)
     {
-
+        l_links_need = l_node_num > a_links_need ? a_links_need : l_node_num;
         dap_chain_net_node_balancer_t *l_node_list_res = DAP_NEW_Z_SIZE(dap_chain_net_node_balancer_t,
-                   sizeof(dap_chain_net_node_balancer_t) + l_node_num * sizeof(dap_chain_node_info_t));
+                   sizeof(dap_chain_net_node_balancer_t) + l_links_need * sizeof(dap_chain_node_info_t));
         dap_chain_node_info_t * l_node_info = (dap_chain_node_info_t *)l_node_list_res->nodes_info;
         dap_list_t *nl = l_objs_list;
-        for(size_t i=0; i<l_node_num; i++,nl = nl->next)
+        for(size_t i=0; i<l_links_need; i++,nl = nl->next)
         {
             l_node_candidate = (dap_chain_node_info_t*)nl->data;
             *(l_node_info + i) = *l_node_candidate;
         }
-        l_node_list_res->count_node = l_node_num;
+        l_node_list_res->count_node = l_links_need;
         dap_list_free(l_objs_list);
         dap_global_db_objs_delete(l_objs, l_nodes_count);
         return l_node_list_res;
@@ -123,10 +123,10 @@ dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net
     }
 }
 
-dap_chain_net_node_balancer_t *s_balancer_issue_link(const char *a_net_name)
+dap_chain_net_node_balancer_t *s_balancer_issue_link(const char *a_net_name,uint16_t a_links_need)
 {
     dap_chain_net_t *l_net = dap_chain_net_by_name(a_net_name);
-    dap_chain_net_node_balancer_t *l_link_full_node_list = dap_chain_net_balancer_get_node(a_net_name);
+    dap_chain_net_node_balancer_t *l_link_full_node_list = dap_chain_net_balancer_get_node(a_net_name,a_links_need);
     if(l_link_full_node_list)
     {
         dap_chain_node_info_t * l_node_info = (dap_chain_node_info_t *)l_link_full_node_list->nodes_info;
@@ -167,8 +167,9 @@ void dap_chain_net_balancer_http_issue_link(dap_http_simple_t *a_http_simple, vo
     int l_protocol_version = 0;
     char l_issue_method = 0;
     const char l_net_token[] = "net=";
-    sscanf(a_http_simple->http_client->in_query_string, "version=%d,method=%c,net=",
-                                                            &l_protocol_version, &l_issue_method);
+    uint16_t links_need = 0;
+    sscanf(a_http_simple->http_client->in_query_string, "version=%d,method=%c,needlink=%d,net=",
+                                                            &l_protocol_version, &l_issue_method,&links_need);
     if (l_protocol_version != 1 || l_issue_method != 'r') {
         log_it(L_ERROR, "Unsupported prorocol version/method in the request to dap_chain_net_balancer module");
         *l_return_code = Http_Status_MethodNotAllowed;
@@ -183,8 +184,9 @@ void dap_chain_net_balancer_http_issue_link(dap_http_simple_t *a_http_simple, vo
     l_net_str += sizeof(l_net_token) - 1;
     char l_net_name[128] = {};
     strncpy(l_net_name, l_net_str, 127);
+    links_need = links_need ? links_need : 5;
     log_it(L_DEBUG, "HTTP balancer parser retrieve netname %s", l_net_name);
-    dap_chain_net_node_balancer_t *l_link_full_node_list = s_balancer_issue_link(l_net_name);
+    dap_chain_net_node_balancer_t *l_link_full_node_list = s_balancer_issue_link(l_net_name,links_need);
     if (!l_link_full_node_list) {
         log_it(L_WARNING, "Can't issue link for network %s, no acceptable links found", l_net_name);
         *l_return_code = Http_Status_NotFound;
@@ -204,5 +206,5 @@ void dap_chain_net_balancer_http_issue_link(dap_http_simple_t *a_http_simple, vo
 dap_chain_node_info_t *dap_chain_net_balancer_dns_issue_link(char *a_str)
 {
     log_it(L_DEBUG, "DNS balancer parser retrieve netname %s", a_str);
-    return s_balancer_issue_link(a_str);
+    return s_balancer_issue_link(a_str,3);
 }
diff --git a/modules/net/include/dap_chain_net_balancer.h b/modules/net/include/dap_chain_net_balancer.h
index 1a3d21134ef1e436f4d3d9d7f770a6dcbf47055c..637ba8da659ec2973ce0257069299429a3133aba 100644
--- a/modules/net/include/dap_chain_net_balancer.h
+++ b/modules/net/include/dap_chain_net_balancer.h
@@ -34,4 +34,4 @@ typedef struct dap_chain_net_node_balancer {
 
 void dap_chain_net_balancer_http_issue_link(dap_http_simple_t *a_http_simple, void *a_arg);
 dap_chain_node_info_t *dap_chain_net_balancer_dns_issue_link(char *a_str);
-dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net_name);
+dap_chain_net_node_balancer_t *dap_chain_net_balancer_get_node(const char *a_net_name,uint16_t a_links_need);