Ver código fonte

refactor: wallet for nut04 v1

thesimplekid 1 ano atrás
pai
commit
4191ea68d2

+ 8 - 8
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<PostMintResponse, Error> {
-        let mut url = join_url(mint_url, "mint")?;
-        url.query_pairs_mut().append_pair("hash", hash);
+    ) -> Result<MintBolt11Response, Error> {
+        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<PostMintResponse, serde_json::Error> =
+        let response: Result<MintBolt11Response, serde_json::Error> =
             serde_json::from_value(res.clone());
 
         match response {

+ 8 - 8
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<PostMintResponse, Error> {
-        let mut url = join_url(mint_url, "mint")?;
-        url.query_pairs_mut().append_pair("hash", hash);
+    ) -> Result<MintBolt11Response, Error> {
+        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::<Value>()?;
 
-        let response: Result<PostMintResponse, serde_json::Error> =
+        let response: Result<MintBolt11Response, serde_json::Error> =
             serde_json::from_value(res.clone());
 
         match response {

+ 3 - 3
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<PostMintResponse, Error>;
+    ) -> Result<MintBolt11Response, Error>;
 
     async fn post_melt(
         &self,

+ 4 - 4
crates/cashu-sdk/src/mint.rs

@@ -105,16 +105,16 @@ impl Mint {
 
     pub fn process_mint_request(
         &mut self,
-        mint_request: nut04::MintRequest,
-    ) -> Result<nut04::PostMintResponse, Error> {
+        mint_request: nut04::MintBolt11Request,
+    ) -> Result<nut04::MintBolt11Response, Error> {
         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,
         })
     }
 

+ 5 - 5
crates/cashu-sdk/src/wallet.rs

@@ -94,31 +94,31 @@ impl<C: Client> Wallet<C> {
     pub async fn mint_token(
         &self,
         amount: Amount,
-        hash: &str,
+        quote: &str,
         memo: Option<String>,
         unit: Option<CurrencyUnit>,
     ) -> Result<Token, Error> {
-        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<Proofs, Error> {
+    pub async fn mint(&self, amount: Amount, quote: &str) -> Result<Proofs, Error> {
         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,