From 04d04fd0b2ee5ad7c11b4cf3b903db1783ce8793 Mon Sep 17 00:00:00 2001 From: Alekos Filini Date: Tue, 28 Apr 2020 16:59:15 +0200 Subject: [PATCH] [wallet] Add `assume_height_reached` in PSBTSatisfier --- src/psbt/mod.rs | 17 ++++++++++++++--- src/wallet/mod.rs | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/psbt/mod.rs b/src/psbt/mod.rs index d7eb43f5..08f15878 100644 --- a/src/psbt/mod.rs +++ b/src/psbt/mod.rs @@ -21,6 +21,7 @@ pub mod utils; pub struct PSBTSatisfier<'a> { input: &'a psbt::Input, + assume_height_reached: bool, create_height: Option, current_height: Option, } @@ -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, current_height: Option, ) -> Self { PSBTSatisfier { input, + assume_height_reached, create_height, current_height, } @@ -95,15 +98,23 @@ impl<'a> Satisfier 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 + } } } diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index 57daa491..048e5153 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -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,