diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h
index 116609a436e7cf9509034c5563991eeb4cac0444..4762d843621b0144ea08ae96470f56031ceffbee 100644
--- a/modules/chain/include/dap_chain.h
+++ b/modules/chain/include/dap_chain.h
@@ -101,6 +101,7 @@ typedef dap_list_t *(*dap_chain_callback_get_poa_certs)(dap_chain_t *a_chain, si
 typedef void (*dap_chain_callback_set_min_validators_count)(dap_chain_t *a_chain,  uint16_t a_new_value);
 
 typedef uint256_t (*dap_chain_callback_get_minimum_fee)(dap_chain_t *a_chain);
+typedef dap_enc_key_t* (*dap_chain_callback_get_signing_certificate)(dap_chain_t *a_chain);
 
 typedef void (*dap_chain_callback_load_from_gdb)(dap_chain_t *a_chain);
 
@@ -183,6 +184,7 @@ typedef struct dap_chain {
     dap_chain_callback_set_min_validators_count callback_set_min_validators_count;
 
     dap_chain_callback_get_minimum_fee callback_get_minimum_fee;
+    dap_chain_callback_get_signing_certificate callback_get_signing_certificate;
 
     dap_chain_callback_load_from_gdb callback_load_from_gdb;
 
diff --git a/modules/channel/chain-net/dap_stream_ch_chain_net.c b/modules/channel/chain-net/dap_stream_ch_chain_net.c
index b24ce59faadcf1f4e5ff7d19de234e333c19bf4a..c66e3cbb689f0c63b6114fd3f32bd72398ee3e10 100644
--- a/modules/channel/chain-net/dap_stream_ch_chain_net.c
+++ b/modules/channel/chain-net/dap_stream_ch_chain_net.c
@@ -54,6 +54,8 @@
 #include "dap_stream_ch_chain_net_pkt.h"
 #include "dap_stream_ch_chain_net.h"
 
+#include "dap_chain_net_srv_stake_pos_delegate.h"
+
 #define LOG_TAG "dap_stream_ch_chain_net"
 
 static void s_stream_ch_new(dap_stream_ch_t* ch, void* arg);
@@ -316,8 +318,81 @@ void s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
                             memcpy( &l_session_data->addr_remote,l_addr_new,sizeof (*l_addr_new) );
                         DAP_DELETE(l_addr_new);
                     }
-                }
-                break;
+                } break;
+                case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST:{
+                    log_it(L_INFO, "Get CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST");
+                    dap_chain_net_t * l_net = dap_chain_net_by_id( l_ch_chain_net_pkt->hdr.net_id );
+                    if ( l_net == NULL){
+                        char l_err_str[]="ERROR_NET_INVALID_ID";
+                        dap_stream_ch_chain_net_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ERROR ,
+                                                          l_ch_chain_net_pkt->hdr.net_id, l_err_str,sizeof (l_err_str));
+                        dap_stream_ch_set_ready_to_write_unsafe(a_ch, true);
+                        log_it(L_ERROR, "Invalid net id in packet");
+                    } else {
+                        dap_chain_net_srv_order_t * l_orders = NULL;
+                        dap_enc_key_t * enc_key_pvt = NULL;
+                        dap_chain_t *l_chain = NULL;
+                        DL_FOREACH(l_net->pub.chains, l_chain)
+                               if((enc_key_pvt = l_chain->callback_get_signing_certificate(l_chain)))
+                                    break;
+                        dap_sign_t *l_sign = NULL;
+                        size_t sign_s = 0;
+                        size_t l_orders_num = 0;
+                        dap_stream_ch_chain_rnd_t *send = NULL;
+                        dap_chain_net_srv_price_unit_uid_t l_price_unit = { { 0 } };
+                        dap_chain_net_srv_uid_t l_uid = { .uint64 = DAP_CHAIN_NET_SRV_STAKE_POS_DELEGATE_ID };
+                        uint256_t l_price_min = {};
+                        uint256_t l_price_max = {};
+                        uint8_t flags = 0;
+
+                        if(enc_key_pvt)
+                        {
+                            flags = flags | F_CERT;//faund sert
+                            l_sign = dap_sign_create(enc_key_pvt, (uint8_t*)l_ch_chain_net_pkt->data,
+                                                   l_ch_chain_net_pkt_data_size, 0);
+                            if(l_sign)
+                            {
+                                sign_s = dap_sign_get_size(l_sign);
+                                flags = flags | D_SIGN;//data signed
+                            }
+                            else
+                                flags = flags & ~D_SIGN;//data doesn't sign
+                        }
+                        else
+                            flags = flags & ~F_CERT;//Specified certificate not found
+
+                        send = DAP_NEW_Z_SIZE(dap_stream_ch_chain_rnd_t,sizeof(dap_stream_ch_chain_rnd_t)+sign_s);
+#ifdef DAP_VERSION
+                        strncpy((char *)send->header.version, (char *)DAP_VERSION, sizeof(send->header.version));
+#endif
+                        send->header.sign_size = sign_s;
+                        //strncpy(send->header.data,(uint8_t*)l_ch_chain_net_pkt->data,10);
+                        flags = (l_net->pub.mempool_autoproc) ? flags | A_PROC : flags & ~A_PROC;
+
+                        dap_chain_net_srv_order_find_all_by(l_net,SERV_DIR_UNDEFINED,l_uid,
+                                                           l_price_unit,NULL,l_price_min,l_price_max,&l_orders,&l_orders_num);
+                        flags = l_orders_num ? flags | F_ORDR : flags & ~F_ORDR;
+                        bool auto_online = dap_config_get_item_bool_default( g_config, "general", "auto_online", true );
+                        bool auto_update = dap_config_get_item_bool_default( g_config, "general", "auto_update", true );
+                        flags = auto_online ? flags | A_ONLN : flags & ~A_ONLN;
+                        flags = auto_update ? flags | A_UPDT : flags & ~A_UPDT;
+                        send->header.flags = flags;
+                        //add sign
+                        if(sign_s)
+                            memcpy(send->sign,l_sign,sign_s);
+                        dap_stream_ch_chain_net_pkt_write(a_ch, DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY ,
+                                                         l_ch_chain_net_pkt->hdr.net_id, send, sizeof(dap_stream_ch_chain_rnd_t)+sign_s);
+                        dap_stream_ch_set_ready_to_write_unsafe(a_ch, true);
+                        if(l_sign)
+                            DAP_DELETE(l_sign);
+                        DAP_DELETE(send);
+                    }
+                }break;
+                case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY:{
+                    log_it(L_INFO, "Get CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY");
+
+                    dap_stream_ch_set_ready_to_write_unsafe(a_ch, false);
+                }break;
             }
             if(l_ch_chain_net->notify_callback)
                 l_ch_chain_net->notify_callback(l_ch_chain_net,l_ch_pkt->hdr.type, l_ch_chain_net_pkt,
diff --git a/modules/channel/chain-net/include/dap_stream_ch_chain_net.h b/modules/channel/chain-net/include/dap_stream_ch_chain_net.h
index 16bcfed44d388fd91a4e1fce25eabbd0ad3e147c..caf3267e84c35bf8dee1b8614a4f4273d656a880 100644
--- a/modules/channel/chain-net/include/dap_stream_ch_chain_net.h
+++ b/modules/channel/chain-net/include/dap_stream_ch_chain_net.h
@@ -41,6 +41,26 @@ typedef struct dap_stream_ch_chain_net {
     void *notify_callback_arg;
 } dap_stream_ch_chain_net_t;
 
+typedef struct dap_stream_ch_chain_rnd{
+    struct{
+        /// node Version
+        uint8_t version[32];
+        /// autoproc status
+        uint8_t flags;//0 bit -autoproc; 1 bit - find order; 2 bit - auto online; 3 bit - auto update; 6 bit - data sign; 7 bit - find cert;
+        uint32_t sign_size;
+        //uint8_t data[10];
+    }DAP_ALIGN_PACKED header;
+    byte_t sign[];
+} DAP_ALIGN_PACKED dap_stream_ch_chain_rnd_t;
+
+#define A_PROC 0x01
+#define F_ORDR 0x02
+#define A_ONLN 0x04
+#define A_UPDT 0x08
+#define D_SIGN 0x40
+#define F_CERT 0x80
+
+
 #define DAP_STREAM_CH_CHAIN_NET(a) ((dap_stream_ch_chain_net_t *) ((a)->internal) )
 
 uint8_t dap_stream_ch_chain_net_get_id();
diff --git a/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h b/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h
index 00272aa590527c701904d697a884c567d3f6ef04..79c1c92cd881aea81330892ad35c3e5b4d566e70 100644
--- a/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h
+++ b/modules/channel/chain-net/include/dap_stream_ch_chain_net_pkt.h
@@ -38,6 +38,10 @@
 
 #define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_ADDR_LEASE_REQUEST       0x17
 #define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_ADDR_LEASE               0x18
+
+#define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST  0x30
+#define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY          0x31
+
 #define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_DBG                           0x99
 
 #define DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_ERROR                         0xff
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 3f19d1919044d8ef002a0e16f3135b7aa0beb446..198ec5660159c00f82dcce60eef9a80a12858f1e 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -56,6 +56,7 @@ static int s_callback_created(dap_chain_t *a_chain, dap_config_t *a_chain_net_cf
 static size_t s_callback_block_sign(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_t **a_block_ptr, size_t a_block_size);
 static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_block_t *a_block, size_t a_block_size);
 static uint256_t s_callback_get_minimum_fee(dap_chain_t *a_chain);
+static dap_enc_key_t *s_callback_get_sign_key(dap_chain_t *a_chain);
 static void s_callback_set_min_validators_count(dap_chain_t *a_chain, uint16_t a_new_value);
 
 static int s_cli_esbocs(int argc, char ** argv, char **str_reply);
@@ -141,6 +142,7 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
     dap_chain_esbocs_pvt_t *l_esbocs_pvt = PVT(l_esbocs);
 
     a_chain->callback_get_minimum_fee = s_callback_get_minimum_fee;
+    a_chain->callback_get_signing_certificate = s_callback_get_sign_key;
 
     l_esbocs_pvt->debug = dap_config_get_item_bool_default(a_chain_cfg, "esbocs", "consensus_debug", false);
     l_esbocs_pvt->poa_mode = dap_config_get_item_bool_default(a_chain_cfg, "esbocs", "poa_mode", false);
@@ -307,6 +309,15 @@ static uint256_t s_callback_get_minimum_fee(dap_chain_t *a_chain)
     return l_esbocs_pvt->minimum_fee;
 }
 
