From c9e649c353be2f78509a2613fb24b179d2df66b0 Mon Sep 17 00:00:00 2001 From: Alexey Pashinov Date: Wed, 3 Jul 2024 14:52:21 +0200 Subject: [PATCH] refactor(core): simplify check and store block proof in blockchain provider --- .../provider/blockchain_provider.rs | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/core/src/block_strider/provider/blockchain_provider.rs b/core/src/block_strider/provider/blockchain_provider.rs index 0af85bc04..e0bc0c52e 100644 --- a/core/src/block_strider/provider/blockchain_provider.rs +++ b/core/src/block_strider/provider/blockchain_provider.rs @@ -91,17 +91,22 @@ impl BlockchainBlockProvider { BlockProofStuff::deserialize(&block_id, &proof_data, is_link), ) { (Ok(block), Ok(proof)) => { - if let (Err(e), _) | (_, Err(e)) = ( - self.proof_checker.check_proof(&block, &proof).await, - self.proof_checker - .store_block_proof(&block, proof, proof_data.into()) - .await, - ) { + if let Err(e) = self.proof_checker.check_proof(&block, &proof).await { handle.reject(); tracing::error!("got invalid mc block proof: {e}"); break 'res; } + if let Err(e) = self + .proof_checker + .store_block_proof(&block, proof, proof_data.into()) + .await + { + handle.reject(); + tracing::error!("failed to store block proof: {e}"); + break 'res; + } + handle.accept(); return Some(Ok(block.with_archive_data(block_data))); } @@ -147,17 +152,22 @@ impl BlockchainBlockProvider { BlockProofStuff::deserialize(&block_id, &proof_data, is_link), ) { (Ok(block), Ok(proof)) => { - if let (Err(e), _) | (_, Err(e)) = ( - self.proof_checker.check_proof(&block, &proof).await, - self.proof_checker - .store_block_proof(&block, proof, proof_data.into()) - .await, - ) { + if let Err(e) = self.proof_checker.check_proof(&block, &proof).await { handle.reject(); tracing::error!("got invalid shard block proof: {e}"); break 'res; } + if let Err(e) = self + .proof_checker + .store_block_proof(&block, proof, proof_data.into()) + .await + { + handle.reject(); + tracing::error!("failed to store block proof: {e}"); + break 'res; + } + handle.accept(); return Some(Ok(block.with_archive_data(block_data))); }