diff --git a/lib/modules/blockchain/blockchain/tests/apply_blocks_cautious.rs b/lib/modules/blockchain/blockchain/tests/apply_blocks_cautious.rs
index 9acd588a4a3ad9eb44566aadf4f59de5e1c41ada..b16ce62c2f0f25995d940c8ba8fc3ab15cc41138 100644
--- a/lib/modules/blockchain/blockchain/tests/apply_blocks_cautious.rs
+++ b/lib/modules/blockchain/blockchain/tests/apply_blocks_cautious.rs
@@ -18,15 +18,10 @@ mod common;
 use crate::common::*;
 use dubp_block_doc::BlockDocument;
 use dubp_currency_params::genesis_block_params::v10::BlockV10Parameters;
-use durs_bc::BlockchainModule;
 use durs_message::events::{BlockchainEvent, DursEvent};
-use durs_message::requests::DursReqContent;
 use durs_message::DursMsg;
-use durs_module::{
-    ModuleEvent, ModuleReqFullId, ModuleReqId, ModuleRole, ModuleStaticName, RouterThreadMessage,
-};
+use durs_module::{ModuleEvent, ModuleStaticName, RouterThreadMessage};
 use durs_network::events::NetworkEvent;
-use durs_network::requests::OldNetworkRequest;
 use pretty_assertions::assert_eq;
 use std::sync::mpsc::{channel, Receiver, Sender};
 
@@ -56,29 +51,7 @@ fn test_apply_blocks_cautious() {
     });
 
     // Receive 11 requests GetBlocks
-    for i in 0..11 {
-        let msg = router_receiver
-            .recv()
-            .expect("blockchain module disconnected.");
-        if let RouterThreadMessage::ModuleMessage(durs_msg) = msg {
-            assert_eq!(
-                DursMsg::Request {
-                    req_from: BlockchainModule::name(),
-                    req_to: ModuleRole::InterNodesNetwork,
-                    req_id: ModuleReqId(i),
-                    req_content: DursReqContent::OldNetworkRequest(OldNetworkRequest::GetBlocks(
-                        ModuleReqFullId(BlockchainModule::name(), ModuleReqId(i)),
-                        50,
-                        i * 50
-                    )),
-                },
-                durs_msg
-            );
-            log::info!("Router receive: {:?}", durs_msg);
-        } else {
-            panic!("Expect ModuleMesage, found: {:?}", msg)
-        }
-    }
+    recv_n_queries_get_blocks(11, &router_receiver);
 
     // Receive first g1-test chunk
     let gt_chunk_0 = dubp_blocks_tests_tools::gt::get_gt_chunk(0);
diff --git a/lib/modules/blockchain/blockchain/tests/common.rs b/lib/modules/blockchain/blockchain/tests/common.rs
index 29eaf73f91e380254625d2721e539e0a76eeeda5..5f1bccd45dbe749ed39688040f7f95573ee4ec0b 100644
--- a/lib/modules/blockchain/blockchain/tests/common.rs
+++ b/lib/modules/blockchain/blockchain/tests/common.rs
@@ -17,10 +17,12 @@ use dubp_currency_params::genesis_block_params::v10::BlockV10Parameters;
 use dubp_currency_params::{CurrencyName, CurrencyParameters};
 use durs_bc::BlockchainModule;
 use durs_bc_db_writer::WotsV10DBs;
+use durs_message::requests::DursReqContent;
 use durs_message::DursMsg;
-use durs_module::RouterThreadMessage;
+use durs_module::{ModuleReqFullId, ModuleReqId, ModuleRole, RouterThreadMessage};
+use durs_network::requests::OldNetworkRequest;
 use std::path::{Path, PathBuf};
-use std::sync::mpsc::Sender;
+use std::sync::mpsc::{Receiver, Sender};
 use std::thread::JoinHandle;
 use tempfile::TempDir;
 
@@ -77,3 +79,32 @@ pub fn init_bc_module(
     )
     .expect("Fail to init BlockchainModule with empty blockchain.")
 }
