diff --git a/payjoin-cli/src/app.rs b/payjoin-cli/src/app.rs index 98c64f4f..86e7459e 100644 --- a/payjoin-cli/src/app.rs +++ b/payjoin-cli/src/app.rs @@ -332,7 +332,7 @@ impl App { .map(|res| res.psbt) .map_err(|e| Error::Server(e.into())) }, - Some(1), + Some(bitcoin::FeeRate::MIN), )?; let payjoin_proposal_psbt = payjoi_proposal.get_payjoin_psbt(); log::debug!("Receiver's Payjoin proposal PSBT Rsponse: {:#?}", payjoin_proposal_psbt); diff --git a/payjoin/src/receive/mod.rs b/payjoin/src/receive/mod.rs index b1577c9e..e3905209 100644 --- a/payjoin/src/receive/mod.rs +++ b/payjoin/src/receive/mod.rs @@ -721,9 +721,11 @@ impl ProvisionalProposal { /// this is kind of a "build_proposal" step before we sign and finalize and extract /// /// WARNING: DO NOT ALTER INPUTS OR OUTPUTS AFTER THIS STEP - fn apply_fee(&mut self, min_feerate_sat_per_vb: Option) -> Result<&Psbt, RequestError> { - let min_feerate = - FeeRate::from_sat_per_vb_unchecked(min_feerate_sat_per_vb.unwrap_or_default()); + fn apply_fee( + &mut self, + min_feerate_sat_per_vb: Option, + ) -> Result<&Psbt, RequestError> { + let min_feerate = min_feerate_sat_per_vb.unwrap_or(FeeRate::MIN); log::trace!("min_feerate: {:?}", min_feerate); log::trace!("params.min_feerate: {:?}", self.params.min_feerate); let min_feerate = max(min_feerate, self.params.min_feerate); @@ -812,19 +814,16 @@ impl ProvisionalProposal { pub fn finalize_proposal( mut self, wallet_process_psbt: impl Fn(&Psbt) -> Result, - min_feerate_sat_per_vb: Option, + min_feerate_sat_per_vb: Option, ) -> Result { - let payjoin_proposal_psbt: &Psbt = self.apply_fee(min_feerate_sat_per_vb)?; - let payjoin_proposal_psbt = match wallet_process_psbt(payjoin_proposal_psbt) { - Ok(p) => p, - Err(_) => { - return Err(RequestError::from(InternalRequestError::PsbtFinalizingError)); - } - }; - let payjoin_proposal_psbt = Psbt::from_str(&payjoin_proposal_psbt.to_string()) - .map_err(InternalRequestError::PsbtParseError)?; - let payjoin_proposal = - self.prepare_psbt(payjoin_proposal_psbt).map_err(RequestError::from)?; + let psbt = self.apply_fee(min_feerate_sat_per_vb)?; + let psbt = wallet_process_psbt(psbt).map_err(|_| { + log::error!("wallet_process_psbt error"); + InternalRequestError::PsbtFinalizingError + })?; + let psbt = + Psbt::from_str(&psbt.to_string()).map_err(InternalRequestError::PsbtParseError)?; + let payjoin_proposal = self.prepare_psbt(psbt).map_err(RequestError::from)?; Ok(payjoin_proposal) } }