From 78fa292230a363e4eef19e10c7d677f3022f0567 Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Mon, 24 Oct 2022 04:43:59 -0400 Subject: [PATCH] Expand sanity checks Substrate doesn't expect nor officially support children with less work than their parents. It's a trick used here. Accordingly, ensure the trick's validity. --- substrate/consensus/src/tendermint.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/substrate/consensus/src/tendermint.rs b/substrate/consensus/src/tendermint.rs index 4193a255..80bf68ee 100644 --- a/substrate/consensus/src/tendermint.rs +++ b/substrate/consensus/src/tendermint.rs @@ -348,6 +348,7 @@ where let hash = block.hash(); let (header, body) = block.clone().deconstruct(); let parent = *header.parent_hash(); + let number = *header.number(); *self.importing_block.write().unwrap() = Some(hash); self.queue.write().await.as_mut().unwrap().import_blocks( // We do not want this block, which hasn't been confirmed, to be broadcast over the net @@ -372,7 +373,15 @@ where if !ImportFuture::new(hash, self.queue.write().await.as_mut().unwrap()).await { todo!() } - assert_eq!(self.client.info().best_hash, parent); + + // Sanity checks that a child block can have less work than its parent + { + let info = self.client.info(); + assert_eq!(info.best_hash, parent); + assert_eq!(info.finalized_hash, parent); + assert_eq!(info.best_number, number - 1); + assert_eq!(info.finalized_number, number - 1); + } Ok(()) }