diff --git a/modules/chain/dap_chain_ch.c b/modules/chain/dap_chain_ch.c
index b4d8e0bff82d80cc473a037eccea210bb8dec6de..47fd9aec71e4b07cb53464382fb84441cd23efd1 100644
--- a/modules/chain/dap_chain_ch.c
+++ b/modules/chain/dap_chain_ch.c
@@ -345,8 +345,7 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t* a_ch, void* a_arg)
     } break;
 
     case DAP_CHAIN_CH_PKT_TYPE_CHAIN: {
-        if (!l_chain_pkt_data_size || l_chain_pkt_data_size > sizeof(dap_chain_ch_pkt_t) + DAP_CHAIN_ATOM_MAX_SIZE
-                                                                                         * 5) { // For legacy block sizes
+        if (!l_chain_pkt_data_size || l_chain_pkt_data_size > sizeof(dap_chain_ch_pkt_t) + DAP_CHAIN_ATOM_MAX_SIZE) {
             log_it(L_WARNING, "Incorrect data size %zu in packet %s", l_chain_pkt_data_size,
                                                     dap_chain_ch_pkt_type_to_str(l_ch_pkt->hdr.type));
             dap_stream_ch_write_error_unsafe(a_ch, l_chain_pkt->hdr.net_id,
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index a5096b6d21f76733413db2eb78d86bbeee8f9862..8c81fb48076400c3e3e0b126070a749b6c3ebf2e 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -2236,7 +2236,7 @@ static bool s_stream_ch_packet_in(dap_stream_ch_t *a_ch, void *a_arg)
     dap_chain_esbocs_message_t *l_message = (dap_chain_esbocs_message_t *)l_ch_pkt->data;
     size_t l_message_size = l_ch_pkt->hdr.data_size;
     if (l_message_size < sizeof(dap_chain_esbocs_message_t) ||
-            l_message_size > DAP_CHAIN_ATOM_MAX_SIZE + PKT_SIGN_N_HDR_OVERHEAD ||
+            l_message_size > DAP_CHAIN_CANDIDATE_MAX_SIZE + PKT_SIGN_N_HDR_OVERHEAD ||
             l_message_size != sizeof(*l_message) + l_message->hdr.sign_size + l_message->hdr.message_size) {
         log_it(L_WARNING, "Invalid message size %zu, drop this packet", l_message_size);
         return false;
diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c
index cd610ee0fa654eebb95d03dd3e1fcd081b8aeaec..538969e9a518c9f42e0e7f996b6b5162e5b825c6 100644
--- a/modules/net/dap_chain_node.c
+++ b/modules/net/dap_chain_node.c
@@ -492,7 +492,7 @@ dap_chain_datum_t **s_service_state_datums_create(dap_chain_srv_hardfork_state_t
 {
     dap_chain_datum_t **ret = NULL;
     size_t l_datums_count = 0;
-    const uint64_t l_max_step_size = DAP_CHAIN_ATOM_MAX_SIZE - sizeof(dap_chain_datum_service_state_t);
+    const uint64_t l_max_step_size = DAP_CHAIN_CANDIDATE_MAX_SIZE - sizeof(dap_chain_datum_service_state_t);
     uint64_t l_step_size = dap_min(l_max_step_size, a_state->size);
     byte_t *l_offset = a_state->data, *l_ptr = l_offset, *l_end = a_state->data + a_state->size * a_state->count;
     while (l_offset < l_end) {
diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c
index 0f665559fe155d0be3ed5bb3e3a76a128b109cec..5be98b1c479a6cdab36f95930e7b6f2565ab6152 100644
--- a/modules/type/blocks/dap_chain_cs_blocks.c
+++ b/modules/type/blocks/dap_chain_cs_blocks.c
@@ -2636,8 +2636,8 @@ static size_t s_callback_add_datums(dap_chain_t *a_chain, dap_chain_datum_t **a_
             log_it(L_WARNING, "Empty datum"); /* How might it be? */
             continue;
         }
-        if (l_blocks->block_new_size + l_datum_size > DAP_CHAIN_ATOM_MAX_SIZE) {
-            log_it(L_DEBUG, "Maximum size exeeded, %zu > %d", l_blocks->block_new_size + l_datum_size, DAP_CHAIN_ATOM_MAX_SIZE);
+        if (l_blocks->block_new_size + l_datum_size > DAP_CHAIN_CANDIDATE_MAX_SIZE) {
+            log_it(L_DEBUG, "Maximum size exeeded, %zu > %d", l_blocks->block_new_size + l_datum_size, DAP_CHAIN_CANDIDATE_MAX_SIZE);
             break;
         }
         if (!l_blocks->block_new) {
diff --git a/modules/type/blocks/include/dap_chain_block.h b/modules/type/blocks/include/dap_chain_block.h
index c21e531057a10b39334f2337f4cd5476d05d3fdb..755a6aaf4cdb5ef89830b216de492bb031462dce 100644
--- a/modules/type/blocks/include/dap_chain_block.h
+++ b/modules/type/blocks/include/dap_chain_block.h
@@ -24,12 +24,18 @@
 #include "dap_common.h"
 #include "dap_time.h"
 #include "dap_hash.h"
+#include "dap_chain.h"
 #include "dap_chain_common.h"
 #include "dap_chain_datum.h"
 
 #define DAP_CHAIN_BLOCK_SIGNATURE 0xDA05BF8E
 #define DAP_CHAIN_BLOCK_ID_SIZE 4
 
+#define DAP_CHAIN_CANDIDATE_SIGNS_MAX_SIZE  (256 * 1024)
+#if (DAP_CHAIN_CANDIDATE_SIGNS_MAX_SIZE >= DAP_CHAIN_ATOM_MAX_SIZE)
+#error DAP_CHAIN_ATOM_MAX_SIZE should be greater than DAP_CHAIN_CANDIDATE_SIGNS_MAX_SIZE
+#endif
+#define DAP_CHAIN_CANDIDATE_MAX_SIZE (DAP_CHAIN_ATOM_MAX_SIZE - DAP_CHAIN_CANDIDATE_SIGNS_MAX_SIZE)
 
 typedef union dap_chain_block_typeid{
     uint8_t data[DAP_CHAIN_BLOCK_ID_SIZE];