Fix unused warning for un-accessed enum variant field in net-tokio
[rust-lightning] / lightning-block-sync / src / poll.rs
index 9f7e8becf5060c2f62471825a2aa0cfeca573f5e..dcc19a4969dd3eab863c1216b17d434b93f54849 100644 (file)
@@ -60,7 +60,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())
+                       .validate_pow(self.header.target())
                        .map_err(BlockSourceError::persistent)?;
 
                if pow_valid_block_hash != block_hash {
@@ -81,7 +81,7 @@ impl Validate for BlockData {
                };
 
                let pow_valid_block_hash = header
-                       .validate_pow(&header.target())
+                       .validate_pow(header.target())
                        .map_err(BlockSourceError::persistent)?;
 
                if pow_valid_block_hash != 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.min_difficulty_transition_threshold();
+                               let max_target = previous_target.max_difficulty_transition_threshold();
+                               if target > max_target || target < min_target {
                                        return Err(BlockSourceError::persistent("invalid difficulty transition"))
                                }
                        } else if self.header.bits != previous_header.header.bits {
@@ -259,7 +262,6 @@ mod tests {
        use crate::*;
        use crate::test_utils::Blockchain;
        use super::*;
-       use bitcoin::util::uint::Uint256;
 
        #[tokio::test]
        async fn poll_empty_chain() {
@@ -299,7 +301,7 @@ mod tests {
 
                // Invalidate the tip by changing its target.
                chain.blocks.last_mut().unwrap().header.bits =
-                       BlockHeader::compact_target_from_u256(&Uint256::from_be_bytes([0; 32]));
+                       bitcoin::Target::from_be_bytes([0x01; 32]).to_compact_lossy();
 
                let poller = ChainPoller::new(&chain, Network::Bitcoin);
                match poller.poll_chain_tip(best_known_chain_tip).await {