diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index c6127b38c1aa25968a88db3940604d41529e4cf5..0000000000000000000000000000000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,52 +0,0 @@
-# Prerequisites
-*.d
-
-# Object files
-*.o
-*.ko
-*.obj
-*.elf
-
-# Linker output
-*.ilk
-*.map
-*.exp
-
-# Precompiled Headers
-*.gch
-*.pch
-
-# Libraries
-*.lib
-*.a
-*.la
-*.lo
-
-# Shared objects (inc. Windows DLLs)
-*.dll
-*.so
-*.so.*
-*.dylib
-
-# Executables
-*.exe
-*.out
-*.app
-*.i*86
-*.x86_64
-*.hex
-
-# Debug files
-*.dSYM/
-*.su
-*.idb
-*.pdb
-
-# Kernel Module Compile Results
-*.mod*
-*.cmd
-.tmp_versions/
-modules.order
-Module.symvers
-Mkfile.old
-dkms.conf
diff --git a/dap_chain.c b/dap_chain.c
index d27eefa61e10bbb5dad123deb9d06d7fa1e4b205..cfea228c19e46cca6f79abd377e7e623736f822b 100644
--- a/dap_chain.c
+++ b/dap_chain.c
@@ -29,6 +29,23 @@
 
 #define LOG_TAG "dap_chain"
 
