diff --git a/lib/core/conf/src/lib.rs b/lib/core/conf/src/lib.rs
index 9141d2184b5ef1b33c0a19297d137fb027651457..eb214d9952cbcd7c2a92fcd58aa33e6e219a0c3e 100644
--- a/lib/core/conf/src/lib.rs
+++ b/lib/core/conf/src/lib.rs
@@ -456,7 +456,7 @@ pub fn get_datas_path(profile_path: PathBuf) -> PathBuf {
     if !datas_path.as_path().exists() {
         if let Err(io_error) = fs::create_dir(datas_path.as_path()) {
             if io_error.kind() != std::io::ErrorKind::AlreadyExists {
-                fatal_error!("Impossible to create currency dir !");
+                fatal_error!("Impossible to create modules datas folder !");
             }
         }
     }
diff --git a/lib/core/message/src/events.rs b/lib/core/message/src/events.rs
index 88385edfd55dac3bd49a07db705e6dedb45a407a..ea1675b1fe9884edcab112fcdc9a742c524f631c 100644
--- a/lib/core/message/src/events.rs
+++ b/lib/core/message/src/events.rs
@@ -20,7 +20,7 @@ use dubp_user_docs::documents::UserDocumentDUBP;
 use durs_network::events::NetworkEvent;
 
 /// The DURS event message.
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 pub enum DursEvent {
     /// Arbitrary datas.
     ArbitraryDatas(ArbitraryDatas),
@@ -34,7 +34,7 @@ pub enum DursEvent {
     ReceiveValidDocsFromClient(Vec<UserDocumentDUBP>),
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// MemPool module events
 pub enum MemPoolEvent {
     /// FindNextBlock (local node find next block)
@@ -43,7 +43,7 @@ pub enum MemPoolEvent {
     StoreNewDocInPool(Box<UserDocumentDUBP>),
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Blockchain module events
 pub enum BlockchainEvent {
     /// Currency parameters
diff --git a/lib/core/message/src/lib.rs b/lib/core/message/src/lib.rs
index 35340e3af1ba8aac517edd5b7b9f69260cd34d02..2106ca6383f307d49d832ee16e2f050792971896 100644
--- a/lib/core/message/src/lib.rs
+++ b/lib/core/message/src/lib.rs
@@ -45,7 +45,7 @@ use crate::requests::*;
 use crate::responses::*;
 
 /// Message exchanged between Dunitrust modules
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, PartialEq)]
 pub enum DursMsg {
     /// Dunitrust module event
     Event {
@@ -89,7 +89,7 @@ pub enum DursMsg {
 impl ModuleMessage for DursMsg {}
 
 /// Arbitrary datas
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, PartialEq)]
 pub enum ArbitraryDatas {
     /// Arbitrary text message
     Text(String),
diff --git a/lib/core/message/src/requests.rs b/lib/core/message/src/requests.rs
index c598dc39361e6fd301bf3f1a0c984b40ebd47391..13cbf098ae205ea696cddbcb14194255ca95f2e8 100644
--- a/lib/core/message/src/requests.rs
+++ b/lib/core/message/src/requests.rs
@@ -19,7 +19,7 @@ use dup_crypto::hashs::Hash;
 use dup_crypto::keys::*;
 use durs_network::requests::OldNetworkRequest;
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Modules request content
 pub enum DursReqContent {
     /// Request to the old network module
@@ -59,7 +59,7 @@ pub enum BlockchainRequest {
     UIDs(Vec<PubKey>),
 }
 
-#[derive(Debug, Copy, Clone)]
+#[derive(Copy, Clone, Debug, PartialEq)]
 /// Inter-module request for mem pool data
 pub enum MemPoolRequest {
     /// All pending identities with their pending certifications
diff --git a/lib/core/message/src/responses.rs b/lib/core/message/src/responses.rs
index ee7dfbde9b964162df5c0937fdeabd3526b79125..ffd44eb1b7bf5209d7e0cc5d459dec881ac6600f 100644
--- a/lib/core/message/src/responses.rs
+++ b/lib/core/message/src/responses.rs
@@ -27,7 +27,7 @@ use durs_network::requests::NetworkResponse;
 use std::collections::HashMap;
 
 /// Dunitrust request response message
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 pub enum DursResContent {
     /// BlockchainResponse
     BlockchainResponse(BlockchainResponse),
@@ -39,7 +39,7 @@ pub enum DursResContent {
     ProverResponse(BlockNumber, Sig, u64),
 }
 
-#[derive(Debug, Clone)]
+#[derive(Debug, Clone, PartialEq)]
 /// Pending identity datas
 pub struct PendingIdtyDatas {
     /// Identity document
@@ -54,7 +54,7 @@ pub struct PendingIdtyDatas {
     pub revocation: Option<RevocationDocumentV10>,
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Response to a BlockchainReqBlockchain request
 pub enum BlockchainResponse {
     /// Current blockstamp
@@ -71,7 +71,7 @@ pub enum BlockchainResponse {
     Identities(Vec<IdentityDocument>),
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Response to a MemPoolRequest request
 pub enum MemPoolResponse {
     /// All pending identities with their pending certifications
diff --git a/lib/core/module/src/lib.rs b/lib/core/module/src/lib.rs
index 2d10c83f3c2c1ea789644cfea61848ebff7dc6e5..9460a625587fd30e2ed5d264a5a7512444c4cec0 100644
--- a/lib/core/module/src/lib.rs
+++ b/lib/core/module/src/lib.rs
@@ -164,7 +164,7 @@ pub struct SoftwareMetaDatas<DC: DursConfTrait> {
 
 /// The different modules of Duniter-rs can exchange messages with the type of their choice,
 /// provided that this type implements the ModuleMessage trait.
-pub trait ModuleMessage: Clone + Debug {}
+pub trait ModuleMessage: Clone + Debug + PartialEq {}
 
 /// List of the different roles that can be assigned to a module.
 /// This role list allows a module to send a message to all modules playing a specific role without knowing their name.
@@ -227,7 +227,7 @@ pub enum ModuleEvent {
     SyncEvent,
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug)]
 /// Type sent by each module to the router during initialization
 pub enum RouterThreadMessage<M: ModuleMessage> {
     /// Number of expected modules
diff --git a/lib/core/network/events.rs b/lib/core/network/events.rs
index 12df524923965a5ae34c0d7a854ada87966201bb..cf3a07957b8eaf9b130d66ff99adfab5bccef3a3 100644
--- a/lib/core/network/events.rs
+++ b/lib/core/network/events.rs
@@ -23,7 +23,7 @@ use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_user_docs::documents::UserDocumentDUBP;
 use durs_common_tools::Percent;
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Type containing a network event, each time a network event occurs it's relayed to all modules
 pub enum NetworkEvent {
     /// A connection has changed state(`u32` is the new state, `Option<String>` est l'uid du noeud)
diff --git a/lib/core/network/requests.rs b/lib/core/network/requests.rs
index ac7b1c878dfb941a75496cfe54e2eaeb1d850be3..d880afbe4e2085300b021edbd6ee23de1abeec5e 100644
--- a/lib/core/network/requests.rs
+++ b/lib/core/network/requests.rs
@@ -20,7 +20,7 @@ use dubp_block_doc::BlockDocument;
 use dubp_common_doc::blockstamp::Blockstamp;
 use dubp_user_docs::documents::UserDocumentDUBP;
 
-#[derive(Debug, Copy, Clone)]
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
 /// Type containing a request addressed to the network module
 pub enum OldNetworkRequest {
     /// Get a current block of a specific node
@@ -69,7 +69,7 @@ pub enum OldNetworkRequestError {
     ReceiverUnreachable(),
 }
 
-#[derive(Debug, Clone)]
+#[derive(Clone, Debug, PartialEq)]
 /// Type containing the response to a network request
 pub enum NetworkResponse {
     /// CurrentBlock
diff --git a/lib/dubp/currency-params/src/lib.rs b/lib/dubp/currency-params/src/lib.rs
index 1eeb05b0692d6f429a1e7cf3ae0dbfa3ec7abdd9..dc5cceef6e0b497c944a1c6ca060900fdefb78e4 100644
--- a/lib/dubp/currency-params/src/lib.rs
+++ b/lib/dubp/currency-params/src/lib.rs
@@ -34,7 +34,7 @@ use crate::constants::*;
 pub use dubp_common_doc::CurrencyName;
 use genesis_block_params::v10::BlockV10Parameters;
 
-#[derive(Debug, Copy, Clone)]
+#[derive(Copy, Clone, Debug, PartialEq)]
 /// Currency parameters
 pub struct CurrencyParameters {
     /// Protocol version
diff --git a/lib/dubp/user-docs/src/documents/mod.rs b/lib/dubp/user-docs/src/documents/mod.rs
index ac5cb1a2258bdc83a01c00fff1e2339b23c9a4bc..d502e94877e843136439451eabd3073b470cd556 100644
--- a/lib/dubp/user-docs/src/documents/mod.rs
+++ b/lib/dubp/user-docs/src/documents/mod.rs
@@ -33,7 +33,7 @@ pub mod revocation;
 pub mod transaction;
 
 /// User document of DUBP (DUniter Blockhain Protocol)
-#[derive(Debug, Clone, Serialize, Deserialize)]
+#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
 pub enum UserDocumentDUBP {
     /// Transaction document.
     Transaction(Box<TransactionDocument>),
diff --git a/lib/dubp/user-docs/src/documents/transaction.rs b/lib/dubp/user-docs/src/documents/transaction.rs
index 923550d7a6392269cb8b77d0c3f69ed6b8638502..015bb6969fef52ed598d2bd160462d929bd25a6f 100644
--- a/lib/dubp/user-docs/src/documents/transaction.rs
+++ b/lib/dubp/user-docs/src/documents/transaction.rs
@@ -628,7 +628,7 @@ impl TransactionDocument {
             hash
         } else {
             self.hash = Some(self.compute_hash());
-            self.hash.expect("Try to get hash of a reduce tx !")
+            self.hash.expect("unreach")
         }
     }
     /// Get transaction inputs
@@ -642,6 +642,7 @@ impl TransactionDocument {
     /// Lightens the transaction (for example to store it while minimizing the space required)
     /// WARNING: do not remove the hash as it's necessary to reverse the transaction !
     pub fn reduce(&mut self) {
+        self.hash = Some(self.compute_hash());
         self.text = None;
         for output in &mut self.outputs {
             output.reduce()
@@ -799,7 +800,7 @@ impl TextDocument for TransactionDocument {
         if let Some(ref text) = self.text {
             text
         } else {
-            fatal_error!("Try to get text of tx whti None text !")
+            fatal_error!("Try to get text of tx with None text !")
         }
     }
 
diff --git a/lib/dunp/network-documents/src/network_endpoint.rs b/lib/dunp/network-documents/src/network_endpoint.rs
index bb67e5f4f831564026222398e56f4452a3f75e57..767f0122b0d820e55726f90613a2ebed2c205dbd 100644
--- a/lib/dunp/network-documents/src/network_endpoint.rs
+++ b/lib/dunp/network-documents/src/network_endpoint.rs
@@ -71,7 +71,7 @@ pub struct ApiName(pub String);
 pub struct ApiVersion(pub usize);
 
 /// Api parts
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, PartialEq)]
 pub struct ApiPart {
     pub name: ApiName,
     pub versions: HashSet<ApiVersion>,
diff --git a/lib/modules-lib/bc-db-reader/src/blocks.rs b/lib/modules-lib/bc-db-reader/src/blocks.rs
index f5d62ad4efad79be3f7194f25ef6487cf1772e40..3281d0f18822c2d8991f1ad0bb00eeb19e62dc06 100644
--- a/lib/modules-lib/bc-db-reader/src/blocks.rs
+++ b/lib/modules-lib/bc-db-reader/src/blocks.rs
@@ -100,7 +100,7 @@ pub fn get_block<DB: DbReadable, R: DbReader>(
     r: &R,
     blockstamp: Blockstamp,
 ) -> Result<Option<DbBlock>, DbError> {
-    let opt_dal_block = get_dal_block_in_local_blockchain(db, r, blockstamp.id)?;
+    let opt_dal_block = get_db_block_in_local_blockchain(db, r, blockstamp.id)?;
     if opt_dal_block.is_none() {
         get_fork_block(db, r, blockstamp)
     } else {
@@ -184,6 +184,7 @@ pub fn get_blocks_in_local_blockchain<DB: DbReadable, R: DbReader>(
 }
 
 /// Get several blocks in local blockchain by their number
+#[cfg(feature = "client-indexer")]
 pub fn get_blocks_in_local_blockchain_by_numbers<DB: DbReadable, R: DbReader>(
     db: &DB,
     r: &R,
diff --git a/lib/modules-lib/bc-db-reader/src/trait.rs b/lib/modules-lib/bc-db-reader/src/trait.rs
index 96e4b88ee56ebec8dd63bf8edf468d1ebaae153a..eba22403aa956c3c2b5632c4f541fa6b0c24552c 100644
--- a/lib/modules-lib/bc-db-reader/src/trait.rs
+++ b/lib/modules-lib/bc-db-reader/src/trait.rs
@@ -65,6 +65,7 @@ impl<'r, 'db: 'r> BcDbRoTrait for BcDbRoWithReader<'r, 'db> {
     ) -> Result<Option<DbBlock>, DbError> {
         crate::blocks::get_db_block_in_local_blockchain(self.db, self.r, block_number)
     }
+    #[cfg(feature = "client-indexer")]
     fn get_db_blocks_in_local_blockchain(
         &self,
         numbers: Vec<BlockNumber>,
diff --git a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
index 174eb82285016341216953ee71f1d186ce19bd19..8f3bae818336b79970dfa79829e43ca168c31e45 100644
--- a/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
+++ b/lib/modules/blockchain/bc-db-writer/src/blocks/fork_tree.rs
@@ -56,6 +56,11 @@ pub fn insert_new_fork_block(
     blockstamp: Blockstamp,
     previous_hash: Hash,
 ) -> Result<bool, DbError> {
+    trace!(
+        "insert_new_fork_block #{} (previous_hash={})",
+        blockstamp,
+        previous_hash
+    );
     let previous_blockstamp = Blockstamp {
         id: BlockNumber(blockstamp.id.0 - 1),
         hash: BlockHash(previous_hash),
diff --git a/lib/modules/blockchain/bc-db-writer/src/writers/requests.rs b/lib/modules/blockchain/bc-db-writer/src/writers/requests.rs
index 045dac7777a40e71a8a076e98c012437df0f4895..07865a248a6b86417c7ee8bf0d58fd043ae38434 100644
--- a/lib/modules/blockchain/bc-db-writer/src/writers/requests.rs
+++ b/lib/modules/blockchain/bc-db-writer/src/writers/requests.rs
@@ -64,22 +64,22 @@ impl BlocksDBsWriteQuery {
         sync_target: Option<Blockstamp>,
     ) -> Result<(), DbError> {
         match self {
-            BlocksDBsWriteQuery::WriteBlock(dal_block) => {
-                let dal_block: DbBlock = dal_block;
+            BlocksDBsWriteQuery::WriteBlock(mut block_db) => {
                 trace!("BlocksDBsWriteQuery::WriteBlock...");
-                crate::current_meta_datas::update_current_meta_datas(db, w, &dal_block.block)?;
+                block_db.block.reduce();
+                crate::current_meta_datas::update_current_meta_datas(db, w, &block_db.block)?;
                 if sync_target.is_none()
-                    || dal_block.blockstamp().id.0 + fork_window_size as u32
+                    || block_db.blockstamp().id.0 + fork_window_size as u32
                         >= sync_target.expect("safe unwrap").id.0
                 {
-                    crate::blocks::insert_new_head_block(db, w, Some(fork_tree), dal_block)?;
+                    crate::blocks::insert_new_head_block(db, w, Some(fork_tree), block_db)?;
                 } else {
-                    crate::blocks::insert_new_head_block(db, w, None, dal_block)?;
+                    crate::blocks::insert_new_head_block(db, w, None, block_db)?;
                 }
             }
-            BlocksDBsWriteQuery::RevertBlock(dal_block) => {
+            BlocksDBsWriteQuery::RevertBlock(block_db) => {
                 trace!("BlocksDBsWriteQuery::WriteBlock...");
-                crate::blocks::remove_block(db, w, dal_block.block.number())?;
+                crate::blocks::remove_block(db, w, block_db.block.number())?;
                 trace!("BlocksDBsWriteQuery::WriteBlock...finish");
             }
         }
diff --git a/lib/modules/blockchain/blockchain/Cargo.toml b/lib/modules/blockchain/blockchain/Cargo.toml
index 77c33b6bf37cf388550fcce007246f18f25bf368..dd0a21d593afe7f195b462afeac4a742a41e7b48 100644
--- a/lib/modules/blockchain/blockchain/Cargo.toml
+++ b/lib/modules/blockchain/blockchain/Cargo.toml
@@ -41,4 +41,6 @@ unwrap = "1.2.1"
 dup-crypto-tests-tools = { path = "../../../tests-tools/crypto-tests-tools" }
 dubp-user-docs-tests-tools = { path = "../../../tests-tools/user-docs-tests-tools" }
 dubp-blocks-tests-tools = { path = "../../../tests-tools/blocks-tests-tools" }
+durs-common-tests-tools = { path = "../../../tests-tools/common-tests-tools" }
+pretty_assertions = "0.5.1"
 tempfile = "3.1.0"
diff --git a/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs b/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
index dd5f853bea365c960169f66d478d2addf82bd7b0..2aee3b68bac247b77c1bd0a4114e7a22300fe1a7 100644
--- a/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
+++ b/lib/modules/blockchain/blockchain/src/dubp/apply/mod.rs
@@ -15,7 +15,7 @@
 
 //! Sub-module that applies the content of a block to the indexes of the local blockchain.
 
-use dubp_block_doc::block::{BlockDocument, BlockDocumentTrait, BlockDocumentV10};
+use dubp_block_doc::block::{BlockDocument, BlockDocumentV10};
 use dubp_common_doc::traits::Document;
 use dubp_common_doc::BlockNumber;
 use dubp_user_docs::documents::transaction::{TxAmount, TxBase};
@@ -65,7 +65,7 @@ pub fn apply_valid_block<W: WebOfTrust>(
 pub fn apply_valid_block_v10<W: WebOfTrust>(
     db: &Db,
     w: &mut DbWriter,
-    mut block: BlockDocumentV10,
+    block: BlockDocumentV10,
     wot_index: &mut HashMap<PubKey, WotId>,
     wot_db: &BinFreeStructDb<W>,
     expire_certs: &HashMap<(WotId, WotId), BlockNumber>,
@@ -282,14 +282,13 @@ pub fn apply_valid_block_v10<W: WebOfTrust>(
         );
     }*/
     // Create DbBlock
-    block.reduce();
-    let dal_block = DbBlock {
+    let block_db = DbBlock {
         block: BlockDocument::V10(block),
         expire_certs: Some(expire_certs.clone()),
     };
     // Return DBs requests
     Ok(ValidBlockApplyReqs(
-        BlocksDBsWriteQuery::WriteBlock(dal_block),
+        BlocksDBsWriteQuery::WriteBlock(block_db),
         wot_dbs_requests,
         currency_dbs_requests,
     ))
diff --git a/lib/modules/blockchain/blockchain/src/lib.rs b/lib/modules/blockchain/blockchain/src/lib.rs
index 812f15d00c12ae3ac418de1237af89a476f6724d..3c6137f3ad2315ef11c8eed371fff8ab16c7ab79 100644
--- a/lib/modules/blockchain/blockchain/src/lib.rs
+++ b/lib/modules/blockchain/blockchain/src/lib.rs
@@ -170,6 +170,44 @@ pub enum SyncVerificationLevel {
 }
 
 impl BlockchainModule {
+    /// Instantiate blockchain module
+    pub fn new(
+        router_sender: Sender<RouterThreadMessage<DursMsg>>,
+        profile_path: PathBuf,
+        currency_name: Option<CurrencyName>,
+        currency_params: Option<CurrencyParameters>,
+        db: Db,
+        wot_databases: WotsV10DBs,
+    ) -> Result<BlockchainModule, DbError> {
+        // Get current blockstamp
+        let current_blockstamp =
+            durs_bc_db_reader::current_meta_datas::get_current_blockstamp(&db)?.unwrap_or_default();
+
+        // Get fork tree
+        let fork_tree = durs_bc_db_reader::current_meta_datas::get_fork_tree(&db)?;
+
+        // Get wot index
+        let wot_index: HashMap<PubKey, WotId> =
+            durs_bc_db_reader::indexes::identities::get_wot_index(&db)?;
+
+        Ok(BlockchainModule {
+            router_sender,
+            profile_path,
+            currency: currency_name,
+            currency_params,
+            current_blockstamp,
+            consensus: Blockstamp::default(),
+            db: Some(db),
+            fork_tree,
+            wot_index,
+            wot_databases,
+            pending_block: None,
+            invalid_forks: HashSet::new(),
+            pending_network_requests: HashMap::new(),
+            last_request_blocks: UNIX_EPOCH,
+            last_request_fork_blocks: UNIX_EPOCH,
+        })
+    }
     /// Return module identifier
     pub fn name() -> ModuleStaticName {
         ModuleStaticName(MODULE_NAME)
@@ -184,16 +222,9 @@ impl BlockchainModule {
         // Get db path
         let dbs_path = durs_conf::get_blockchain_db_path(profile_path.clone());
 
-        // Open databases
-        let fork_tree = durs_bc_db_reader::current_meta_datas::get_fork_tree(&db)
-            .unwrap_or_else(|_| fatal_error!("Fail to get fork tree."));
+        // Open wot
         let wot_databases = WotsV10DBs::open(Some(&dbs_path));
 
-        // Get current blockstamp
-        let current_blockstamp = durs_bc_db_reader::current_meta_datas::get_current_blockstamp(&db)
-            .expect("Fatal error : fail to read Blockchain DB !")
-            .unwrap_or_default();
-
         // Get currency parameters
         let (currency_name, currency_params) = if let Some((currency_name, currency_params)) =
             dubp_currency_params::db::get_currency_params(durs_conf::get_datas_path(
@@ -206,29 +237,17 @@ impl BlockchainModule {
             (None, None)
         };
 
-        // Get wot index
-        let wot_index: HashMap<PubKey, WotId> =
-            durs_bc_db_reader::indexes::identities::get_wot_index(&db)
-                .expect("Fatal eror : get_wot_index : Fail to read blockchain databases");
-
         // Instanciate BlockchainModule
-        BlockchainModule {
+        // TODO ESZ
+        BlockchainModule::new(
             router_sender,
             profile_path,
-            currency: currency_name,
+            currency_name,
             currency_params,
-            current_blockstamp,
-            consensus: Blockstamp::default(),
-            db: Some(db),
-            fork_tree,
-            wot_index,
+            db,
             wot_databases,
-            pending_block: None,
-            invalid_forks: HashSet::new(),
-            pending_network_requests: HashMap::new(),
-            last_request_blocks: UNIX_EPOCH,
-            last_request_fork_blocks: UNIX_EPOCH,
-        }
+        )
+        .unwrap_or_else(|e| fatal_error!("Fail to instantiate BlockchainModule: {:?}", e))
     }
     /// Databases explorer
     pub fn dbex(profile_path: PathBuf, csv: bool, req: &DbExQuery) {
@@ -293,14 +312,14 @@ impl BlockchainModule {
         loop {
             let now = SystemTime::now();
             // Request Consensus
-            requests::sent::request_network_consensus(self);
+            //requests::sent::request_network_consensus(self);
             // Request next main blocks
             requests::sent::request_next_main_blocks(self, now);
             // Request fork blocks
             requests::sent::request_fork_blocks(self, now);
 
             // Listen received messages
-            match blockchain_receiver.recv_timeout(Duration::from_millis(1000)) {
+            match blockchain_receiver.recv_timeout(Duration::from_millis(2000)) {
                 Ok(durs_message) => {
                     match durs_message {
                         DursMsg::Request {
@@ -321,7 +340,10 @@ impl BlockchainModule {
                             res_content,
                             ..
                         } => responses::received::receive_response(self, req_id, res_content),
-                        DursMsg::Stop => break,
+                        DursMsg::Stop => {
+                            debug!("Receive Stop message.");
+                            break;
+                        }
                         _ => {} // Others DursMsg variants
                     }
                 }
diff --git a/lib/modules/blockchain/blockchain/src/requests/sent.rs b/lib/modules/blockchain/blockchain/src/requests/sent.rs
index ef3584c3ba4c1eaf2436345a01c85ea433b14520..788255751661baf9e8f36717e0b5a441eb650bd3 100644
--- a/lib/modules/blockchain/blockchain/src/requests/sent.rs
+++ b/lib/modules/blockchain/blockchain/src/requests/sent.rs
@@ -17,20 +17,25 @@
 
 use crate::*;
 use dubp_common_doc::{BlockNumber, Blockstamp};
-use durs_network::requests::OldNetworkRequest;
 
-pub fn request_network_consensus(bc: &mut BlockchainModule) {
-    let req = OldNetworkRequest::GetConsensus(ModuleReqFullId(
-        BlockchainModule::name(),
-        ModuleReqId(bc.pending_network_requests.len() as u32),
-    ));
-    let req_id = dunp::queries::request_network(
-        bc,
-        ModuleReqId(bc.pending_network_requests.len() as u32),
-        &req,
-    );
-    bc.pending_network_requests.insert(req_id, req);
-}
+/*pub fn request_network_consensus(bc: &mut BlockchainModule) {
+    if now
+        .duration_since(bc.last_request_consensus)
+        .expect("duration_since error")
+        > Duration::from_secs(*REQUEST_CONSENSUS_FREQUENCY_IN_SEC)
+    {
+        let req = OldNetworkRequest::GetConsensus(ModuleReqFullId(
+            BlockchainModule::name(),
+            ModuleReqId(bc.pending_network_requests.len() as u32),
+        ));
+        let req_id = dunp::queries::request_network(
+            bc,
+            ModuleReqId(bc.pending_network_requests.len() as u32),
+            &req,
+        );
+        bc.pending_network_requests.insert(req_id, req);
+    }
+}*/
 
 pub fn request_orphan_previous(bc: &mut BlockchainModule, orphan_blockstamp: Blockstamp) {
     let new_pending_network_requests =
diff --git a/lib/tests-tools/blocks-tests-tools/src/mocks.rs b/lib/tests-tools/blocks-tests-tools/src/mocks.rs
index 5b3fe2f155c83d0dcb93e8ca742fa595de58457b..7a1fba293191a19bfd8399006c0cf96f925b9796 100644
--- a/lib/tests-tools/blocks-tests-tools/src/mocks.rs
+++ b/lib/tests-tools/blocks-tests-tools/src/mocks.rs
@@ -67,7 +67,7 @@ pub fn gen_empty_timed_issued_hashed_block_v10(
     signator: &dup_crypto::keys::SignatorEnum,
 ) -> BlockDocumentV10 {
     let mut block = gen_empty_block_v10(block_number);
-    block.time = time;
+    block.median_time = time;
     block.issuers = vec![signator.public_key()];
     block.previous_issuer = Some(previous_issuer);
     block.previous_hash = Some(previous_hash);