diff --git a/Cargo.lock b/Cargo.lock index b53b741..af8b8d5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -243,9 +243,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.7" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" [[package]] name = "base64ct" @@ -367,6 +367,7 @@ dependencies = [ "bitcoin 0.30.2", "bitcoin_hashes 0.12.0", "cdk", + "cdk-redb", "chrono", "clap", "cln-rpc", @@ -389,25 +390,24 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" [[package]] name = "cdk" version = "0.1.0" -source = "git+https://github.com/thesimplekid/cashu-crab?rev=664776f#664776f1224840c2f7ab944348e6bf534ff993f2" +source = "git+https://github.com/cashubtc/cdk?rev=efd9b39#efd9b397225bf2c9f7d29aef859a4eb85a3e561e" dependencies = [ "async-trait", - "base64 0.21.7", + "base64 0.22.0", "bip39", "bitcoin 0.30.2", "getrandom", "http 1.1.0", "instant", - "lightning-invoice 0.29.0", + "lightning-invoice 0.31.0", "once_cell", - "redb", "serde", "serde_json", "serde_with", @@ -418,6 +418,21 @@ dependencies = [ "uuid", ] +[[package]] +name = "cdk-redb" +version = "0.1.0" +source = "git+https://github.com/cashubtc/cdk?rev=efd9b39#efd9b397225bf2c9f7d29aef859a4eb85a3e561e" +dependencies = [ + "async-trait", + "cdk", + "redb", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -426,9 +441,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -843,9 +858,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -1023,7 +1038,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] @@ -1093,9 +1108,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libredox" @@ -1118,9 +1133,9 @@ dependencies = [ [[package]] name = "lightning" -version = "0.0.121" +version = "0.0.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0c1f811ae288f86c6767055c55b5f7a721ca1e61bf1897a9ae2ec663e8aba1" +checksum = "5fd92d4aa159374be430c7590e169b4a6c0fb79018f5bc4ea1bffde536384db3" dependencies = [ "bitcoin 0.30.2", "hex-conservative", @@ -1143,14 +1158,13 @@ dependencies = [ [[package]] name = "lightning-invoice" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b186aca4a605d4db3b85979922be287b9ebd5dedd8132963bb9dbeb8f7d2a04" +checksum = "26d07d01cf197bf2184b929b7dc94aa70d935aac6df896c256a3a9475b7e9d40" dependencies = [ "bech32", "bitcoin 0.30.2", - "lightning 0.0.121", - "num-traits", + "lightning 0.0.123", "secp256k1 0.27.0", "serde", ] @@ -1459,9 +1473,9 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -1507,9 +1521,9 @@ dependencies = [ [[package]] name = "redb" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1100a056c5dcdd4e5513d5333385223b26ef1bf92f31eb38f407e8c20549256" +checksum = "ed7508e692a49b6b2290b56540384ccae9b1fb4d77065640b165835b56ffe3bb" dependencies = [ "libc", ] @@ -1606,18 +1620,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", @@ -1626,9 +1640,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", @@ -1659,11 +1673,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee80b0e361bbf88fd2f6e242ccd19cfda072cb0faa6ae694ecee08199938569a" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" dependencies = [ - "base64 0.21.7", + "base64 0.22.0", "chrono", "hex", "indexmap 1.9.3", @@ -1677,9 +1691,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.7.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6561dc161a9224638a31d876ccdfefbc1df91d3f3a8342eddb35f055d48c7655" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" dependencies = [ "darling", "proc-macro2", @@ -1724,9 +1738,9 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1752,9 +1766,9 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "2.0.58" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -1769,18 +1783,18 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index b37e843..54f5250 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,8 +33,11 @@ time = "0.3.22" chrono = "0.4.26" clap = { version = "4.3.14", features = ["env", "default", "derive"]} anyhow = "1.0.71" -cdk = { git = "https://github.com/thesimplekid/cashu-crab", rev = "664776f", default-features = false, features = ["mint", "all-nuts", "redb"] } -# cdk = { path = "../cashu-crab/nut09/crates/cashu-sdk", default-features = false, features = ["mint", "all-nuts", "redb"] } +cdk = { git = "https://github.com/cashubtc/cdk", rev = "efd9b39", default-features = false, features = ["mint"] } +cdk-redb = { git = "https://github.com/cashubtc/cdk", rev = "efd9b39", default-features = false, features = ["mint"] } +# cdk = { path = "../../cdk/nut14/crates/cdk", default-features = false, features = ["mint", "all-nuts"] } +# cdk-redb = { path = "../../cdk/nut14/crates/cdk-redb" } + bitcoin = { version = "0.30.0", features = ["no-std"] } serde = "1.0.164" serde_json = "1.0.96" diff --git a/src/error.rs b/src/error.rs index d36b9fa..a006936 100644 --- a/src/error.rs +++ b/src/error.rs @@ -55,7 +55,7 @@ impl IntoResponse for Error { } } -pub fn into_response(error: cdk::mint::Error) -> Response { +pub fn into_response(error: cdk::mint::error::Error) -> Response { ( StatusCode::INTERNAL_SERVER_ERROR, Json::(error.into()), diff --git a/src/main.rs b/src/main.rs index fc8ef5b..656ae8e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,3 @@ -use std::collections::HashSet; use std::fs::{self, File}; use std::io::Write; use std::net::{Ipv4Addr, SocketAddr}; @@ -17,13 +16,15 @@ use axum::routing::{get, post}; use axum::Router; use bip39::Mnemonic; use cdk::amount::Amount; -use cdk::mint::{LocalStore, Mint, RedbLocalStore}; +use cdk::cdk_database::MintDatabase; +use cdk::mint::Mint; use cdk::nuts::nut02::Id; use cdk::nuts::{ CheckStateRequest, CheckStateResponse, MeltBolt11Request, MeltBolt11Response, MintBolt11Request, MintBolt11Response, SwapRequest, SwapResponse, *, }; use cdk::types::MintQuote; +use cdk_redb::MintRedbDatabase; use clap::Parser; use error::into_response; use futures::StreamExt; @@ -61,12 +62,14 @@ async fn main() -> anyhow::Result<()> { let settings = config::Settings::new(&Some(config_file_arg)); + let mint_url = settings.info.url.clone(); + let db_path = match args.db { Some(path) => PathBuf::from_str(&path)?, None => settings.info.clone().db_path, }; - let localstore = RedbLocalStore::new(db_path.to_str().unwrap())?; + let localstore = MintRedbDatabase::new(db_path.to_str().unwrap())?; let mint_info = MintInfo::default(); //settings.mint_info.clone(); localstore.set_mint_info(&mint_info).await?; @@ -74,9 +77,8 @@ async fn main() -> anyhow::Result<()> { let mnemonic = Mnemonic::from_str(&settings.info.mnemonic)?; let mint = Mint::new( + &mnemonic.to_seed_normalized(""), Arc::new(localstore), - mnemonic, - HashSet::new(), Amount::ZERO, 0.0, ) @@ -145,6 +147,7 @@ async fn main() -> anyhow::Result<()> { let state = MintState { ln, mint: Arc::new(Mutex::new(mint)), + mint_url, }; let mint_service = Router::new() @@ -194,6 +197,7 @@ async fn handle_paid_invoice(mint: Arc, request: &str) -> anyhow::Result<( if quote.request.eq(request) { let q = MintQuote { id: quote.id, + mint_url: quote.mint_url, amount: quote.amount, unit: quote.unit, request: quote.request, @@ -212,6 +216,7 @@ async fn handle_paid_invoice(mint: Arc, request: &str) -> anyhow::Result<( struct MintState { ln: Ln, mint: Arc>, + mint_url: String, } async fn get_keys(State(state): State) -> Result, Response> { @@ -273,6 +278,7 @@ async fn get_mint_bolt11_quote( .lock() .await .new_mint_quote( + state.mint_url.into(), invoice.to_string(), payload.unit, payload.amount,