+
+FILE* my_file_to_wite_gold;
+void* gold_mem;
+FILE* my_file_to_wite_silver;
+void* silver_mem;
+FILE* my_file_to_wite_copper;
+void* copper_mem;
+
+int blocks_mined;
+int blocks_mined_gold;
+int blocks_mined_silver;
+int blocks_mined_copper;
+
+double total_mining_time;
+double total_mining_hashes; //хз че делать пока
+double total_hashes_in_minute;
+
 /**
  * @brief dap_chain_init
  * @return
@@ -47,6 +64,35 @@ void dap_chain_deinit()
 }
 
 
+void dap_chain_mine_stop(){
+    log_it(L_INFO, "Total hashes for gold coins %s B", ftell(my_file_to_wite_gold) );
+    fclose(my_file_to_wite_gold);
+    log_it(L_INFO, "Total hashes for silver coins %s B", ftell(my_file_to_wite_silver));
+    fclose(my_file_to_wite_silver);
+    log_it(L_INFO, "Total hashes for copper coins %s B", ftell(my_file_to_wite_copper));
+    fclose(my_file_to_wite_copper);
+    log_it(L_INFO, "Total blocks mined %s ", blocks_mined);
+    log_it(L_INFO, "Gold blocks mined %s ", blocks_mined_gold);
+    log_it(L_INFO, "Silver blocks mined %s ", blocks_mined_silver);
+    log_it(L_INFO, "Copper blocks mined %s ", blocks_mined_copper);
+    log_it(L_INFO, "Totla mining speed %s ", total_hashes_in_minute/blocks_mined);
+}
+
+void dap_chain_settot(){
+    blocks_mined = 0;
+    blocks_mined_copper = 0;
+    blocks_mined_silver = 0;
+    blocks_mined_gold = 0;
+    total_hashes_in_minute = 0;
+}
+
+void dap_chain_count_new_block(dap_chain_block_cache_t *l_block_cache)
+{
+    blocks_mined+=1;
+    total_hashes_in_minute = total_hashes_in_minute + sizeof(l_block_cache->block_hash)/l_block_cache->block_mine_time;
+}
+
+
 /**
  * @brief dap_chain_open
  * @param a_file_storage
@@ -86,6 +132,116 @@ void dap_chain_save(dap_chain_t * a_chain)
 
 }
 
+/**
+ * @brief dap_chain_file_write
+ * @param l_block_cache
+ */
+
+void dap_chain_file_write(dap_chain_block_cache_t *l_block_cache){
+    if (dap_chain_hash_kind_check(l_block_cache, l_block_cache->block->header.difficulty)==HASH_GOLD){
+                                               fwrite(l_block_cache->block->header.size, 64, 1, my_file_to_wite_gold);
+                                               fwrite(l_block_cache->block, l_block_cache->block->header.size, 1, my_file_to_wite_gold);
+                                               blocks_mined_gold += 1;
+                                               /*gold_mem=mmap(0, l_block_cache->block->header.size, PROT_WRITE, MAP_SHARED, my_file_to_wite_gold, 0);
+                                               memcpy(gold_mem, l_block_cache, l_block_cache->block->header.size);
+                                               munmap(gold_mem, l_block_cache->block->header.size);*/
+                                           }
+                                           else if (dap_chain_hash_kind_check(l_block_cache, l_block_cache->block->header.difficulty)==HASH_SILVER){
+                                               fwrite(l_block_cache->block->header.size, 64, 1, my_file_to_wite_silver);
+                                               fwrite(l_block_cache->block, l_block_cache->block->header.size, 1, my_file_to_wite_silver);
+                                               blocks_mined_silver += 1;
+                                               /*silver_mem=mmap(0, l_block_cache->block->header.size, PROT_WRITE, MAP_SHARED, my_file_to_wite_silver, 0);
+                                               memcpy(silver_mem, l_block_cache, l_block_cache->block->header.size);
+                                               munmap(silver_mem, l_block_cache->block->header.size);*/
+                                           }
+                                           else {
+                                               fwrite(l_block_cache->block->header.size, 64, 1, my_file_to_wite_copper);
+                                               fwrite(l_block_cache->block, l_block_cache->block->header.size, 1, my_file_to_wite_copper);
+                                               blocks_mined_copper += 1;
+                                               /*copper_mem=mmap(0, l_block_cache->block->header.size, PROT_WRITE, MAP_SHARED, my_file_to_wite_copper, 0);
+                                               memcpy(copper_mem, l_block_cache, l_block_cache->block->header.size);
+                                               munmap(copper_mem, l_block_cache->block->header.size);*/
+                                           }
+}
+
+/**
+ * @brief dap_chain_file_open
+ * @param last_g
+ * @param last_s
+ * @param last_c
+ */
+
+void dap_chain_file_open(dap_chain_block_cache_t* last_g, dap_chain_block_cache_t* last_s, dap_chain_block_cache_t* last_c)
+{
+                   dap_chain_block_cache_t * l_block_gold;
+                   dap_chain_block_cache_t *l_block_silver;
+                   dap_chain_block_cache_t *l_block_copper;
+                   uint32_t size_of_gold, size_of_silver, size_of_copper;
+                   size_t result;
+
+                   my_file_to_wite_gold = fopen("my_block_gold.txt", "a+");// тестовый файл создам если есть добавим
+
+                   if (my_file_to_wite_gold==NULL){
+                       log_it(L_INFO, "Everything is lost! File not opened!");
+                       exit(1);
+
+                   }
+                   else {
+
+                       result =fread(size_of_gold, 64, 1, my_file_to_wite_gold);
+                       result = fread(l_block_gold, size_of_gold, 1, my_file_to_wite_gold);
+                       while ((l_block_gold->block!=0)&&result!=0){
+                           result = fread(size_of_gold, 64, 1, my_file_to_wite_gold);
+                           if (result!=0){
+                                result = fread(l_block_gold, size_of_gold, 1, my_file_to_wite_gold);
+                           }
+                        }
+                       last_g =l_block_gold;
+                        //l_block_gold =
+                   }
+
+
+
+                   my_file_to_wite_silver = fopen("my_block_silver.txt", "a+");
+                   if (my_file_to_wite_silver==NULL){
+                       log_it(L_INFO, "Everything is lost! File not opened!");
+                       exit(1);
+
+                   }
+                   else {
+
+                       result = fread(size_of_silver, 64, 1, my_file_to_wite_silver);
+                       result = fread(l_block_silver, size_of_silver, 1, my_file_to_wite_silver);
+                       while ((l_block_silver->block!=0)&&result!=0){
+                           result = fread(size_of_silver, 64, 1, my_file_to_wite_silver);
+                           if (result!=0){
+                                result = fread(l_block_silver, size_of_silver, 1, my_file_to_wite_silver);
+                           }
+                        }
+                       last_s =l_block_silver;
+                   }
+
+                   my_file_to_wite_copper = fopen("my_block_copper.txt", "a+");
+                   if (my_file_to_wite_copper==NULL){
+                       log_it(L_INFO, "Everything is lost! File not opened!");
+                       exit(1);
+
+                   }
+                   else {
+
+                       result = fread(size_of_copper, 64, 1, my_file_to_wite_copper);
+                       result = fread(l_block_copper, size_of_copper, 1, my_file_to_wite_copper);
+                       while (l_block_copper->block!=0){
+                           result = fread(size_of_copper, 64, 1, my_file_to_wite_gold);
+                           if (result!=0){
+                            fread(l_block_copper, size_of_copper, 1, my_file_to_wite_copper);
+                           }
+                        }
+                       last_c = l_block_copper;
+                   }
+}
+
+
 /**
  * @brief dap_chain_close
  * @param a_chain
@@ -95,6 +251,15 @@ void dap_chain_close(dap_chain_t * a_chain)
 
 }
 
+/**
+ * @brief dap_chain_update
+ * @param l_block_cache
+ */
+void dap_chain_update(dap_chain_block_cache_t *l_block_cache){
+    dap_chain_file_write(l_block_cache);
+
+}
+
 /**
  * @brief dap_chain_info_dump_log
  * @param a_chain
diff --git a/dap_chain.h b/dap_chain.h
index 801595794c1fc1e41eeba1f3ce06ff80a9c3d5a2..22d3bcd44807c1f3db6d6a05dc2535bd5cba1b00 100644
--- a/dap_chain.h
+++ b/dap_chain.h
@@ -44,6 +44,17 @@ void dap_chain_remap(dap_chain_t * a_chain, size_t a_offset);
 void dap_chain_save(dap_chain_t * a_chain);
 void dap_chain_info_dump_log(dap_chain_t * a_chain);
 
+
+
+//работа с файлом
+void dap_chain_file_open(dap_chain_block_cache_t* last_g, dap_chain_block_cache_t* last_s, dap_chain_block_cache_t* last_c);
+void dap_chain_file_write(dap_chain_block_cache_t *l_block_cache);
+void dap_chain_update(dap_chain_block_cache_t *l_block_cache);
+void dap_chain_mine_stop();
+void dap_chain_settot();
+void dap_chain_count_new_block(dap_chain_block_cache_t *l_block_cache);
+//работа с файлом
+
 dap_chain_block_cache_t* dap_chain_allocate_next_block(dap_chain_t * a_chain);