diff --git a/modules/chain/include/dap_chain.h b/modules/chain/include/dap_chain.h
index 59237d96057b64a84641848127359a4bd9ca3712..aae98dc3bb9f6e63dec5bf6add9c667d0212c1fc 100644
--- a/modules/chain/include/dap_chain.h
+++ b/modules/chain/include/dap_chain.h
@@ -119,6 +119,7 @@ typedef dap_list_t *(*dap_chain_callback_get_list)(dap_chain_t *a_chain, size_t
 typedef dap_list_t *(*dap_chain_callback_get_poa_certs)(dap_chain_t *a_chain, size_t *a_auth_certs_count, uint16_t *count_verify);
 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 uint256_t (*dap_chain_callback_get_collectiong_level)(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);
 typedef uint256_t (*dap_chain_callback_calc_reward)(dap_chain_t *a_chain, dap_hash_fast_t *a_block_hash, dap_pkey_t *a_block_sign_pkey);
@@ -197,6 +198,7 @@ typedef struct dap_chain {
     dap_chain_callback_get_poa_certs callback_get_poa_certs;
     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_collectiong_level callback_get_collectiong_level;
     dap_chain_callback_get_signing_certificate callback_get_signing_certificate;
     dap_chain_callback_calc_reward callback_calc_reward;
     dap_chain_callback_load_from_gdb callback_load_from_gdb;
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 5233bd3581116838137e90c01a1f0da09c0b94ae..516bd313637ce83cd5e0e2c110278c70b24aacb7 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -79,6 +79,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 uint256_t s_callback_get_collectiong_level(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 void s_db_change_notifier(dap_store_obj_t *a_obj, void * a_arg);
@@ -202,6 +203,7 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
     l_esbocs->chain = a_chain;
     a_chain->callback_set_min_validators_count = s_callback_set_min_validators_count;
     a_chain->callback_get_minimum_fee = s_callback_get_minimum_fee;
+    a_chain->callback_get_collectiong_level = s_callback_get_collectiong_level;
     a_chain->callback_get_signing_certificate = s_callback_get_sign_key;
 
     l_esbocs->_pvt = DAP_NEW_Z(dap_chain_esbocs_pvt_t);
@@ -309,8 +311,7 @@ static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_d
     }
     log_it(L_NOTICE, "The block %s was successfully added to autocollect %s list", a_key, l_fee_collect ? "fee" : "reward");
     assert(a_value_size == sizeof(uint256_t));
-    dap_chain_esbocs_session_t *l_session = a_arg;
-    dap_chain_esbocs_pvt_t *l_esbocs_pvt = PVT(l_session->esbocs);
+    dap_chain_esbocs_block_collect_t *l_block_collect_params = a_arg;
     bool l_level_reached = false;
     uint256_t l_value_total = uint256_0;
     size_t l_objs_count = 0;
@@ -318,7 +319,7 @@ static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_d
     if (l_objs_count >= 10) {
         for (size_t i = 0; i < l_objs_count; i++) {
             SUM_256_256(l_value_total, *(uint256_t*)l_objs[i].value, &l_value_total);
-            if (compare256(l_value_total, l_esbocs_pvt->collecting_level) >= 0) {
+            if (compare256(l_value_total, l_block_collect_params->collecting_level) >= 0) {
                 l_level_reached = true;
                 break;
             }
@@ -331,13 +332,13 @@ static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_d
             dap_chain_hash_fast_from_hex_str(l_objs[i].key, &block_hash);
             l_block_list = dap_list_append(l_block_list, DAP_DUP(&block_hash));
         }
-        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(l_session->chain);
+        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(l_block_collect_params->chain);
         char *l_tx_hash_str = l_fee_collect ?
-                    dap_chain_mempool_tx_coll_fee_create(l_blocks, l_esbocs_pvt->blocks_sign_key,
-                                     l_esbocs_pvt->collecting_addr, l_block_list, l_esbocs_pvt->minimum_fee, "hex")
+                    dap_chain_mempool_tx_coll_fee_create(l_blocks, l_block_collect_params->blocks_sign_key,
+                                     l_block_collect_params->collecting_addr, l_block_list, l_block_collect_params->minimum_fee, "hex")
                   :
-                    dap_chain_mempool_tx_reward_create(l_blocks, l_esbocs_pvt->blocks_sign_key,
-                                     l_esbocs_pvt->collecting_addr, l_block_list, l_esbocs_pvt->minimum_fee, "hex");
+                    dap_chain_mempool_tx_reward_create(l_blocks, l_block_collect_params->blocks_sign_key,
+                                     l_block_collect_params->collecting_addr, l_block_list, l_block_collect_params->minimum_fee, "hex");
         if (l_tx_hash_str) {
             log_it(L_NOTICE, "%s collect transaction successfully created, hash = %s",
                             l_fee_collect ? "Fee" : "Reward", l_tx_hash_str);
@@ -346,60 +347,95 @@ static void s_check_db_collect_callback(dap_global_db_instance_t UNUSED_ARG *a_d
             log_it(L_ERROR, "%s collect transaction creation error", l_fee_collect ? "Fee" : "Reward");
         dap_global_db_del_sync(a_group, NULL);
     }
+    DAP_DELETE(l_block_collect_params);
     dap_global_db_objs_delete(l_objs, l_objs_count);
 }
 
-static void s_new_atom_notifier(void *a_arg, dap_chain_t *a_chain, dap_chain_cell_id_t a_id,
-                                void *a_atom, size_t a_atom_size)
+void dap_chain_esbocs_add_block_collect(dap_chain_block_t *a_block_ptr, size_t a_block_size,
+                                        dap_chain_esbocs_block_collect_t *a_block_collect_params,int a_type)
 {
-    dap_chain_esbocs_session_t *l_session = a_arg;
-    assert(l_session->chain == a_chain);
-    pthread_mutex_lock(&l_session->mutex);
-    dap_chain_hash_fast_t l_last_block_hash;
-    dap_chain_get_atom_last_hash(l_session->chain, &l_last_block_hash, a_id);
-    if (!dap_hash_fast_compare(&l_last_block_hash, &l_session->cur_round.last_block_hash))
-        s_session_round_new(l_session);
-    pthread_mutex_unlock(&l_session->mutex);
-    if (!PVT(l_session->esbocs)->collecting_addr)
-        return;
-    dap_sign_t *l_sign = dap_chain_block_sign_get(a_atom, a_atom_size, 0);
-    if (dap_pkey_match_sign(PVT(l_session->esbocs)->block_sign_pkey, l_sign)) {
-        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
+    dap_hash_fast_t l_last_block_hash;
+    dap_chain_get_atom_last_hash(a_block_collect_params->chain, &l_last_block_hash,a_block_collect_params->cell_id);
+    dap_chain_t *l_chain = a_block_collect_params->chain;
+    dap_sign_t *l_sign = dap_chain_block_sign_get(a_block_ptr, a_block_size, 0);
+    if (dap_pkey_match_sign(a_block_collect_params->block_sign_pkey, l_sign)&&(!a_type||a_type==1)) {
+        dap_chain_esbocs_block_collect_t *l_block_collect_params = DAP_NEW_Z(dap_chain_esbocs_block_collect_t);
+        l_block_collect_params->collecting_level = a_block_collect_params->collecting_level;
+        l_block_collect_params->minimum_fee = a_block_collect_params->minimum_fee;
+        l_block_collect_params->chain = a_block_collect_params->chain;
+        l_block_collect_params->blocks_sign_key = a_block_collect_params->blocks_sign_key;
+        l_block_collect_params->block_sign_pkey = a_block_collect_params->block_sign_pkey;
+        l_block_collect_params->collecting_addr = a_block_collect_params->collecting_addr;
+
+        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(l_chain);
         dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_get_by_hash(l_blocks, &l_last_block_hash);
         assert(l_block_cache);
-        dap_chain_net_t *l_net = dap_chain_net_by_id(a_chain->net_id);
+        dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain->net_id);
         assert(l_net);
         uint256_t l_value_fee = uint256_0;
         dap_list_t *l_list_used_out = dap_chain_block_get_list_tx_cond_outs_with_val(
                                         l_net->pub.ledger, l_block_cache, &l_value_fee);
         if (!IS_ZERO_256(l_value_fee)) {
-            char *l_fee_group = dap_chain_cs_blocks_get_fee_group(a_chain->net_name);
+            char *l_fee_group = dap_chain_cs_blocks_get_fee_group(l_chain->net_name);
             dap_global_db_set(l_fee_group, l_block_cache->block_hash_str, &l_value_fee, sizeof(l_value_fee),
-                              false, s_check_db_collect_callback, l_session);
+                                false, s_check_db_collect_callback, l_block_collect_params);
             DAP_DELETE(l_fee_group);
         }
         dap_list_free_full(l_list_used_out, NULL);
     }
-    if (dap_chain_block_sign_match_pkey(a_atom, a_atom_size, PVT(l_session->esbocs)->block_sign_pkey)) {
-        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
+    if (dap_chain_block_sign_match_pkey(a_block_ptr, a_block_size, a_block_collect_params->block_sign_pkey)&&(!a_type||a_type==2)) {
+        dap_chain_esbocs_block_collect_t *l_block_collect_params = DAP_NEW_Z(dap_chain_esbocs_block_collect_t);
+        l_block_collect_params->collecting_level = a_block_collect_params->collecting_level;
+        l_block_collect_params->minimum_fee = a_block_collect_params->minimum_fee;
+        l_block_collect_params->chain = a_block_collect_params->chain;
+        l_block_collect_params->blocks_sign_key = a_block_collect_params->blocks_sign_key;
+        l_block_collect_params->block_sign_pkey = a_block_collect_params->block_sign_pkey;
+        l_block_collect_params->collecting_addr = a_block_collect_params->collecting_addr;
+
+        dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(l_chain);
         dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_get_by_hash(l_blocks, &l_last_block_hash);
         assert(l_block_cache);
-        dap_chain_net_t *l_net = dap_chain_net_by_id(a_chain->net_id);
+        dap_chain_net_t *l_net = dap_chain_net_by_id(l_chain->net_id);
         assert(l_net);
         if (!dap_ledger_is_used_reward(l_net->pub.ledger, &l_block_cache->block_hash,
-                                      &l_session->my_signing_addr.data.hash_fast)) {
-            uint256_t l_value_reward = a_chain->callback_calc_reward(a_chain, &l_block_cache->block_hash,
-                                                                     PVT(l_session->esbocs)->block_sign_pkey);
+                                        &l_block_collect_params->collecting_addr->data.hash_fast)) {
+            uint256_t l_value_reward = l_chain->callback_calc_reward(l_chain, &l_block_cache->block_hash,
+                                                                     l_block_collect_params->block_sign_pkey);
             if (!IS_ZERO_256(l_value_reward)) {
-                char *l_reward_group = dap_chain_cs_blocks_get_reward_group(a_chain->net_name);
+                char *l_reward_group = dap_chain_cs_blocks_get_reward_group(l_chain->net_name);
                 dap_global_db_set(l_reward_group, l_block_cache->block_hash_str, &l_value_reward, sizeof(l_value_reward),
-                                  false, s_check_db_collect_callback, l_session);
+                                    false, s_check_db_collect_callback, l_block_collect_params);
                 DAP_DELETE(l_reward_group);
             }
         }
     }
 }
 
+static void s_new_atom_notifier(void *a_arg, dap_chain_t *a_chain, dap_chain_cell_id_t a_id,
+                                void *a_atom, size_t a_atom_size)
+{
+    dap_chain_esbocs_session_t *l_session = a_arg;
+    assert(l_session->chain == a_chain);
+    pthread_mutex_lock(&l_session->mutex);
+    dap_chain_hash_fast_t l_last_block_hash;
+    dap_chain_get_atom_last_hash(l_session->chain, &l_last_block_hash, a_id);
+    if (!dap_hash_fast_compare(&l_last_block_hash, &l_session->cur_round.last_block_hash))
+        s_session_round_new(l_session);
+    pthread_mutex_unlock(&l_session->mutex);
+    if (!PVT(l_session->esbocs)->collecting_addr)
+        return;
+    dap_chain_esbocs_block_collect_t l_block_collect_params = (dap_chain_esbocs_block_collect_t){
+            .collecting_level = PVT(l_session->esbocs)->collecting_level,
+            .minimum_fee = PVT(l_session->esbocs)->minimum_fee,
+            .chain = a_chain,
+            .blocks_sign_key = PVT(l_session->esbocs)->blocks_sign_key,
+            .block_sign_pkey = PVT(l_session->esbocs)->block_sign_pkey,
+            .collecting_addr = PVT(l_session->esbocs)->collecting_addr,
+            .cell_id = a_id
+    };
+    dap_chain_esbocs_add_block_collect(a_atom, a_atom_size, &l_block_collect_params,0);
+}
+
 bool dap_chain_esbocs_get_autocollect_status(dap_chain_net_id_t a_net_id)
 {
     dap_chain_esbocs_session_t *l_session;
@@ -637,6 +673,15 @@ static uint256_t s_callback_get_minimum_fee(dap_chain_t *a_chain)
     return l_esbocs_pvt->minimum_fee;
 }
 
+static uint256_t s_callback_get_collectiong_level(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->collecting_level;
+}
+
 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);
diff --git a/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h b/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
index ab8eb9743be616510df3a054efd0cd96ab8a86cd..a1e8c4e4dcb577f0270e955eaf4b4c2e67cec29a 100644
--- a/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
+++ b/modules/consensus/esbocs/include/dap_chain_cs_esbocs.h
@@ -210,6 +210,16 @@ typedef struct dap_chain_esbocs_session {
     struct dap_chain_esbocs_session *prev, *next;
 } dap_chain_esbocs_session_t;
 
+typedef struct dap_chain_esbocs_block_collect{
+    uint256_t collecting_level;
+    uint256_t minimum_fee;
+    dap_chain_t *chain;
+    dap_enc_key_t * blocks_sign_key;
+    dap_pkey_t * block_sign_pkey;
+    dap_chain_addr_t * collecting_addr;
+    dap_chain_cell_id_t cell_id;
+}dap_chain_esbocs_block_collect_t;
+
 #define DAP_CHAIN_ESBOCS(a) ((dap_chain_esbocs_t *)(a)->_inheritor)
 
 int dap_chain_cs_esbocs_init();
@@ -221,5 +231,7 @@ void dap_chain_esbocs_start_timer(dap_chain_net_id_t a_net_id);
 dap_pkey_t *dap_chain_esbocs_get_sign_pkey(dap_chain_net_id_t a_net_id);
 uint256_t dap_chain_esbocs_get_fee(dap_chain_net_id_t a_net_id);
 bool dap_chain_esbocs_get_autocollect_status(dap_chain_net_id_t a_net_id);
+void dap_chain_esbocs_add_block_collect(dap_chain_block_t *a_block_ptr, size_t a_block_size,
+                                        dap_chain_esbocs_block_collect_t *a_block_collect_params,int a_type);
 bool dap_chain_esbocs_add_validator_to_clusters(dap_chain_net_id_t a_net_id, dap_stream_node_addr_t *a_validator_addr);
 bool dap_chain_esbocs_remove_validator_from_clusters(dap_chain_net_id_t a_net_id, dap_stream_node_addr_t *a_validator_addr);
diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c
index cac044c804aa681a8edac5d41f7c5713bca52ab4..41f43abe69c88204ca7ef2912c333315fb756348 100644
--- a/modules/type/blocks/dap_chain_cs_blocks.c
+++ b/modules/type/blocks/dap_chain_cs_blocks.c
@@ -201,7 +201,13 @@ int dap_chain_cs_blocks_init()
         "Rewards and fees autocollect status:\n"
             "block -net <net_name> -chain <chain_name> autocollect status\n"
                 "\t\t Show rewards and fees automatic collecting status (enabled or not)."
-                    " Show prepared blocks for collecting rewards and fees if status is enabled\n"
+                    " Show prepared blocks for collecting rewards and fees if status is enabled\n\n"
+
+        "Rewards and fees autocollect renew:\n"
+            "block -net <net_name> -chain <chain_name> autocollect renew\n"
+            " -cert <priv_cert_name> -addr <addr>\n"
+                "\t\t Update reward and fees block table."
+                    " Automatic collection of commission in case of triggering of the setting\n\n"
                                         );
     if( dap_chain_block_cache_init() ) {
         log_it(L_WARNING, "Can't init blocks cache");
@@ -1036,7 +1042,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply)
                 return -21;
             }
             // NOTE: This call will modify source string