+static dap_enc_key_t *s_callback_get_sign_key(dap_chain_t *a_chain)
+{
+    dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
+    dap_chain_esbocs_t *l_esbocs = DAP_CHAIN_ESBOCS(l_blocks);
+    dap_chain_esbocs_pvt_t *l_esbocs_pvt = PVT(l_esbocs);
+
+    return l_esbocs_pvt->blocks_sign_key;
+}
+
 static void s_callback_delete(dap_chain_cs_blocks_t *a_blocks)
 {
     dap_chain_esbocs_t *l_esbocs = DAP_CHAIN_ESBOCS(a_blocks);
diff --git a/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h b/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
index 0aaee8578e296a9718e1651fcdc3a980127caf93..a4582e4cf05f1301ba2ac46a95363f0a4ddab178 100644
--- a/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
+++ b/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
@@ -1,3 +1,5 @@
+#pragma once
+
 #include "dap_timerfd.h"
 #include "dap_chain.h"
 #include "dap_chain_block.h"
diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c
index b52edf182d25c58f722b9df06f8af934ddf60abc..ef1e975c918041cc2f502d39b3d8238d3c7b0e66 100644
--- a/modules/net/dap_chain_node_cli_cmd_tx.c
+++ b/modules/net/dap_chain_node_cli_cmd_tx.c
@@ -617,7 +617,8 @@ int com_ledger(int a_argc, char ** a_argv, char **a_str_reply)
     const char *l_addr_base58 = NULL;
     const char *l_wallet_name = NULL;
     const char *l_net_str = NULL;
-    const char *l_tx_hash_str = NULL;    
+    const char *l_chain_str = NULL;
+    const char *l_tx_hash_str = NULL;
 
     dap_chain_t * l_chain = NULL;
     dap_chain_net_t * l_net = NULL;
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index ccb7c9d18f32e9ce7c3cb39d6e61d97df1576cd8..2a24fc167989273398781cac30b94a59b9e34a79 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -329,6 +329,18 @@ 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);
         break;
     }
