Merge pull request #1777 from lexe-tech/max/best-block-header-best-block
authorJeffrey Czyz <jkczyz@gmail.com>
Wed, 19 Oct 2022 13:46:07 +0000 (08:46 -0500)
committerGitHub <noreply@github.com>
Wed, 19 Oct 2022 13:46:07 +0000 (08:46 -0500)
Add `.to_best_block()` method to `ValidatedBlockHeader`

lightning-block-sync/src/poll.rs

index d45e900bad0b3733da3335cd9415001bd4c9a558..05ccd4504fde0d81a76646d91b44d9b2b1653711 100644 (file)
@@ -4,6 +4,7 @@ use crate::{AsyncBlockSourceResult, BlockData, BlockHeaderData, BlockSource, Blo
 
 use bitcoin::hash_types::BlockHash;
 use bitcoin::network::constants::Network;
+use lightning::chain::BestBlock;
 
 use std::ops::Deref;
 
@@ -146,6 +147,19 @@ impl ValidatedBlockHeader {
 
                Ok(())
        }
+
+    /// Returns the [`BestBlock`] corresponding to this validated block header, which can be passed
+    /// into [`ChannelManager::new`] as part of its [`ChainParameters`]. Useful for ensuring that
+    /// the [`SpvClient`] and [`ChannelManager`] are initialized to the same block during a fresh
+    /// start.
+    ///
+    /// [`SpvClient`]: crate::SpvClient
+    /// [`ChainParameters`]: lightning::ln::channelmanager::ChainParameters
+    /// [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
+    /// [`ChannelManager::new`]: lightning::ln::channelmanager::ChannelManager::new
+    pub fn to_best_block(&self) -> BestBlock {
+        BestBlock::new(self.block_hash, self.inner.height)
+    }
 }
 
 /// A block with validated data against its transaction list and corresponding block hash.