-            l_block_list = s_block_parse_str_list((char *)l_hash_str, &l_hashes_count, l_chain);
+            l_block_list = s_block_parse_str_list((char *)l_hash_str, &l_hashes_count, l_chain);            
             if (!l_block_list || !l_hashes_count) {
                 dap_cli_server_cmd_set_reply_text(a_str_reply,
                         "Block fee collection requires at least one hash to create a transaction");
@@ -1059,15 +1065,126 @@ static int s_cli_blocks(int a_argc, char ** a_argv, void **a_str_reply)
         }break;
 
         case SUBCMD_AUTOCOLLECT: {
-            if (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "status") == -1) {
-                dap_cli_server_cmd_set_reply_text(a_str_reply, "Command 'block autocollect' requires subcommand 'status'");
-                return -14;
-            }
-            dap_string_t *l_reply_str = dap_string_new("");
-            s_print_autocollect_table(l_net, l_reply_str, "Fees");
-            s_print_autocollect_table(l_net, l_reply_str, "Rewards");
-            dap_cli_server_cmd_set_reply_text(a_str_reply, "%s", l_reply_str->str);
-            dap_string_free(l_reply_str, true);
+            const char * l_cert_name  = NULL, * l_addr_str = NULL;
+            dap_pkey_t * l_pub_key = NULL;
+            dap_hash_fast_t l_pkey_hash = {};
+            dap_chain_addr_t *l_addr = NULL;
+            size_t l_block_count = 0;
+            int fl_renew = dap_cli_server_cmd_check_option(a_argv, arg_index,a_argc, "renew");
+            if(fl_renew != -1)
+            {
+                dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-cert", &l_cert_name);
+                dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-addr", &l_addr_str);
+                l_addr = dap_chain_addr_from_str(l_addr_str);
+                if(!l_cert_name) {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Command 'block autocollect renew' requires parameter '-cert'", l_subcmd_str);
+                    return -20;
+                }
+                if (!l_addr_str) {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Command 'block autocollect renew' requires parameter '-addr'", l_addr_str);
+                    return -20;
+                }
+                dap_cert_t *l_cert = dap_cert_find_by_name(l_cert_name);
+                if (!l_cert) {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't find \"%s\" certificate", l_cert_name);
+                    return -20;
+                }
+                l_pub_key = dap_pkey_from_enc_key(l_cert->enc_key);
+                if (!l_pub_key) {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply,
+                            "Corrupted certificate \"%s\" have no public key data", l_cert_name);
+                    return -20;
+                }
+                dap_chain_esbocs_block_collect_t l_block_collect_params = (dap_chain_esbocs_block_collect_t){
+                        .collecting_level = l_chain->callback_get_collectiong_level,
+                        .minimum_fee = l_chain->callback_get_minimum_fee,
+                        .chain = l_chain,
+                        .blocks_sign_key = l_cert->enc_key,
+                        .block_sign_pkey = l_pub_key,
+                        .collecting_addr = l_addr
+                };
+                //Cleare gdb
+                size_t l_objs_fee_count = 0;
+                size_t l_objs_rew_count = 0;
+                char *l_group_fee = dap_chain_cs_blocks_get_fee_group(l_net->pub.name);
+                char *l_group_rew = dap_chain_cs_blocks_get_reward_group(l_net->pub.name);
+                dap_global_db_obj_t *l_objs_fee = dap_global_db_get_all_sync(l_group_fee, &l_objs_fee_count);
+                dap_global_db_obj_t *l_objs_rew = dap_global_db_get_all_sync(l_group_rew, &l_objs_rew_count);
+                if(l_objs_fee_count)dap_global_db_objs_delete(l_objs_fee,l_objs_fee_count);
+                if(l_objs_rew_count)dap_global_db_objs_delete(l_objs_rew,l_objs_rew_count);
+                DAP_DELETE(l_group_fee);
+                DAP_DELETE(l_group_rew);
+                dap_string_t *l_str_tmp = dap_string_new(NULL);
+
+                for (dap_chain_block_cache_t *l_block_cache = PVT(l_blocks)->blocks; l_block_cache; l_block_cache = l_block_cache->hh.next) {
+                    dap_time_t l_ts = l_block_cache->block->hdr.ts_created;
+                    dap_sign_t *l_sign = dap_chain_block_sign_get(l_block_cache->block, l_block_cache->block_size, 0);
+                    if (!l_pub_key) {
+                        dap_hash_fast_t l_sign_pkey_hash;
+                        dap_sign_get_pkey_hash(l_sign, &l_sign_pkey_hash);
+                        if (!dap_hash_fast_compare(&l_pkey_hash, &l_sign_pkey_hash))
+                            continue;
+                    } else if (!dap_pkey_compare_with_sign(l_pub_key, l_sign))
+                        continue;
+                    for (size_t i = 0; i < l_block_cache->datum_count; i++) {
+                        if (l_block_cache->datum[i]->header.type_id != DAP_CHAIN_DATUM_TX)
+                            continue;
+                        dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)l_block_cache->datum[i]->data;
+                        int l_out_idx_tmp = 0;
+                        if (NULL == dap_chain_datum_tx_out_cond_get(l_tx, DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE, &l_out_idx_tmp))
+                            continue;
+                        if (!dap_ledger_tx_hash_is_used_out_item(l_net->pub.ledger, l_block_cache->datum_hash + i, l_out_idx_tmp, NULL)) {
+                            dap_chain_esbocs_add_block_collect(l_block_cache->block, l_block_cache->block_size, &l_block_collect_params,1);
+                            char l_buf[50];
+                            dap_time_to_str_rfc822(l_buf, 50, l_ts);
+                            dap_string_append_printf(l_str_tmp, "fee - \t%s: ts_create=%s\n", l_block_cache->block_hash_str, l_buf);
+                            l_block_count++;
+                            break;
+                        }
+                    } 
+                    if (l_ts < DAP_REWARD_INIT_TIMESTAMP)
+                            continue;
+                    
+                    if (!l_pub_key) {
+                        bool l_found = false;
+                        for (size_t i = 0; i < l_block_cache->sign_count ; i++) {
+                            dap_sign_t *l_sign = dap_chain_block_sign_get(l_block_cache->block, l_block_cache->block_size, i);
+                            dap_hash_fast_t l_sign_pkey_hash;
+                            dap_sign_get_pkey_hash(l_sign, &l_sign_pkey_hash);
+                            if (dap_hash_fast_compare(&l_pkey_hash, &l_sign_pkey_hash)) {
+                                l_found = true;
+                                break;
+                            }
+                        }
+                        if(!l_found)
+                            continue;
+                    } else if (!dap_chain_block_sign_match_pkey(l_block_cache->block, l_block_cache->block_size, l_pub_key))
+                        continue;
+                    if (dap_ledger_is_used_reward(l_net->pub.ledger, &l_block_cache->block_hash, &l_pkey_hash))
+                        continue;
+                    dap_chain_esbocs_add_block_collect(l_block_cache->block, l_block_cache->block_size, &l_block_collect_params,2);
+                    {   
+                        char l_buf[50];
+                        dap_time_to_str_rfc822(l_buf, 50, l_ts);
+                        dap_string_append_printf(l_str_tmp, "rewards - \t%s: ts_create=%s\n", l_block_cache->block_hash_str, l_buf);
+                        l_block_count++; 
+                    }                   
+                }
+                dap_string_append_printf(l_str_tmp, "%s.%s: Have %"DAP_UINT64_FORMAT_U" blocks\n",
+                                     l_net->pub.name, l_chain->name, l_block_count);
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "%s", l_str_tmp->str);
+                dap_string_free(l_str_tmp, true);
+            }else{
+                if (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "status") == -1) {
+                    dap_cli_server_cmd_set_reply_text(a_str_reply, "Command 'block autocollect' requires subcommand 'status'");
+                    return -14;
+                }
+                dap_string_t *l_reply_str = dap_string_new("");
+                s_print_autocollect_table(l_net, l_reply_str, "Fees");
+                s_print_autocollect_table(l_net, l_reply_str, "Rewards");                
+                dap_cli_server_cmd_set_reply_text(a_str_reply, "%s", l_reply_str->str);
+                dap_string_free(l_reply_str, true);
+            }            
         } break;
 
         case SUBCMD_UNDEFINED: