]> Untitled Git - bdk/commitdiff
[wallet] Add `assume_height_reached` in PSBTSatisfier
authorAlekos Filini <alekos.filini@gmail.com>
Tue, 28 Apr 2020 14:59:15 +0000 (16:59 +0200)
committerAlekos Filini <alekos.filini@gmail.com>
Tue, 28 Apr 2020 14:59:15 +0000 (16:59 +0200)
src/psbt/mod.rs
src/wallet/mod.rs

index d7eb43f508d4aaae2fd53088369857a63433b041..08f15878329073e1c48c7a65f7089f02f2176b9a 100644 (file)
@@ -21,6 +21,7 @@ pub mod utils;
 
 pub struct PSBTSatisfier<'a> {
     input: &'a psbt::Input,
+    assume_height_reached: bool,
     create_height: Option<u32>,
     current_height: Option<u32>,
 }
@@ -28,11 +29,13 @@ pub struct PSBTSatisfier<'a> {
 impl<'a> PSBTSatisfier<'a> {
     pub fn new(
         input: &'a psbt::Input,
+        assume_height_reached: bool,
         create_height: Option<u32>,
         current_height: Option<u32>,
     ) -> Self {
         PSBTSatisfier {
             input,
+            assume_height_reached,
             create_height,
             current_height,
         }
@@ -95,15 +98,23 @@ impl<'a> Satisfier<bitcoin::PublicKey> for PSBTSatisfier<'a> {
         // TODO: also check if `nSequence` right
         debug!("check_older: {}", height);
 
-        // TODO: test >= / >
-        self.current_height.unwrap_or(0) >= self.create_height.unwrap_or(0) + height
+        if let Some(current_height) = self.current_height {
+            // TODO: test >= / >
+            current_height >= self.create_height.unwrap_or(0) + height
+        } else {
+            self.assume_height_reached
+        }
     }
 
     fn check_after(&self, height: u32) -> bool {
         // TODO: also check if `nLockTime` is right
         debug!("check_after: {}", height);
 
-        self.current_height.unwrap_or(0) > height
+        if let Some(current_height) = self.current_height {
+            current_height > height
+        } else {
+            self.assume_height_reached
+        }
     }
 }
 
index 57daa49157073365ce817484fc8c8590e9b15080..048e5153ef81268a1982138da999e7653dee3970 100644 (file)
@@ -656,7 +656,7 @@ where
             };
 
             // TODO: use height once we sync headers
-            let satisfier = PSBTSatisfier::new(&psbt.inputs[n], None, None);
+            let satisfier = PSBTSatisfier::new(&psbt.inputs[n], true, None, None);
 
             match desc.satisfy(input, satisfier) {
                 Ok(_) => continue,