Skip to content

Commit 1831358

Browse files
committed
Test: Track topology and coloring in different global GDs
1 parent b5a6ac7 commit 1831358

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

consensus/src/processes/dagknight/protocol.rs

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -737,26 +737,40 @@ mod tests {
737737
let mut reachability = MemoryReachabilityStore::new();
738738
let mut relations = MemoryRelationsStore::new();
739739
// Global GD store. To be used for global coloring:
740-
let ghostdag_store = Arc::new(MemoryGhostdagStore::new());
741-
let headers_store = Arc::new(MemoryHeaderStore::new(ghostdag_store.clone()));
742-
let dagknight_store = Arc::new(MemoryDagknightStore::new(dk_map));
743-
744-
let gd_manager = GhostdagManager::new(
740+
let coloring_ghostdag_store = Arc::new(MemoryGhostdagStore::new());
741+
let headers_store = Arc::new(MemoryHeaderStore::new(coloring_ghostdag_store.clone()));
742+
let coloring_gd_manager = GhostdagManager::new(
745743
genesis_hash,
746744
ForkedParam::new_const(k_max),
747-
ghostdag_store.clone(),
745+
coloring_ghostdag_store.clone(),
748746
relations.clone(),
749747
headers_store.clone(),
750748
reachability.clone(),
751749
);
752750

753-
ghostdag_store.insert(genesis_hash, Arc::new(gd_manager.genesis_ghostdag_data())).unwrap();
751+
coloring_ghostdag_store.insert(genesis_hash, Arc::new(coloring_gd_manager.genesis_ghostdag_data())).unwrap();
754752

753+
// Global GD store. To be used for topology:
754+
let topology_ghostdag_store = Arc::new(MemoryGhostdagStore::new());
755+
let topology_headers_store = Arc::new(MemoryHeaderStore::new(topology_ghostdag_store.clone()));
756+
757+
let topology_gd_manager = GhostdagManager::new(
758+
genesis_hash,
759+
ForkedParam::new_const(k_max),
760+
topology_ghostdag_store.clone(),
761+
relations.clone(),
762+
topology_headers_store.clone(),
763+
reachability.clone(),
764+
);
765+
766+
topology_ghostdag_store.insert(genesis_hash, Arc::new(topology_gd_manager.genesis_ghostdag_data())).unwrap();
767+
768+
let dagknight_store = Arc::new(MemoryDagknightStore::new(dk_map));
755769
let relations_stores = vec![relations.clone()];
756770
let dk_executor = DagknightExecutor {
757771
genesis_hash,
758772
dagknight_store: dagknight_store.clone(),
759-
ghostdag_store: ghostdag_store.clone(),
773+
ghostdag_store: topology_ghostdag_store.clone(),
760774
headers_store: headers_store.clone(),
761775
reachability_service: MTReachabilityService::new(Arc::new(RwLock::new(reachability.clone()))),
762776
relations_stores: Arc::new(RwLock::new(relations_stores)),
@@ -782,24 +796,28 @@ mod tests {
782796

783797
let new_block = DagBlock::new(block_hash, parent_hashes);
784798

799+
// Pure GD for blue_work:
800+
let topology_gd_data = topology_gd_manager.ghostdag(&new_block.parents);
801+
topology_ghostdag_store.insert(block_hash, Arc::new(topology_gd_data)).unwrap();
802+
785803
let selected_parent = dk_executor.dagknight(&new_block.parents);
786-
// let selected_parent = dk_data.selected_parent;
787-
let gd_data = gd_manager.ghostdag_customized(&new_block.parents, None, Some(selected_parent));
804+
805+
// Maintain global coloring based on DK megachain selected parent:
806+
let gd_data = coloring_gd_manager.ghostdag_customized(&new_block.parents, None, Some(selected_parent));
807+
coloring_ghostdag_store.insert(block_hash, Arc::new(gd_data)).unwrap();
788808

789809
builder.add_block_with_selected_parent(new_block, selected_parent);
790-
ghostdag_store.insert(block_hash, Arc::new(gd_data)).unwrap();
791-
// dagknight_store.insert(block_hash, Arc::new(dk_data)).unwrap();
792810
}
793811

794812
let tip_hashes = tips.iter().copied().collect_vec();
795813
let virtual_hash = Hash::from_u64_word(plan.blocks.last().unwrap().0 + 1);
796814
let virtual_block = DagBlock::new(virtual_hash, tip_hashes.clone());
797815
let selected_parent = dk_executor.dagknight(&virtual_block.parents.clone());
798816
// let selected_parent = dk_data.selected_parent;
799-
let gd_data = gd_manager.ghostdag_customized(&tip_hashes, None, Some(selected_parent));
817+
let gd_data = coloring_gd_manager.ghostdag_customized(&tip_hashes, None, Some(selected_parent));
800818
println!("virtual_block: {} | sp: {}", virtual_block.hash, selected_parent);
801819
builder.add_block_with_selected_parent(virtual_block, selected_parent);
802-
ghostdag_store.insert(virtual_hash, Arc::new(gd_data)).unwrap();
820+
coloring_ghostdag_store.insert(virtual_hash, Arc::new(gd_data)).unwrap();
803821

804822
// let blues = BlockHashSet::new();
805823
let mut reds = BlockHashSet::new();
@@ -810,7 +828,7 @@ mod tests {
810828
chain_nodes.insert(curr);
811829

812830
while curr != genesis.hash {
813-
let mergeset_reds = ghostdag_store.get_mergeset_reds(curr).unwrap();
831+
let mergeset_reds = coloring_ghostdag_store.get_mergeset_reds(curr).unwrap();
814832
mergeset_reds.iter().for_each(|mrr| {
815833
reds.insert(*mrr);
816834
});

0 commit comments

Comments
 (0)