From ba2e4cf1f3f1a95f0f3f983a3a5d556aed74f17c Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Fri, 29 Sep 2023 07:32:36 +0100 Subject: [PATCH] log amount miss match for verify melt --- crates/cashu-sdk/src/mint.rs | 20 ++++++++++++++------ crates/cashu/src/error.rs | 2 +- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/crates/cashu-sdk/src/mint.rs b/crates/cashu-sdk/src/mint.rs index b316d719..57975cc1 100644 --- a/crates/cashu-sdk/src/mint.rs +++ b/crates/cashu-sdk/src/mint.rs @@ -17,6 +17,7 @@ use cashu::nuts::nut08::MeltResponse; use cashu::nuts::*; use cashu::secret::Secret; use cashu::Amount; +use tracing::debug; pub struct Mint { // pub pubkey: PublicKey, @@ -245,12 +246,17 @@ impl Mint { self.fee_reserve.min_fee_reserve }; - if proofs_total - < melt_request - .invoice_amount() - .map_err(|_| Error::InvoiceAmountUndefined)? - + fee_reserve - { + let required_total = melt_request + .invoice_amount() + .map_err(|_| Error::InvoiceAmountUndefined)? + + fee_reserve; + + if proofs_total < required_total { + debug!( + "Insufficient Proofs: Got: {}, Required: {}", + proofs_total.to_sat().to_string(), + required_total.to_sat().to_string() + ); return Err(Error::Amount); } @@ -274,6 +280,8 @@ impl Mint { preimage: &str, total_spent: Amount, ) -> Result { + self.verify_melt_request(melt_request)?; + let secrets = Vec::with_capacity(melt_request.proofs.len()); for secret in secrets { self.spent_secrets.insert(secret); diff --git a/crates/cashu/src/error.rs b/crates/cashu/src/error.rs index 0a778b94..8f7216dd 100644 --- a/crates/cashu/src/error.rs +++ b/crates/cashu/src/error.rs @@ -33,7 +33,7 @@ impl fmt::Display for Error { Error::CustomError(err) => write!(f, "{}", err), Error::HexError(err) => write!(f, "{}", err), Error::AmountKey => write!(f, "No Key for amount"), - Error::Amount => write!(f, "Amount miss match"), + Error::Amount => write!(f, "Amount miss match."), Error::TokenSpent => write!(f, "Token Spent"), Error::TokenNotVerifed => write!(f, "Token Not Verified"), Error::InvoiceAmountUndefined => write!(f, "Invoice without amount"),