+
+pub fn recv_n_queries_get_blocks(
+    n: usize,
+    router_receiver: &Receiver<RouterThreadMessage<DursMsg>>,
+) {
+    for i in 0..n {
+        let msg = router_receiver
+            .recv()
+            .expect("blockchain module disconnected.");
+        if let RouterThreadMessage::ModuleMessage(durs_msg) = msg {
+            assert_eq!(
+                DursMsg::Request {
+                    req_from: BlockchainModule::name(),
+                    req_to: ModuleRole::InterNodesNetwork,
+                    req_id: ModuleReqId(i as u32),
+                    req_content: DursReqContent::OldNetworkRequest(OldNetworkRequest::GetBlocks(
+                        ModuleReqFullId(BlockchainModule::name(), ModuleReqId(i as u32)),
+                        50,
+                        (i * 50) as u32
+                    )),
+                },
+                durs_msg
+            );
+            log::info!("Router receive: {:?}", durs_msg);
+        } else {
+            panic!("Expect ModuleMesage, found: {:?}", msg)
+        }
+    }
+}
diff --git a/lib/modules/blockchain/blockchain/tests/revert_blocks.rs b/lib/modules/blockchain/blockchain/tests/revert_blocks.rs
index df188ebeb3c7f56f6dca7b98cf6351c8cce6e217..488371ef7ef8a7c2c4c9af31cf17b3050baceec9 100644
--- a/lib/modules/blockchain/blockchain/tests/revert_blocks.rs
+++ b/lib/modules/blockchain/blockchain/tests/revert_blocks.rs
@@ -17,24 +17,20 @@ mod common;
 
 use crate::common::*;
 use dubp_block_doc::{block::BlockDocumentTrait, BlockDocument};
+use dubp_common_doc::traits::Document;
 use dubp_common_doc::BlockNumber;
 use dubp_currency_params::genesis_block_params::v10::BlockV10Parameters;
 use dup_crypto::keys::{KeyPair, Signator, SignatorEnum};
-use durs_bc::BlockchainModule;
 use durs_message::events::{BlockchainEvent, DursEvent};
-use durs_message::requests::DursReqContent;
 use durs_message::DursMsg;
-use durs_module::{
-    ModuleEvent, ModuleReqFullId, ModuleReqId, ModuleRole, ModuleStaticName, RouterThreadMessage,
-};
+use durs_module::{ModuleEvent, ModuleStaticName, RouterThreadMessage};
 use durs_network::events::NetworkEvent;
-use durs_network::requests::OldNetworkRequest;
 use pretty_assertions::assert_eq;
 use std::sync::mpsc::{channel, Receiver, Sender};
 
 #[cfg(unix)]
 #[test]
