diff --git a/runtime/src/validate_block/implementation.rs b/runtime/src/validate_block/implementation.rs index 746f06647f..1f66b6279f 100644 --- a/runtime/src/validate_block/implementation.rs +++ b/runtime/src/validate_block/implementation.rs @@ -264,7 +264,18 @@ impl Storage for WitnessStorage { fn storage_append(&mut self, key: &[u8], value: Vec) { let value_vec = sp_std::vec![EncodeOpaqueValue(value)]; - let current_value = self.overlay.entry(key.to_vec()).or_default(); + + let overlay = &mut self.overlay; + let witness_data = &self.witness_data; + let storage_root = &self.storage_root; + + let current_value = overlay.entry(key.to_vec()).or_insert_with(|| + read_trie_value::>, _>( + witness_data, + storage_root, + key, + ).ok().flatten() + ); let item = current_value.take().unwrap_or_default(); *current_value = Some(