diff --git a/modules/common/dap_chain_common.c b/modules/common/dap_chain_common.c
index adfc5a757957f18452fe2605be7c4c4154a3c8eb..098ddeba453baf2c9cb8ca966cf134242da5040d 100644
--- a/modules/common/dap_chain_common.c
+++ b/modules/common/dap_chain_common.c
@@ -94,21 +94,19 @@ json_object *dap_chain_addr_to_json(const dap_chain_addr_t *a_addr){
  * @param a_addr
  * @return
  */
-char* dap_chain_addr_to_str(const dap_chain_addr_t *a_addr)
+char *dap_chain_addr_to_str(const dap_chain_addr_t *a_addr)
 {
-    if ( a_addr ==NULL)
-        return  NULL;
-
-    if (dap_chain_addr_is_blank(a_addr)) return dap_strdup("null");
-
+// sanity check
+    dap_return_val_if_pass(!a_addr, NULL);
+    dap_return_val_if_pass(dap_chain_addr_is_blank(a_addr), dap_strdup("null"));
+//func work
     size_t l_ret_size = DAP_ENC_BASE58_ENCODE_SIZE(sizeof(dap_chain_addr_t));
-    char * l_ret = DAP_NEW_SIZE(char, l_ret_size);
-    if(dap_enc_base58_encode(a_addr, sizeof(dap_chain_addr_t), l_ret) > 0)
-        return l_ret;
-    else {
+    char *l_ret = DAP_NEW_SIZE(char, l_ret_size);
+    if(!dap_enc_base58_encode(a_addr, sizeof(dap_chain_addr_t), l_ret)) {
         DAP_DELETE(l_ret);
         return NULL;
     }
+    return l_ret;
 }
 
 /**
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 5ad77a015b7156141c62dc06576740649e0c64dc..e71fa132e6e658736f44b1f8d59efe8f7cd8bc9b 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -186,11 +186,9 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
 
     dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
     int l_ret = 0;
-    dap_chain_esbocs_t *l_esbocs = DAP_NEW_Z(dap_chain_esbocs_t);
-    if (!l_esbocs) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return - 5;
-    }
+    dap_chain_esbocs_t *l_esbocs = NULL;
+    DAP_NEW_Z_RET_VAL(l_esbocs, dap_chain_esbocs_t, -5, NULL);
+
     l_esbocs->blocks = l_blocks;   
     l_blocks->_inheritor = l_esbocs;
     l_blocks->callback_delete = s_callback_delete;
@@ -253,7 +251,7 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
             l_ret = -4;
             goto lb_err;
         }
-        char *l_signer_addr = dap_chain_addr_to_str(&l_signing_addr);
+        char *l_signer_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast);
         log_it(L_MSG, "add validator addr "NODE_ADDR_FP_STR", signing addr %s", NODE_ADDR_FP_ARGS_S(l_signer_node_addr), l_signer_addr);
         DAP_DELETE(l_signer_addr);
 
@@ -289,8 +287,7 @@ static int s_callback_new(dap_chain_t *a_chain, dap_config_t *a_chain_cfg)
 
 lb_err:
     dap_list_free_full(l_esbocs_pvt->poa_validators, NULL);
-    DAP_DEL_Z(l_esbocs_pvt);
-    DAP_DEL_Z(l_esbocs);
+    DAP_DEL_MULTY(l_esbocs_pvt, l_esbocs);
     l_blocks->_inheritor = NULL;
     l_blocks->callback_delete = NULL;
     l_blocks->callback_block_verify = NULL;
@@ -446,11 +443,9 @@ static int s_callback_created(dap_chain_t *a_chain, dap_config_t *a_chain_net_cf
         }
     }
 
-    dap_chain_esbocs_session_t *l_session = DAP_NEW_Z(dap_chain_esbocs_session_t);
-    if(!l_session) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return -8;
-    }
+    dap_chain_esbocs_session_t *l_session = NULL;
+    DAP_NEW_Z_RET_VAL(l_session, dap_chain_esbocs_session_t, -8, NULL);
+
     l_session->chain = a_chain;
     l_session->esbocs = l_esbocs;
     l_esbocs->session = l_session;
@@ -598,10 +593,8 @@ static dap_enc_key_t *s_callback_get_sign_key(dap_chain_t *a_chain)
 static void s_callback_delete(dap_chain_cs_blocks_t *a_blocks)
 {
     dap_chain_esbocs_t *l_esbocs = DAP_CHAIN_ESBOCS(a_blocks);
-    DAP_DEL_Z(PVT(l_esbocs)->block_sign_pkey);
-    DAP_DEL_Z(PVT(l_esbocs)->collecting_addr);
     dap_enc_key_delete(PVT(l_esbocs)->blocks_sign_key);
-    DAP_DEL_Z(l_esbocs->_pvt);
+    DAP_DEL_MULTY(PVT(l_esbocs)->block_sign_pkey, PVT(l_esbocs)->collecting_addr, l_esbocs->_pvt);
     dap_chain_esbocs_session_t *l_session = l_esbocs->session;
     if (!l_session) {
         log_it(L_INFO, "No session found");
@@ -624,8 +617,7 @@ static void s_callback_delete(dap_chain_cs_blocks_t *a_blocks)
     }
     pthread_mutex_unlock(&l_session->mutex);
     pthread_mutex_destroy(&l_session->mutex);
-    DAP_DELETE(l_session);
-    DAP_DEL_Z(a_blocks->_inheritor); // l_esbocs
+    DAP_DEL_MULTY(l_session, a_blocks->_inheritor); // a_blocks->_inheritor - l_esbocs
 }
 
 static void *s_callback_list_copy(const void *a_validator, UNUSED_ARG void *a_data)
@@ -635,11 +627,12 @@ static void *s_callback_list_copy(const void *a_validator, UNUSED_ARG void *a_da
 
 static void *s_callback_list_form(const void *a_srv_validator, UNUSED_ARG void *a_data)
 {
-    dap_chain_esbocs_validator_t *l_validator = DAP_NEW_Z(dap_chain_esbocs_validator_t);
-    if (!l_validator) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return NULL;
-    }
+// sanity check
+    dap_return_val_if_pass(!a_srv_validator, NULL);
+    dap_chain_esbocs_validator_t *l_validator = NULL;
+// memory alloc
+    DAP_NEW_Z_RET_VAL(l_validator, dap_chain_esbocs_validator_t, NULL, NULL);
+// func work
     l_validator->node_addr = ((dap_chain_net_srv_stake_item_t *)a_srv_validator)->node_addr;
     l_validator->signing_addr = ((dap_chain_net_srv_stake_item_t *)a_srv_validator)->signing_addr;
     l_validator->weight = ((dap_chain_net_srv_stake_item_t *)a_srv_validator)->value;
@@ -709,10 +702,7 @@ static dap_list_t *s_get_validators_list(dap_chain_esbocs_session_t *a_session,
                 log_it(L_MSG, "Round seed %s, sync attempt %"DAP_UINT64_FORMAT_U", chosen weight %s from %s, by number %s",
                                 l_seed_hash_str, a_skip_count + 1,
                                 l_chosen_weignt_str, l_total_weight_str, l_raw_result_str);
-                DAP_DELETE(l_chosen_weignt_str);
-                DAP_DELETE(l_total_weight_str);
-                DAP_DELETE(l_raw_result_str);
-                DAP_DELETE(l_seed_hash_str);
+                DAP_DEL_MULTY(l_chosen_weignt_str, l_total_weight_str, l_raw_result_str, l_seed_hash_str);
             }
             dap_list_t *l_chosen = NULL;
             uint256_t l_cur_weight = uint256_0;
@@ -731,8 +721,7 @@ static dap_list_t *s_get_validators_list(dap_chain_esbocs_session_t *a_session,
                              ((dap_chain_net_srv_stake_item_t *)l_chosen->data)->value,
                              &l_total_weight);
             l_validators = dap_list_remove_link(l_validators, l_chosen);
-            DAP_DELETE(l_chosen->data);
-            DAP_DELETE(l_chosen);
+            DAP_DEL_MULTY(l_chosen->data, l_chosen);
         }
         dap_list_free_full(l_validators, NULL);
     } else
@@ -832,17 +821,13 @@ static void s_session_update_penalty(dap_chain_esbocs_session_t *a_session)
         dap_chain_addr_t *l_signing_addr = &((dap_chain_esbocs_validator_t *)it->data)->signing_addr;
         HASH_FIND(hh, a_session->penalty, l_signing_addr, sizeof(*l_signing_addr), l_item);
         if (!l_item) {
-            l_item = DAP_NEW_Z(dap_chain_esbocs_penalty_item_t);
-            if (!l_item) {
-        log_it(L_CRITICAL, "Memory allocation error");
-                return;
-            }
+            DAP_NEW_Z_RET(l_item, dap_chain_esbocs_penalty_item_t, NULL);
             l_item->signing_addr = *l_signing_addr;
             HASH_ADD(hh, a_session->penalty, signing_addr, sizeof(*l_signing_addr), l_item);
         }
         if (l_item->miss_count < DAP_CHAIN_ESBOCS_PENALTY_KICK) {
             if (PVT(a_session->esbocs)->debug) {
-                char *l_addr_str = dap_chain_addr_to_str(l_signing_addr);
+                char *l_addr_str = dap_chain_hash_fast_to_str_new(&l_signing_addr->data.hash_fast);
                 log_it(L_DEBUG, "Increment miss count %d for addr %s. Miss count for kick is %d",
                                         l_item->miss_count, l_addr_str, DAP_CHAIN_ESBOCS_PENALTY_KICK);
                 DAP_DELETE(l_addr_str);
@@ -857,8 +842,7 @@ static void s_session_round_clear(dap_chain_esbocs_session_t *a_session)
     dap_chain_esbocs_message_item_t *l_message_item, *l_message_tmp;
     HASH_ITER(hh, a_session->cur_round.message_items, l_message_item, l_message_tmp) {
         HASH_DEL(a_session->cur_round.message_items, l_message_item);
-        DAP_DELETE(l_message_item->message);
-        DAP_DELETE(l_message_item);
+        DAP_DEL_MULTY(l_message_item->message, l_message_item);
     }
     dap_chain_esbocs_store_t *l_store_item, *l_store_tmp;
     HASH_ITER(hh, a_session->cur_round.store_items, l_store_item, l_store_tmp) {
@@ -1007,7 +991,7 @@ static uint64_t s_session_calc_current_round_id(dap_chain_esbocs_session_t *a_se
             }
         }
         if (l_id_candidate == 0) {
-            char *l_signing_addr_str = dap_chain_addr_to_str(&l_validator->signing_addr);
+            char *l_signing_addr_str = dap_chain_hash_fast_to_str_new(&l_validator->signing_addr.data.hash_fast);
             log_it(L_ERROR, "Can't find sync message of synced validator %s", l_signing_addr_str);
             DAP_DELETE(l_signing_addr_str);
             continue;
@@ -1088,7 +1072,8 @@ dap_chain_esbocs_directive_t *s_session_directive_ready(dap_chain_esbocs_session
     debug_if(PVT(a_session->esbocs)->debug, L_MSG, "Current consensus online %hu from %zu is acceptable, so issue the directive",
                                                     a_session->cur_round.total_validators_synced, l_list_length);
     uint32_t l_directive_size = s_directive_calc_size(l_kick ? DAP_CHAIN_ESBOCS_DIRECTIVE_KICK : DAP_CHAIN_ESBOCS_DIRECTIVE_LIFT);
-    dap_chain_esbocs_directive_t *l_ret = DAP_NEW_Z_SIZE(dap_chain_esbocs_directive_t, l_directive_size);
+    dap_chain_esbocs_directive_t *l_ret = NULL;
+    DAP_NEW_Z_SIZE_RET_VAL(l_ret, dap_chain_esbocs_directive_t, l_directive_size, NULL, NULL);
     l_ret->version = DAP_CHAIN_ESBOCS_DIRECTIVE_VERSION;
     l_ret->type = l_kick ? DAP_CHAIN_ESBOCS_DIRECTIVE_KICK : DAP_CHAIN_ESBOCS_DIRECTIVE_LIFT;
     l_ret->size = l_directive_size;
@@ -1177,7 +1162,7 @@ static void s_session_state_change(dap_chain_esbocs_session_t *a_session, enum s
                         );
             dap_chain_esbocs_validator_t *l_validator = l_list ? l_list->data : NULL;
             if (!l_validator || !l_validator->is_chosen) {
-                char *l_addr = dap_chain_addr_to_str(&a_session->cur_round.attempt_submit_validator);
+                char *l_addr = dap_chain_hash_fast_to_str_new(&a_session->cur_round.attempt_submit_validator.data.hash_fast);
                 log_it(L_MSG, "Error: can't find current attmempt submit validator %s in signers list", l_addr);
                 DAP_DELETE(l_addr);
             }
@@ -1368,11 +1353,8 @@ static void s_message_chain_add(dap_chain_esbocs_session_t *a_session,
         return;
     }
     dap_chain_esbocs_round_t *l_round = &a_session->cur_round;
-    dap_chain_esbocs_message_item_t *l_message_item = DAP_NEW_Z(dap_chain_esbocs_message_item_t);
-    if (!l_message_item) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return;
-    }
+    dap_chain_esbocs_message_item_t *l_message_item = NULL;
+    DAP_NEW_Z_RET(l_message_item, dap_chain_esbocs_message_item_t, NULL);
     if (!a_message_hash) {
         dap_chain_hash_fast_t l_message_hash;
         dap_hash_fast(a_message, a_message_size, &l_message_hash);
@@ -1502,9 +1484,7 @@ static void s_session_candidate_precommit(dap_chain_esbocs_session_t *a_session,
                                 a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
                                     a_message->hdr.attempt_num, l_candidate_hash_str,
                                         l_my_precommit_hash_str, l_remote_precommit_hash_str);
-            DAP_DELETE(l_candidate_hash_str);
-            DAP_DELETE(l_my_precommit_hash_str);
-            DAP_DELETE(l_remote_precommit_hash_str);
+            DAP_DEL_MULTY(l_candidate_hash_str, l_my_precommit_hash_str, l_remote_precommit_hash_str);
         }
         return;
     }
@@ -1580,8 +1560,7 @@ static void s_session_round_finish(dap_chain_esbocs_session_t *a_session, dap_ch
         char *l_finish_candidate_hash_str = dap_chain_hash_fast_to_str_new(&l_store->candidate_hash);
         debug_if(l_cs_debug, L_WARNING, "Trying to finish candidate of not the current attempt (%s but not %s)",
                                         l_current_candidate_hash_str, l_finish_candidate_hash_str);
-        DAP_DELETE(l_current_candidate_hash_str);
-        DAP_DELETE(l_finish_candidate_hash_str);
+        DAP_DEL_MULTY(l_current_candidate_hash_str, l_finish_candidate_hash_str);
         return;
     }
 
@@ -1620,8 +1599,7 @@ static void s_session_round_finish(dap_chain_esbocs_session_t *a_session, dap_ch
                       "Move block %s to chains",
                         a_session->chain->net_name, a_session->chain->name, a_session->cur_round.id,
                             a_session->cur_round.attempt_num, l_finish_candidate_hash_str, l_finish_block_hash_str);
-        DAP_DELETE(l_finish_candidate_hash_str);
-        DAP_DELETE(l_finish_block_hash_str);
+        DAP_DEL_MULTY(l_finish_candidate_hash_str, l_finish_block_hash_str);
     }
     s_session_candidate_to_chain(a_session, &l_store->precommit_candidate_hash, l_store->candidate, l_store->candidate_size);
 }
@@ -1635,11 +1613,7 @@ void s_session_sync_queue_add(dap_chain_esbocs_session_t *a_session, dap_chain_e
     dap_chain_esbocs_sync_item_t *l_sync_item;
     HASH_FIND(hh, a_session->sync_items, &a_message->hdr.candidate_hash, sizeof(dap_hash_fast_t), l_sync_item);
     if (!l_sync_item) {
-        l_sync_item = DAP_NEW_Z(dap_chain_esbocs_sync_item_t);
-        if (!l_sync_item) {
-            log_it(L_CRITICAL, "Memory allocation error");
-            return;
-        }
+        DAP_NEW_Z_RET(l_sync_item, dap_chain_esbocs_sync_item_t, NULL);
         l_sync_item->last_block_hash = a_message->hdr.candidate_hash;
         HASH_ADD(hh, a_session->sync_items, last_block_hash, sizeof(dap_hash_fast_t), l_sync_item);
     }
@@ -1655,12 +1629,12 @@ void s_session_validator_mark_online(dap_chain_esbocs_session_t *a_session, dap_
         if (!l_was_synced)
             a_session->cur_round.total_validators_synced++;
         if (PVT(a_session->esbocs)->debug) {
-            const char *l_addr_str = dap_chain_addr_to_str(a_signing_addr);
+            const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
             log_it(L_DEBUG, "Mark validator %s as online", l_addr_str);
             DAP_DELETE(l_addr_str);
         }
     } else {
-        const char *l_addr_str = dap_chain_addr_to_str(a_signing_addr);
+        const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
         log_it(L_ERROR, "Can't find validator %s in validators list", l_addr_str);
         DAP_DELETE(l_addr_str);
     }
@@ -1669,14 +1643,10 @@ void s_session_validator_mark_online(dap_chain_esbocs_session_t *a_session, dap_
     HASH_FIND(hh, a_session->penalty, a_signing_addr, sizeof(*a_signing_addr), l_item);
     bool l_inactive = dap_chain_net_srv_stake_key_delegated(a_signing_addr) == -1;
     if (l_inactive && !l_item) {
-        const char *l_addr_str = dap_chain_addr_to_str(a_signing_addr);
+        const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
         log_it(L_DEBUG, "Validator %s not in penalty list, but currently disabled", l_addr_str);
         DAP_DELETE(l_addr_str);
-        l_item = DAP_NEW_Z(dap_chain_esbocs_penalty_item_t);
-        if (!l_item) {
-            log_it(L_CRITICAL, "Memory allocation error");
-            return;
-        }
+        DAP_NEW_Z_RET(l_item, dap_chain_esbocs_penalty_item_t, NULL);
         l_item->signing_addr = *a_signing_addr;
         l_item->miss_count = DAP_CHAIN_ESBOCS_PENALTY_KICK;
         HASH_ADD(hh, a_session->penalty, signing_addr, sizeof(*a_signing_addr), l_item);
@@ -1685,7 +1655,7 @@ void s_session_validator_mark_online(dap_chain_esbocs_session_t *a_session, dap_
         if (l_item->miss_count > DAP_CHAIN_ESBOCS_PENALTY_KICK)
             l_item->miss_count = DAP_CHAIN_ESBOCS_PENALTY_KICK;
         if (PVT(a_session->esbocs)->debug) {
-            const char *l_addr_str = dap_chain_addr_to_str(a_signing_addr);
+            const char *l_addr_str = dap_chain_hash_fast_to_str_new(&a_signing_addr->data.hash_fast);
             log_it(L_DEBUG, "Decrement miss count %d for addr %s. Miss count for kick is %d",
                             l_item->miss_count, l_addr_str, DAP_CHAIN_ESBOCS_PENALTY_KICK);
             DAP_DELETE(l_addr_str);
@@ -1730,7 +1700,7 @@ static void s_session_directive_process(dap_chain_esbocs_session_t *a_session, d
         }
         int l_status = dap_chain_net_srv_stake_key_delegated(l_voting_addr);
         if (l_status == 0) {
-            const char *l_addr_str = dap_chain_addr_to_str(l_voting_addr);
+            const char *l_addr_str = dap_chain_hash_fast_to_str_new(&l_voting_addr->data.hash_fast);
             log_it(L_WARNING, "Trying to put to the vote directive type %s for non delegated key %s",
                                     a_directive->type == DAP_CHAIN_ESBOCS_DIRECTIVE_KICK ? "KICK" : "LIFT",
                                         l_addr_str);
@@ -1824,14 +1794,14 @@ static int s_session_directive_apply(dap_chain_esbocs_directive_t *a_directive,
     case DAP_CHAIN_ESBOCS_DIRECTIVE_LIFT: {
         dap_chain_addr_t *l_key_addr = (dap_chain_addr_t *)(((dap_tsd_t *)a_directive->tsd)->data);
         int l_status = dap_chain_net_srv_stake_key_delegated(l_key_addr);
+        const char *l_key_str = dap_chain_hash_fast_to_str_new(&l_key_addr->data.hash_fast);
         if (l_status == 0) {
-            const char *l_key_str = dap_chain_addr_to_str(l_key_addr);
             log_it(L_WARNING, "Invalid key %s with directive type %s applying",
                                     l_key_str, a_directive->type == DAP_CHAIN_ESBOCS_DIRECTIVE_KICK ?
                                         "KICK" : "LIFT");
+            DAP_DEL_Z(l_key_str);
             return -3;
         }
-        const char *l_key_str = dap_chain_addr_to_str(l_key_addr);
         const char *l_penalty_group = s_get_penalty_group(l_key_addr->net_id);
         const char *l_directive_hash_str = dap_chain_hash_fast_to_str_new(a_directive_hash);
         const char *l_key_hash_str = dap_chain_hash_fast_to_str_new(&l_key_addr->data.hash_fast);
@@ -1851,10 +1821,7 @@ static int s_session_directive_apply(dap_chain_esbocs_directive_t *a_directive,
                                 a_directive->type == DAP_CHAIN_ESBOCS_DIRECTIVE_KICK ?
                                     "excluded from" : "included in");
         }
-        DAP_DELETE(l_key_str);
-        DAP_DELETE(l_penalty_group);
-        DAP_DELETE(l_directive_hash_str);
-        DAP_DELETE(l_key_hash_str);
+        DAP_DEL_MULTY(l_key_str, l_penalty_group, l_directive_hash_str, l_key_hash_str);
         break;
     }
     default:
@@ -1892,7 +1859,7 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
     size_t l_sign_size = l_message->hdr.sign_size;
     dap_chain_esbocs_round_t *l_round = &l_session->cur_round;
     dap_chain_addr_t l_signing_addr;
-    char *l_validator_addr_str = NULL;
+    char l_validator_addr_str[DAP_CHAIN_HASH_FAST_STR_SIZE] = {0};
 
     if (a_sender_node_addr) { //Process network messages only
         pthread_mutex_lock(&l_session->mutex);
@@ -2006,7 +1973,8 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
 
     // Process local & network messages
     if (l_cs_debug)
-        l_validator_addr_str = dap_chain_addr_to_str(&l_signing_addr);
+        dap_chain_hash_fast_to_str_do(&l_signing_addr.data.hash_fast, l_validator_addr_str);
+
     bool l_not_in_list = false;
     switch (l_message->hdr.type) {
     case DAP_CHAIN_ESBOCS_MSG_TYPE_START_SYNC:
@@ -2014,19 +1982,16 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
         if (!a_sender_node_addr)
             s_message_chain_add(l_session, l_message, a_data_size, a_data_hash, &l_signing_addr);
         // Accept all validators
-        if (!dap_chain_net_srv_stake_key_delegated(&l_signing_addr))
-            l_not_in_list = true;
+        l_not_in_list = !dap_chain_net_srv_stake_key_delegated(&l_signing_addr);
         break;
     case DAP_CHAIN_ESBOCS_MSG_TYPE_VOTE_FOR:
     case DAP_CHAIN_ESBOCS_MSG_TYPE_VOTE_AGAINST:
         // Accept all active synced validators
-        if (!s_validator_check_synced(&l_signing_addr, l_session->cur_round.all_validators))
-            l_not_in_list = true;
+        l_not_in_list = !s_validator_check_synced(&l_signing_addr, l_session->cur_round.all_validators);
         break;
     default:
         // Accept only current round synced validators
-        if (!s_validator_check_synced(&l_signing_addr, l_session->cur_round.validators_list))
-            l_not_in_list = true;
+        l_not_in_list = !s_validator_check_synced(&l_signing_addr, l_session->cur_round.validators_list);
         break;
     }
     if (l_not_in_list) {
@@ -2380,11 +2345,8 @@ static void s_message_send(dap_chain_esbocs_session_t *a_session, uint8_t a_mess
 {
     dap_chain_net_t *l_net = dap_chain_net_by_id(a_session->chain->net_id);
     size_t l_message_size = sizeof(dap_chain_esbocs_message_hdr_t) + a_data_size;
-    dap_chain_esbocs_message_t *l_message = DAP_NEW_Z_SIZE(dap_chain_esbocs_message_t, l_message_size);
-    if (!l_message) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return;
-    }
+    dap_chain_esbocs_message_t *l_message = NULL;
+    DAP_NEW_Z_SIZE_RET(l_message, dap_chain_esbocs_message_t, l_message_size, NULL);
     l_message->hdr.version = DAP_CHAIN_ESBOCS_PROTOCOL_VERSION;
     l_message->hdr.round_id = a_session->cur_round.id;
     l_message->hdr.attempt_num = a_session->cur_round.attempt_num;
@@ -2507,7 +2469,7 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_bl
         } else {
             // Compare signature with auth_certs
             if (!s_validator_check(&l_signing_addr, l_esbocs_pvt->poa_validators)) {
-                char *l_bad_addr = dap_chain_addr_to_str(&l_signing_addr);
+                char *l_bad_addr = dap_chain_hash_fast_to_str_new(&l_signing_addr.data.hash_fast);
                 log_it(L_ATT, "Unknown PoA signer %s", l_bad_addr);
                 DAP_DELETE(l_bad_addr);
                 continue;
@@ -2550,28 +2512,19 @@ static char *s_esbocs_decree_put(dap_chain_datum_decree_t *a_decree, dap_chain_n
 static dap_chain_datum_decree_t *s_esbocs_decree_set_min_validators_count(dap_chain_net_t *a_net, dap_chain_t *a_chain,
                                                                           uint256_t a_value, dap_cert_t *a_cert)
 {
-    size_t l_total_tsd_size = 0;
+    size_t l_total_tsd_size = sizeof(dap_tsd_t) + sizeof(uint256_t);
     dap_chain_datum_decree_t *l_decree = NULL;
     dap_list_t *l_tsd_list = NULL;
     dap_tsd_t *l_tsd = NULL;
+// memory alloc
+    DAP_NEW_Z_SIZE_RET_VAL(l_tsd, dap_tsd_t, l_total_tsd_size, NULL, NULL);
+    DAP_NEW_Z_SIZE_RET_VAL(l_decree, dap_chain_datum_decree_t, sizeof(dap_chain_datum_decree_t) + l_total_tsd_size, NULL, l_tsd);
 
-    l_total_tsd_size += sizeof(dap_tsd_t) + sizeof(uint256_t);
-    l_tsd = DAP_NEW_Z_SIZE(dap_tsd_t, l_total_tsd_size);
-    if (!l_tsd) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        return NULL;
-    }
     l_tsd->type = DAP_CHAIN_DATUM_DECREE_TSD_TYPE_STAKE_MIN_SIGNERS_COUNT;
     l_tsd->size = sizeof(uint256_t);
     *(uint256_t*)(l_tsd->data) = a_value;
     l_tsd_list = dap_list_append(l_tsd_list, l_tsd);
 
-    l_decree = DAP_NEW_Z_SIZE(dap_chain_datum_decree_t, sizeof(dap_chain_datum_decree_t) + l_total_tsd_size);
-    if (!l_decree) {
-        log_it(L_CRITICAL, "Memory allocation error");
-        dap_list_free_full(l_tsd_list, NULL);
-        return NULL;
-    }
     l_decree->decree_version = DAP_CHAIN_DATUM_DECREE_VERSION;
     l_decree->header.ts_created = dap_time_now();
     l_decree->header.type = DAP_CHAIN_DATUM_DECREE_TYPE_COMMON;
@@ -2687,8 +2640,7 @@ static int s_cli_esbocs(int a_argc, char ** a_argv, char **a_str_reply)
         if (l_decree && (l_decree_hash_str = s_esbocs_decree_put(l_decree, l_chain_net))) {
             dap_cli_server_cmd_set_reply_text(a_str_reply, "Minimum validators count has been set."
                                                            " Decree hash %s", l_decree_hash_str);
-            DAP_DELETE(l_decree);
-            DAP_DELETE(l_decree_hash_str);
+            DAP_DEL_MULTY(l_decree, l_decree_hash_str);
         } else {
             dap_cli_server_cmd_set_reply_text(a_str_reply, "Minimum validators count setting failed");
             DAP_DEL_Z(l_decree);