-fn test_revert_blocks() {
+fn test_revert_blocks_g1() {
     // Init test
     let tmp_profile_path = common::init();
 
@@ -53,35 +49,79 @@ fn test_revert_blocks() {
     // Create blockchain module channel
     let (bc_sender, bc_receiver): (Sender<DursMsg>, Receiver<DursMsg>) = channel();
 
+    // Start blockchain module
     let handle = std::thread::spawn(move || {
         bc.start_blockchain(&bc_receiver, None);
     });
 
     // Receive 11 requests GetBlocks
-    for i in 0..11 {
-        let msg = router_receiver
-            .recv()
-            .expect("blockchain module disconnected.");
-        if let RouterThreadMessage::ModuleMessage(durs_msg) = msg {
-            assert_eq!(
-                DursMsg::Request {
-                    req_from: BlockchainModule::name(),
-                    req_to: ModuleRole::InterNodesNetwork,
-                    req_id: ModuleReqId(i),
-                    req_content: DursReqContent::OldNetworkRequest(OldNetworkRequest::GetBlocks(
-                        ModuleReqFullId(BlockchainModule::name(), ModuleReqId(i)),
-                        50,
-                        i * 50
-                    )),
-                },
-                durs_msg
-            );
-            log::info!("Router receive: {:?}", durs_msg);
-        } else {
-            panic!("Expect ModuleMesage, found: {:?}", msg)
-        }
+    recv_n_queries_get_blocks(11, &router_receiver);
+
+    // Receive first g1 chunk
+    let mut g1_chunk_0 = dubp_blocks_tests_tools::g1::get_g1_chunk(0);
+    g1_chunk_0.truncate(65);
+    let block_61 = g1_chunk_0.get(61).cloned().expect("g1_chunk_0 is empty !");
+    receive_valid_blocks(&bc_sender, &router_receiver, g1_chunk_0);
+
+    // Generate 6 forks blocks from 62 to 67 included
+    let signator = SignatorEnum::Ed25519(
+        dup_crypto::keys::ed25519::Ed25519KeyPair::generate_random()
+            .generate_signator()
+            .expect("fail to generatye signator"),
+    );
+    let mut fork_blocks = Vec::new();
+    let mut previous_hash = block_61.hash().expect("block_61 have None hash").0;
+    let mut bc_time = block_61.common_time();
+    for n in 62..=67 {
+        bc_time += 301;
+        let block = dubp_blocks_tests_tools::mocks::gen_empty_timed_issued_hashed_block_v10(
+            BlockNumber(n),
+            bc_time,
+            signator.public_key(),
+            previous_hash,
+            &signator,
+        );
+        let block_hash = block.hash().clone().expect("block must have hash");
+        fork_blocks.push(BlockDocument::V10(block));
+        previous_hash = block_hash.0;
     }
 
+    // Cause the revert of 3 blocks (send forks blocks from 62)
+    receive_valid_blocks(&bc_sender, &router_receiver, fork_blocks);
+
+    // Stop and clean
+    common::stop_and_clean(bc_sender, handle, tmp_profile_path);
+}
+
+#[cfg(unix)]
+#[test]
+fn test_revert_blocks_gt() {
+    // Init test
+    let tmp_profile_path = common::init();
+
+    // Router channel
+    let (router_sender, router_receiver) = channel(); // RouterThreadMessage<DursMsg>
+
+    let genesis_params = BlockV10Parameters::default();
+
+    let mut bc = init_bc_module(
+        router_sender,
+        genesis_params,
+        tmp_profile_path.as_path(),
+        false,
+    );
+
+    // Create blockchain module channel
+    let (bc_sender, bc_receiver): (Sender<DursMsg>, Receiver<DursMsg>) = channel();
+
+    // Start blockchain module
+    let handle = std::thread::spawn(move || {
+        bc.start_blockchain(&bc_receiver, None);
+    });
+
+    // Receive 11 requests GetBlocks
+    recv_n_queries_get_blocks(11, &router_receiver);
+
     // Receive first g1-test chunk
     let gt_chunk_0 = dubp_blocks_tests_tools::gt::get_gt_chunk(0);
     receive_valid_blocks(&bc_sender, &router_receiver, gt_chunk_0);
@@ -96,7 +136,7 @@ fn test_revert_blocks() {
     let block_546 = gt_chunk_2.get(46).cloned().expect("gt_chunk_2 is empty !");
     receive_valid_blocks(&bc_sender, &router_receiver, gt_chunk_2);
 
-    // Generate 6 forks blocks from 547 to 553
+    // Generate 7 forks blocks from 547 to 553 included
     let signator = SignatorEnum::Ed25519(
         dup_crypto::keys::ed25519::Ed25519KeyPair::generate_random()
             .generate_signator()
@@ -149,6 +189,7 @@ fn receive_valid_blocks(
         let msg = router_receiver
             .recv()
             .expect("blockchain module disconnected.");
+        let _blockstamp = block.blockstamp();
         if let RouterThreadMessage::ModuleMessage(durs_msg) = msg {
             assert_eq!(
                 DursMsg::Event {
@@ -160,7 +201,7 @@ fn receive_valid_blocks(
                 },
                 durs_msg
             );
-        //log::debug!("Router receive: {:?}", msg);
+        //log::debug!("StackUpValidBlock(#{})", blockstamp);
         } else {
             panic!("Expect ModuleMesage, found: {:?}", msg)
         }