diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c
index bfa5077be0a168c4b1dfb8b4588c49c4a7f4f0eb..34d5a7b2df6fb45b8ea97c7d88decb48b0fee163 100644
--- a/modules/type/blocks/dap_chain_cs_blocks.c
+++ b/modules/type/blocks/dap_chain_cs_blocks.c
@@ -877,13 +877,24 @@ static void s_callback_cs_blocks_purge(dap_chain_t *a_chain)
 {
     dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain);
     pthread_rwlock_wrlock(&PVT(l_blocks)->rwlock);
-    dap_chain_block_cache_t *l_block, *l_block_tmp;
+    dap_chain_block_cache_t *l_block = NULL, *l_block_tmp = NULL;
     HASH_ITER(hh, PVT(l_blocks)->blocks, l_block, l_block_tmp) {
         HASH_DEL(PVT(l_blocks)->blocks, l_block);
         DAP_DELETE(l_block->block);
         dap_chain_block_cache_delete(l_block);
     }
     pthread_rwlock_unlock(&PVT(l_blocks)->rwlock);
+    
+    dap_chain_block_datum_index_t *l_datum_index = NULL, *l_datum_index_tmp = NULL;
+    pthread_rwlock_wrlock(&PVT(l_blocks)->datums_rwlock);
+    HASH_ITER(hh, PVT(l_blocks)->datum_index, l_datum_index, l_datum_index_tmp) {
+        HASH_DEL(PVT(l_blocks)->datum_index, l_datum_index);
+        DAP_DELETE(l_datum_index);
+        l_datum_index = NULL;
+    }
+    pthread_rwlock_unlock(&PVT(l_blocks)->datums_rwlock);
+    PVT(l_blocks)->blocks_count = 0;
+
     dap_chain_block_chunks_delete(PVT(l_blocks)->chunks);
     PVT(l_blocks)->block_cache_last = NULL;
     PVT(l_blocks)->block_cache_first = NULL;