From 4191ea68d297f144b43c96eae14237a796fd2886 Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Thu, 14 Dec 2023 19:33:21 +0000 Subject: [PATCH] refactor: wallet for nut04 v1 --- crates/cashu-sdk/src/client/gloo_client.rs | 16 ++++++++-------- crates/cashu-sdk/src/client/minreq_client.rs | 16 ++++++++-------- crates/cashu-sdk/src/client/mod.rs | 6 +++--- crates/cashu-sdk/src/mint.rs | 8 ++++---- crates/cashu-sdk/src/wallet.rs | 10 +++++----- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/crates/cashu-sdk/src/client/gloo_client.rs b/crates/cashu-sdk/src/client/gloo_client.rs index b21b238d..30abed38 100644 --- a/crates/cashu-sdk/src/client/gloo_client.rs +++ b/crates/cashu-sdk/src/client/gloo_client.rs @@ -4,8 +4,8 @@ use async_trait::async_trait; #[cfg(feature = "nut09")] use cashu::nuts::MintInfo; use cashu::nuts::{ - BlindedMessage, Keys, MeltBolt11Request, MeltBolt11Response, MintRequest, PostMintResponse, - PreMintSecrets, Proof, RequestMintResponse, SplitRequest, SplitResponse, *, + BlindedMessage, Keys, MeltBolt11Request, MeltBolt11Response, MintBolt11Request, + MintBolt11Response, PreMintSecrets, Proof, RequestMintResponse, SplitRequest, SplitResponse, *, }; #[cfg(feature = "nut07")] use cashu::nuts::{CheckSpendableRequest, CheckSpendableResponse}; @@ -88,13 +88,13 @@ impl Client for HttpClient { async fn post_mint( &self, mint_url: Url, + quote: &str, premint_secrets: PreMintSecrets, - hash: &str, - ) -> Result { - let mut url = join_url(mint_url, "mint")?; - url.query_pairs_mut().append_pair("hash", hash); + ) -> Result { + let url = join_url(mint_url, "mint")?; - let request = MintRequest { + let request = MintBolt11Request { + quote: quote.to_string(), outputs: premint_secrets.blinded_messages(), }; @@ -108,7 +108,7 @@ impl Client for HttpClient { .await .map_err(|err| Error::Gloo(err.to_string()))?; - let response: Result = + let response: Result = serde_json::from_value(res.clone()); match response { diff --git a/crates/cashu-sdk/src/client/minreq_client.rs b/crates/cashu-sdk/src/client/minreq_client.rs index 28501f80..45043063 100644 --- a/crates/cashu-sdk/src/client/minreq_client.rs +++ b/crates/cashu-sdk/src/client/minreq_client.rs @@ -6,8 +6,8 @@ use async_trait::async_trait; #[cfg(feature = "nut09")] use cashu::nuts::MintInfo; use cashu::nuts::{ - BlindedMessage, Keys, MeltBolt11Request, MeltBolt11Response, MintRequest, PostMintResponse, - PreMintSecrets, Proof, RequestMintResponse, SplitRequest, SplitResponse, *, + BlindedMessage, Keys, MeltBolt11Request, MeltBolt11Response, MintBolt11Request, + MintBolt11Response, PreMintSecrets, Proof, RequestMintResponse, SplitRequest, SplitResponse, *, }; #[cfg(feature = "nut07")] use cashu::nuts::{CheckSpendableRequest, CheckSpendableResponse}; @@ -71,13 +71,13 @@ impl Client for HttpClient { async fn post_mint( &self, mint_url: Url, + quote: &str, premint_secrets: PreMintSecrets, - hash: &str, - ) -> Result { - let mut url = join_url(mint_url, "mint")?; - url.query_pairs_mut().append_pair("hash", hash); + ) -> Result { + let url = join_url(mint_url, "mint")?; - let request = MintRequest { + let request = MintBolt11Request { + quote: quote.to_string(), outputs: premint_secrets.blinded_messages(), }; @@ -86,7 +86,7 @@ impl Client for HttpClient { .send()? .json::()?; - let response: Result = + let response: Result = serde_json::from_value(res.clone()); match response { diff --git a/crates/cashu-sdk/src/client/mod.rs b/crates/cashu-sdk/src/client/mod.rs index b5d6837f..520f8d58 100644 --- a/crates/cashu-sdk/src/client/mod.rs +++ b/crates/cashu-sdk/src/client/mod.rs @@ -8,7 +8,7 @@ use cashu::nuts::CheckSpendableResponse; #[cfg(feature = "nut09")] use cashu::nuts::MintInfo; use cashu::nuts::{ - BlindedMessage, Keys, KeysetResponse, MeltBolt11Response, PostMintResponse, PreMintSecrets, + BlindedMessage, Keys, KeysetResponse, MeltBolt11Response, MintBolt11Response, PreMintSecrets, Proof, RequestMintResponse, SplitRequest, SplitResponse, }; use cashu::{utils, Amount}; @@ -99,9 +99,9 @@ pub trait Client { async fn post_mint( &self, mint_url: Url, + quote: &str, premint_secrets: PreMintSecrets, - hash: &str, - ) -> Result; + ) -> Result; async fn post_melt( &self, diff --git a/crates/cashu-sdk/src/mint.rs b/crates/cashu-sdk/src/mint.rs index 57a9ab6f..2ffd9147 100644 --- a/crates/cashu-sdk/src/mint.rs +++ b/crates/cashu-sdk/src/mint.rs @@ -105,16 +105,16 @@ impl Mint { pub fn process_mint_request( &mut self, - mint_request: nut04::MintRequest, - ) -> Result { + mint_request: nut04::MintBolt11Request, + ) -> Result { let mut blind_signatures = Vec::with_capacity(mint_request.outputs.len()); for blinded_message in mint_request.outputs { blind_signatures.push(self.blind_sign(&blinded_message)?); } - Ok(nut04::PostMintResponse { - promises: blind_signatures, + Ok(nut04::MintBolt11Response { + signatures: blind_signatures, }) } diff --git a/crates/cashu-sdk/src/wallet.rs b/crates/cashu-sdk/src/wallet.rs index 5085720b..67d87d2b 100644 --- a/crates/cashu-sdk/src/wallet.rs +++ b/crates/cashu-sdk/src/wallet.rs @@ -94,31 +94,31 @@ impl Wallet { pub async fn mint_token( &self, amount: Amount, - hash: &str, + quote: &str, memo: Option, unit: Option, ) -> Result { - let proofs = self.mint(amount, hash).await?; + let proofs = self.mint(amount, quote).await?; let token = Token::new(self.mint_url.clone(), proofs, memo, unit); Ok(token?) } /// Mint Proofs - pub async fn mint(&self, amount: Amount, hash: &str) -> Result { + pub async fn mint(&self, amount: Amount, quote: &str) -> Result { let premint_secrets = PreMintSecrets::random((&self.mint_keys).into(), amount)?; let mint_res = self .client .post_mint( self.mint_url.clone().try_into()?, + quote, premint_secrets.clone(), - hash, ) .await?; let proofs = construct_proofs( - mint_res.promises, + mint_res.signatures, premint_secrets.rs(), premint_secrets.secrets(), &self.mint_keys,