diff --git a/flexidag/src/ghostdag/protocol.rs b/flexidag/src/ghostdag/protocol.rs index ac1b5147cb..435b09b421 100644 --- a/flexidag/src/ghostdag/protocol.rs +++ b/flexidag/src/ghostdag/protocol.rs @@ -184,58 +184,19 @@ impl< let selected_parent = self.find_selected_parent(header.parents_hash().into_iter())?; // Initialize new GHOSTDAG block data with the selected parent let mut new_block_data = GhostdagData::new_with_selected_parent(selected_parent, self.k); - let ordered_mergeset = self.sort_blocks( + new_block_data.mergeset_blues = Arc::new( + vec![selected_parent] + .into_iter() + .chain(self.sort_blocks(blue_blocks.iter().map(|header| header.id()))?) + .collect(), + ); + new_block_data.mergeset_reds = Arc::new( header .parents_hash() .into_iter() - .filter(|header_id| *header_id != new_block_data.selected_parent) - .chain( - blue_blocks - .iter() - .filter(|header| header.id() != new_block_data.selected_parent) - .map(|header| header.id()), - ) - .collect::>() - .into_iter() - .collect::>(), - )?; - - for blue_candidate in ordered_mergeset.iter().cloned() { - let coloring = self.check_blue_candidate(&new_block_data, blue_candidate)?; - if let ColoringOutput::Blue(blue_anticone_size, blues_anticone_sizes) = coloring { - // No k-cluster violation found, we can now set the candidate block as blue - new_block_data.add_blue(blue_candidate, blue_anticone_size, &blues_anticone_sizes); - } else { - new_block_data.add_red(blue_candidate); - } - } - - if new_block_data - .mergeset_blues - .iter() - .skip(1) - .cloned() - .collect::>() - != blue_blocks - .iter() - .map(|header| header.id()) - .collect::>() - { - warn!("The data of blue set is not equal when executing the block: {:?}, for {:?}, checking data: {:?}", header.id(), blue_blocks.iter().map(|header| header.id()).collect::>(), new_block_data.mergeset_blues); - new_block_data.mergeset_blues = Arc::new( - vec![selected_parent] - .into_iter() - .chain(blue_blocks.iter().map(|header| header.id())) - .collect(), - ); - new_block_data.mergeset_reds = Arc::new( - header - .parents_hash() - .into_iter() - .filter(|header_id| !new_block_data.mergeset_blues.contains(header_id)) - .collect(), - ); - } + .filter(|header_id| !new_block_data.mergeset_blues.contains(header_id)) + .collect(), + ); let blue_score = self .ghostdag_store