refactor: nut04 and nut05 (#749)

This commit is contained in:
thesimplekid
2025-05-19 09:49:11 +01:00
committed by GitHub
parent fc2b0b3ea2
commit b63dc1045d
40 changed files with 1133 additions and 603 deletions

View File

@@ -14,9 +14,9 @@ use cdk::mint::{MintBuilder, MintMeltLimits};
use cdk::nuts::nut00::ProofsMethods;
use cdk::nuts::{
CheckStateRequest, CheckStateResponse, CurrencyUnit, Id, KeySet, KeysetResponse,
MeltBolt11Request, MeltQuoteBolt11Request, MeltQuoteBolt11Response, MintBolt11Request,
MintBolt11Response, MintInfo, MintQuoteBolt11Request, MintQuoteBolt11Response, PaymentMethod,
RestoreRequest, RestoreResponse, SwapRequest, SwapResponse,
MeltQuoteBolt11Request, MeltQuoteBolt11Response, MeltRequest, MintInfo, MintQuoteBolt11Request,
MintQuoteBolt11Response, MintRequest, MintResponse, PaymentMethod, RestoreRequest,
RestoreResponse, SwapRequest, SwapResponse,
};
use cdk::types::{FeeReserve, QuoteTTL};
use cdk::util::unix_time;
@@ -91,10 +91,7 @@ impl MintConnector for DirectMintConnection {
.map(Into::into)
}
async fn post_mint(
&self,
request: MintBolt11Request<String>,
) -> Result<MintBolt11Response, Error> {
async fn post_mint(&self, request: MintRequest<String>) -> Result<MintResponse, Error> {
let request_uuid = request.try_into().unwrap();
self.mint.process_mint_request(request_uuid).await
}
@@ -122,7 +119,7 @@ impl MintConnector for DirectMintConnection {
async fn post_melt(
&self,
request: MeltBolt11Request<String>,
request: MeltRequest<String>,
) -> Result<MeltQuoteBolt11Response<String>, Error> {
let request_uuid = request.try_into().unwrap();
self.mint.melt_bolt11(&request_uuid).await.map(Into::into)

View File

@@ -8,9 +8,9 @@ use cdk::amount::{Amount, SplitTarget};
use cdk::mint_url::MintUrl;
use cdk::nuts::nut00::ProofsMethods;
use cdk::nuts::{
AuthProof, AuthToken, BlindAuthToken, CheckStateRequest, CurrencyUnit, MeltBolt11Request,
MeltQuoteBolt11Request, MeltQuoteState, MintBolt11Request, MintQuoteBolt11Request,
RestoreRequest, State, SwapRequest,
AuthProof, AuthToken, BlindAuthToken, CheckStateRequest, CurrencyUnit, MeltQuoteBolt11Request,
MeltQuoteState, MeltRequest, MintQuoteBolt11Request, MintRequest, RestoreRequest, State,
SwapRequest,
};
use cdk::wallet::{AuthHttpClient, AuthMintConnector, HttpClient, MintConnector, WalletBuilder};
use cdk::{Error, OidcClient};
@@ -109,7 +109,7 @@ async fn test_mint_without_auth() {
}
{
let request = MintBolt11Request {
let request = MintRequest {
quote: "123e4567-e89b-12d3-a456-426614174000".to_string(),
outputs: vec![],
signature: None,
@@ -207,7 +207,7 @@ async fn test_melt_without_auth() {
// Test melt
{
let request = MeltBolt11Request::new(
let request = MeltRequest::new(
"123e4567-e89b-12d3-a456-426614174000".to_string(),
vec![],
None,

View File

@@ -5,8 +5,8 @@ use cashu::Amount;
use cdk::amount::SplitTarget;
use cdk::nuts::nut00::ProofsMethods;
use cdk::nuts::{
CurrencyUnit, MeltBolt11Request, MeltQuoteState, MintBolt11Request, PreMintSecrets, Proofs,
SecretKey, State, SwapRequest,
CurrencyUnit, MeltQuoteState, MeltRequest, MintRequest, PreMintSecrets, Proofs, SecretKey,
State, SwapRequest,
};
use cdk::wallet::types::TransactionDirection;
use cdk::wallet::{HttpClient, MintConnector, Wallet};
@@ -388,7 +388,7 @@ async fn test_fake_melt_change_in_quote() {
let client = HttpClient::new(MINT_URL.parse().unwrap(), None);
let melt_request = MeltBolt11Request::new(
let melt_request = MeltRequest::new(
melt_quote.id.clone(),
proofs.clone(),
Some(premint_secrets.blinded_messages()),
@@ -494,7 +494,7 @@ async fn test_fake_mint_without_witness() {
let premint_secrets =
PreMintSecrets::random(active_keyset_id, 100.into(), &SplitTarget::default()).unwrap();
let request = MintBolt11Request {
let request = MintRequest {
quote: mint_quote.id,
outputs: premint_secrets.blinded_messages(),
signature: None,
@@ -534,7 +534,7 @@ async fn test_fake_mint_with_wrong_witness() {
let premint_secrets =
PreMintSecrets::random(active_keyset_id, 100.into(), &SplitTarget::default()).unwrap();
let mut request = MintBolt11Request {
let mut request = MintRequest {
quote: mint_quote.id,
outputs: premint_secrets.blinded_messages(),
signature: None,
@@ -585,7 +585,7 @@ async fn test_fake_mint_inflated() {
.unwrap()
.expect("there is a quote");
let mut mint_request = MintBolt11Request {
let mut mint_request = MintRequest {
quote: mint_quote.id,
outputs: pre_mint.blinded_messages(),
signature: None,
@@ -662,7 +662,7 @@ async fn test_fake_mint_multiple_units() {
sat_outputs.append(&mut usd_outputs);
let mut mint_request = MintBolt11Request {
let mut mint_request = MintRequest {
quote: mint_quote.id,
outputs: sat_outputs,
signature: None,
@@ -859,7 +859,7 @@ async fn test_fake_mint_multiple_unit_melt() {
let invoice = create_fake_invoice((input_amount - 1) * 1000, "".to_string());
let melt_quote = wallet.melt_quote(invoice.to_string(), None).await.unwrap();
let melt_request = MeltBolt11Request::new(melt_quote.id, inputs, None);
let melt_request = MeltRequest::new(melt_quote.id, inputs, None);
let http_client = HttpClient::new(MINT_URL.parse().unwrap(), None);
let response = http_client.post_melt(melt_request.clone()).await;
@@ -901,7 +901,7 @@ async fn test_fake_mint_multiple_unit_melt() {
usd_outputs.append(&mut sat_outputs);
let quote = wallet.melt_quote(invoice.to_string(), None).await.unwrap();
let melt_request = MeltBolt11Request::new(quote.id, inputs, Some(usd_outputs));
let melt_request = MeltRequest::new(quote.id, inputs, Some(usd_outputs));
let http_client = HttpClient::new(MINT_URL.parse().unwrap(), None);
@@ -1148,7 +1148,7 @@ async fn test_fake_mint_melt_spend_after_fail() {
let invoice = create_fake_invoice((input_amount - 1) * 1000, "".to_string());
let melt_quote = wallet.melt_quote(invoice.to_string(), None).await.unwrap();
let melt_request = MeltBolt11Request::new(melt_quote.id, proofs, None);
let melt_request = MeltRequest::new(melt_quote.id, proofs, None);
let http_client = HttpClient::new(MINT_URL.parse().unwrap(), None);
let response = http_client.post_melt(melt_request.clone()).await;
@@ -1274,7 +1274,7 @@ async fn test_fake_mint_duplicate_proofs_melt() {
let melt_quote = wallet.melt_quote(invoice.to_string(), None).await.unwrap();
let melt_request = MeltBolt11Request::new(melt_quote.id, inputs, None);
let melt_request = MeltRequest::new(melt_quote.id, inputs, None);
let http_client = HttpClient::new(MINT_URL.parse().unwrap(), None);
let response = http_client.post_melt(melt_request.clone()).await;

View File

@@ -16,7 +16,7 @@ use std::time::Duration;
use std::{char, env};
use bip39::Mnemonic;
use cashu::{MeltBolt11Request, PreMintSecrets};
use cashu::{MeltRequest, PreMintSecrets};
use cdk::amount::{Amount, SplitTarget};
use cdk::nuts::nut00::ProofsMethods;
use cdk::nuts::{CurrencyUnit, MeltQuoteState, NotificationPayload, State};
@@ -358,7 +358,7 @@ async fn test_fake_melt_change_in_quote() {
let client = HttpClient::new(get_mint_url_from_env().parse().unwrap(), None);
let melt_request = MeltBolt11Request::new(
let melt_request = MeltRequest::new(
melt_quote.id.clone(),
proofs.clone(),
Some(premint_secrets.blinded_messages()),

View File

@@ -13,8 +13,8 @@ use cashu::amount::SplitTarget;
use cashu::dhke::construct_proofs;
use cashu::mint_url::MintUrl;
use cashu::{
CurrencyUnit, Id, MeltBolt11Request, NotificationPayload, PreMintSecrets, ProofState,
SecretKey, SpendingConditions, State, SwapRequest,
CurrencyUnit, Id, MeltRequest, NotificationPayload, PreMintSecrets, ProofState, SecretKey,
SpendingConditions, State, SwapRequest,
};
use cdk::mint::Mint;
use cdk::nuts::nut00::ProofsMethods;
@@ -855,7 +855,7 @@ async fn test_concurrent_double_spend_melt() {
let mint_clone2 = mint_bob.clone();
let mint_clone3 = mint_bob.clone();
let melt_request = MeltBolt11Request::new(quote_id.parse().unwrap(), proofs.clone(), None);
let melt_request = MeltRequest::new(quote_id.parse().unwrap(), proofs.clone(), None);
let melt_request2 = melt_request.clone();
let melt_request3 = melt_request.clone();

View File

@@ -6,7 +6,7 @@ use bip39::Mnemonic;
use cashu::ProofsMethods;
use cdk::amount::{Amount, SplitTarget};
use cdk::nuts::{
CurrencyUnit, MeltOptions, MeltQuoteState, MintBolt11Request, MintQuoteState, Mpp,
CurrencyUnit, MeltOptions, MeltQuoteState, MintQuoteState, MintRequest, Mpp,
NotificationPayload, PreMintSecrets,
};
use cdk::wallet::{HttpClient, MintConnector, Wallet, WalletSubscription};
@@ -313,7 +313,7 @@ async fn test_cached_mint() {
let premint_secrets =
PreMintSecrets::random(active_keyset_id, 100.into(), &SplitTarget::default()).unwrap();
let mut request = MintBolt11Request {
let mut request = MintRequest {
quote: quote.id,
outputs: premint_secrets.blinded_messages(),
signature: None,