mirror of
https://github.com/aljazceru/cdk.git
synced 2026-02-05 05:06:14 +01:00
refactor: wallet for nut04 v1
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user