+    case DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY: {
+        if(a_pkt_net_data_size == sizeof(dap_chain_node_addr_t)) {
+            l_node_client->remote_node_addr = *(dap_chain_node_addr_t*)a_pkt_net->data;
+        }
+        pthread_mutex_lock(&l_node_client->wait_mutex);
+        l_node_client->callbacks_arg = a_pkt_net->data;
+        l_node_client->state = NODE_CLIENT_STATE_VALID_READY;
+        dap_cond_signal(l_node_client->wait_cond);
+        pthread_mutex_unlock(&l_node_client->wait_mutex);
+        break;
+
+    } break;
     default:;
     }
 }
diff --git a/modules/net/include/dap_chain_node_client.h b/modules/net/include/dap_chain_node_client.h
index 9951f2fa70ff6ac806c51fcfc3e9002d520e96f8..7c3bf9d657e13f350f0d2fe137e2e413381b30ea 100644
--- a/modules/net/include/dap_chain_node_client.h
+++ b/modules/net/include/dap_chain_node_client.h
@@ -48,6 +48,7 @@ typedef enum dap_chain_node_client_state {
     NODE_CLIENT_STATE_SYNC_CHAINS_RVRS = 112,
     NODE_CLIENT_STATE_SYNCED = 120,
     NODE_CLIENT_STATE_CHECKED = 130,
+    NODE_CLIENT_STATE_VALID_READY = 140,
 } dap_chain_node_client_state_t;
 
 typedef enum dap_chain_node_sync_status {
diff --git a/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
index 00fb5d4805d51069131fd7bf6867533ed2e48af4..d9d5f2bccc661608dec2e19a96171ca54276ba82 100644
--- a/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake_pos_delegate/dap_chain_net_srv_stake_pos_delegate.c
@@ -35,6 +35,11 @@
 #include "dap_chain_cs_block_poa.h"
 #include "dap_chain_cs_dag_poa.h"
 #include "dap_chain_net_srv_stake_pos_delegate.h"
+#include "dap_stream_ch_chain_net.h"
+#include "rand/dap_rand.h"
+#include "dap_chain_node_client.h"
+#include "dap_stream_ch_chain_net_pkt.h"
+#include "dap_chain_node_cli_cmd.h"
 
 #define LOG_TAG "dap_chain_net_srv_stake"
 
@@ -84,7 +89,9 @@ int dap_chain_net_srv_stake_pos_delegate_init()
          "\tInvalidate requested delegated stake transaction by hash or cert name or cert pkey hash within net name and"
          " return m-tokens to specified wallet (if any)\n"
     "srv_stake min_value -net <net_name> -cert <cert_name> -value <value>"
-         "\tSets the minimum stake value"
+         "\tSets the minimum stake value\n"
+    "srv_stake check -net <net_name> -tx <tx_hash>"
+         "\tCheck remote validator"
     );
 
     s_srv_stake = DAP_NEW_Z(dap_chain_net_srv_stake_t);
@@ -1149,10 +1156,133 @@ static int callback_compare_tx_list(const void * a_datum1, const void * a_datum2
     return -1;
 }
 
+void dap_chain_net_srv_stake_check_validator(dap_chain_net_t * a_net,
+                                             dap_hash_fast_t *a_tx_hash, int a_time_connect, int a_time_respone,char **a_str_reply)
+{
+    char *l_key = NULL;
+    size_t l_node_info_size = 0;
+    uint8_t l_test_data[1024] = {0};
+    dap_chain_node_client_t *l_node_client = NULL;
+    dap_chain_node_info_t *l_remote_node_info = NULL;
+    dap_ledger_t *l_ledger = dap_chain_ledger_by_net_name(a_net->pub.name);
+    dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_hash(l_ledger, a_tx_hash);
+    dap_chain_node_addr_t *l_signer_node_addr = NULL;
+
+    int l_prev_cond_idx = 0;
+    dap_chain_tx_out_cond_t *l_tx_out_cond = dap_chain_datum_tx_out_cond_get(l_tx,
+                                                  DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE_POS_DELEGATE, &l_prev_cond_idx);
+    if (!l_tx_out_cond) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "Requested conditional transaction has no requires conditional output");
+        log_it(L_WARNING, "Requested conditional transaction has no requires conditional output");
+        return;
+    }
+    l_signer_node_addr = &l_tx_out_cond->subtype.srv_stake_pos_delegate.signer_node_addr;
+
+    l_key = dap_chain_node_addr_to_hash_str(l_signer_node_addr);
+    if(!l_key)
+    {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "can't calculate hash of addr");
+        log_it(L_WARNING, "can't calculate hash of addr");
+        return;
+    }
+
+    // read node
+    l_remote_node_info = (dap_chain_node_info_t *) dap_global_db_get_sync(a_net->pub.gdb_nodes, l_key, &l_node_info_size, NULL, NULL);
+
+    if(!l_remote_node_info) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "node not found in base");
+        log_it(L_WARNING, "node not found in base");
+        DAP_DELETE(l_key);
+        return;
+    }
+
+    size_t node_info_size_must_be = dap_chain_node_info_get_size(l_remote_node_info);
+    if(node_info_size_must_be != l_node_info_size) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "node has bad size in base=%zu (must be %zu)", l_node_info_size,
+                node_info_size_must_be);
+        log_it(L_WARNING, "node has bad size in base=%zu (must be %zu)", l_node_info_size, node_info_size_must_be);
+        DAP_DELETE(l_remote_node_info);
+        DAP_DELETE(l_key);
+        return;
+    }
+    DAP_DELETE(l_key);
+    // start connect
+    l_node_client = dap_chain_node_client_connect_channels(a_net,l_remote_node_info,"N");
+    if(!l_node_client) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "can't connect");
+        DAP_DELETE(l_remote_node_info);
+        return;
+    }
+    // wait connected
+    size_t rc = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_ESTABLISHED, a_time_connect);
+    if (rc) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "No response from node");
+        // clean client struct
+        dap_chain_node_client_close_mt(l_node_client);
+        DAP_DELETE(l_remote_node_info);
+        return;
+    }
+    log_it(L_NOTICE, "Stream connection established");
+
+    uint8_t l_ch_id = dap_stream_ch_chain_net_get_id();
+    dap_stream_ch_t * l_ch_chain = dap_client_get_stream_ch_unsafe(l_node_client->client, l_ch_id);
+
+    randombytes(l_test_data, sizeof(l_test_data));
+    rc = dap_stream_ch_chain_net_pkt_write(l_ch_chain,
+                                            DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST,
+                                            a_net->pub.id,
+                                            l_test_data, sizeof(l_test_data));
+    if (rc == 0) {
+        dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't send DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST packet");
+        log_it(L_WARNING, "Can't send DAP_STREAM_CH_CHAIN_NET_PKT_TYPE_NODE_VALIDATOR_READY_REQUEST packet");
+        dap_chain_node_client_close_mt(l_node_client);
+        DAP_DELETE(l_remote_node_info);
+        return;
+    }
+
+    rc = dap_chain_node_client_wait(l_node_client, NODE_CLIENT_STATE_VALID_READY, a_time_respone);
+    if (!rc) {
+        dap_stream_ch_chain_rnd_t *validators_data = (dap_stream_ch_chain_rnd_t*)l_node_client->callbacks_arg;
+        dap_sign_t *l_sign = NULL;        
+        bool l_sign_correct = false;
+        if(validators_data->header.sign_size){
+            l_sign = (dap_sign_t*)(l_node_client->callbacks_arg + sizeof(dap_stream_ch_chain_rnd_t));
+            dap_hash_fast_t l_sign_pkey_hash;
+            dap_sign_get_pkey_hash(l_sign, &l_sign_pkey_hash);
+            l_sign_correct = dap_hash_fast_compare(&l_tx_out_cond->subtype.srv_stake_pos_delegate.signing_addr.data.hash_fast, &l_sign_pkey_hash);
+            if (l_sign_correct)
+                l_sign_correct = dap_sign_verify_all(l_sign, validators_data->header.sign_size, l_test_data, sizeof(l_test_data));
+        }
+        bool l_overall_correct = l_sign_correct && validators_data->header.flags == 0xCF;
+        dap_cli_server_cmd_set_reply_text(a_str_reply,                                          
+                                          "-------------------------------------------------\n"
+                                          "VERSION \t |  %s \n"
+                                          "AUTO_PROC \t |  %s \n"
+                                          "ORDER \t\t |  %s \n"
+                                          "AUTO_ONLINE \t |  %s \n"
+                                          "AUTO_UPDATE \t |  %s \n"
+                                          "DATA_SIGNED \t |  %s \n"
+                                          "FOUND CERT \t |  %s\n"
+                                          "SIGN CORRECT \t |  %s\n"
+                                          "SUMMARY \t |  %s\n",
+                validators_data->header.version,
+                (validators_data->header.flags & A_PROC)?"true":"false",
+                (validators_data->header.flags & F_ORDR)?"true":"false",
+                (validators_data->header.flags & A_ONLN)?"true":"false",
+                (validators_data->header.flags & A_UPDT)?"true":"false",
+                (validators_data->header.flags & D_SIGN)?"true":"false",
+                (validators_data->header.flags & F_CERT)?"true":"false",
+                l_sign_correct ? "true":"false",
+                l_overall_correct ? "Validator ready" : "There are unresolved issues");
+    }
+    dap_chain_node_client_close_mt(l_node_client);
+    DAP_DELETE(l_remote_node_info);
+}
+
 static int s_cli_srv_stake(int a_argc, char **a_argv, char **a_str_reply)
 {
     enum {
-        CMD_NONE, CMD_ORDER, CMD_DELEGATE, CMD_APPROVE, CMD_LIST, CMD_INVALIDATE, CMD_MIN_VALUE,CMD_test
+        CMD_NONE, CMD_ORDER, CMD_DELEGATE, CMD_APPROVE, CMD_LIST, CMD_INVALIDATE, CMD_MIN_VALUE, CMD_CHECK
     };
     int l_arg_index = 1;
 
@@ -1188,13 +1318,36 @@ static int s_cli_srv_stake(int a_argc, char **a_argv, char **a_str_reply)
     else if (dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, min(a_argc, l_arg_index + 1), "min_value", NULL)) {
         l_cmd_num = CMD_MIN_VALUE;
     }
