From c0f9d5cc31ff24ceacb462bf194b181c65b1c039 Mon Sep 17 00:00:00 2001 From: Chenxing Li Date: Thu, 30 May 2024 21:49:47 +0800 Subject: [PATCH] Fix quality overflow (#75) --- node/miner/src/pora.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/node/miner/src/pora.rs b/node/miner/src/pora.rs index e6d8c56..107a103 100644 --- a/node/miner/src/pora.rs +++ b/node/miner/src/pora.rs @@ -102,8 +102,15 @@ impl<'a> Miner<'a> { let quality = self.pora(idx, &sealed_data, pad_seed); let quality_scale = self.range.shard_mask.count_zeros(); - if quality << quality_scale <= *self.target_quality { - debug!("Find a PoRA valid answer, quality: {}", quality); + if quality <= U256::MAX >> quality_scale + && quality << quality_scale <= *self.target_quality + { + debug!( + "Find a PoRA valid answer, quality: {}, target_quality {}, scale {}", + U256::MAX / quality, + U256::MAX / self.target_quality, + quality_scale + ); // Undo mix data when find a valid solition for (x, y) in sealed_data.iter_mut().zip(scratch_pad.iter()) { *x ^= y;