Merge pull request #2669 from benthecarman/trace-sync-progress
[rust-lightning] / lightning-block-sync / src / poll.rs
index 05ccd4504fde0d81a76646d91b44d9b2b1653711..e7171cf3656138036d50385691c96e419db29bcd 100644 (file)
@@ -61,7 +61,7 @@ impl Validate for BlockHeaderData {
        fn validate(self, block_hash: BlockHash) -> BlockSourceResult<Self::T> {
                let pow_valid_block_hash = self.header
                        .validate_pow(&self.header.target())
-                       .or_else(|e| Err(BlockSourceError::persistent(e)))?;
+                       .map_err(BlockSourceError::persistent)?;
 
                if pow_valid_block_hash != block_hash {
                        return Err(BlockSourceError::persistent("invalid block hash"));
@@ -82,7 +82,7 @@ impl Validate for BlockData {
 
                let pow_valid_block_hash = header
                        .validate_pow(&header.target())
-                       .or_else(|e| Err(BlockSourceError::persistent(e)))?;
+                       .map_err(BlockSourceError::persistent)?;
 
                if pow_valid_block_hash != block_hash {
                        return Err(BlockSourceError::persistent("invalid block hash"));
@@ -136,8 +136,11 @@ impl ValidatedBlockHeader {
 
                if let Network::Bitcoin = network {
                        if self.height % 2016 == 0 {
-                               let previous_work = previous_header.header.work();
-                               if work > (previous_work << 2) || work < (previous_work >> 2) {
+                               let target = self.header.target();
+                               let previous_target = previous_header.header.target();
+                               let min_target = previous_target >> 2;
+                               let max_target = previous_target << 2;
+                               if target > max_target || target < min_target {
                                        return Err(BlockSourceError::persistent("invalid difficulty transition"))
                                }
                        } else if self.header.bits != previous_header.header.bits {