-    else if(dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, min(a_argc, l_arg_index + 1), "test_com", NULL)) {
-        l_cmd_num = CMD_test;
+    else if(dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, min(a_argc, l_arg_index + 1), "check", NULL)) {
+        l_cmd_num = CMD_CHECK;
     }
 
     switch (l_cmd_num) {
-        case CMD_test:
-        {           
+        case CMD_CHECK:
+        {
+            const char * l_netst = NULL;
+            const char * str_tx_hash = NULL;
+            dap_chain_net_t * l_net = NULL;
+            dap_hash_fast_t l_tx = {};
+
+            dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-net", &l_netst);
+            dap_cli_server_cmd_find_option_val(a_argv, l_arg_index, a_argc, "-tx", &str_tx_hash);
+            l_net = dap_chain_net_by_name(l_netst);
+            if (!l_net) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Network %s not found", l_netst);
+                return -1;
+            }
+
+            if (!str_tx_hash) {
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Command check requires parameter -tx");
+                return -2;
+            }
+            if (dap_chain_hash_fast_from_str(str_tx_hash, &l_tx)){
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't get hash_fast from %s", str_tx_hash);
+                return -3;
+            }
+
+            dap_chain_net_srv_stake_check_validator(l_net, &l_tx, 7000, 10000, a_str_reply);
 
         }
         break;
diff --git a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
index 08bee56dbc3d942fa945013fcfce2cd831cc20d4..3fc8c55f17e0102ea54b9ed1c92a5baca7889634 100644
--- a/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
+++ b/modules/service/stake_pos_delegate/include/dap_chain_net_srv_stake_pos_delegate.h
@@ -80,5 +80,8 @@ void dap_chain_net_srv_stake_get_fee_validators_str(dap_chain_net_t *a_net, dap_
 int dap_chain_net_srv_stake_load_cache(dap_chain_net_t *a_net);
 void dap_chain_net_srv_stake_purge(dap_chain_net_t *a_net);
 
+void dap_chain_net_srv_stake_check_validator(dap_chain_net_t * a_net,
+                                             dap_hash_fast_t *a_tx_hash, int a_time_connect, int a_time_respone, char **a_str_reply);
+
 dap_chain_datum_decree_t *dap_chain_net_srv_stake_decree_approve(dap_chain_net_t *a_net,
                                                                  dap_hash_fast_t *a_stake_tx_hash, dap_cert_t *a_cert);