diff --git a/substrate/tendermint/machine/src/lib.rs b/substrate/tendermint/machine/src/lib.rs
index 43056f9f..166dbd6c 100644
--- a/substrate/tendermint/machine/src/lib.rs
+++ b/substrate/tendermint/machine/src/lib.rs
@@ -345,15 +345,15 @@ impl<N: Network + 'static> TendermintMachine<N> {
           Ok(Some(block)) => {
             let mut validators = vec![];
             let mut sigs = vec![];
-            for (v, sig) in self
-              .block
-              .log
-              .precommitted
-              .iter()
-              .filter_map(|(k, (id, sig))| Some((*k, sig.clone())).filter(|_| id == &block.id()))
-            {
-              validators.push(v);
-              sigs.push(sig);
+            // Get all precommits for this round
+            for (validator, msgs) in &self.block.log.log[&msg.round] {
+              if let Some(Data::Precommit(Some((id, sig)))) = msgs.get(&Step::Precommit) {
+                // If this precommit was for this block, include it
+                if id == &block.id() {
+                  validators.push(*validator);
+                  sigs.push(sig.clone());
+                }
+              }
             }
 
             let commit = Commit {
diff --git a/substrate/tendermint/machine/src/message_log.rs b/substrate/tendermint/machine/src/message_log.rs
index 0592160d..cb64676e 100644
--- a/substrate/tendermint/machine/src/message_log.rs
+++ b/substrate/tendermint/machine/src/message_log.rs
@@ -4,10 +4,7 @@ use crate::{ext::*, RoundNumber, Step, Data, DataFor, MessageFor, TendermintErro
 
 pub(crate) struct MessageLog<N: Network> {
   weights: Arc<N::Weights>,
-  pub(crate) precommitted: HashMap<
-    N::ValidatorId,
-    (<N::Block as Block>::Id, <N::SignatureScheme as SignatureScheme>::Signature),
-  >,
+  precommitted: HashMap<N::ValidatorId, <N::Block as Block>::Id>,
   pub(crate) log: HashMap<RoundNumber, HashMap<N::ValidatorId, HashMap<Step, DataFor<N>>>>,
 }
 
@@ -34,13 +31,13 @@ impl<N: Network> MessageLog<N> {
     }
 
     // If they already precommitted to a distinct hash, error
-    if let Data::Precommit(Some((hash, sig))) = &msg.data {
-      if let Some((prev, _)) = self.precommitted.get(&msg.sender) {
+    if let Data::Precommit(Some((hash, _))) = &msg.data {
+      if let Some(prev) = self.precommitted.get(&msg.sender) {
         if hash != prev {
           Err(TendermintError::Malicious(msg.sender))?;
         }
       }
-      self.precommitted.insert(msg.sender, (*hash, sig.clone()));
+      self.precommitted.insert(msg.sender, *hash);
     }
 
     msgs.insert(step, msg.data);