From ab6dcd0a69dd3962d7c2b832601709f0703993e0 Mon Sep 17 00:00:00 2001 From: "kody.low" Date: Fri, 19 Apr 2024 12:24:54 -0700 Subject: [PATCH 1/3] feat: objects for multiple input requests --- wrappers/fedimint-ts/bun.lockb | Bin 0 -> 56048 bytes wrappers/fedimint-ts/src/FedimintClient.ts | 62 +++------------------ wrappers/fedimint-ts/tests/test.ts | 56 +++++++++++++++---- 3 files changed, 51 insertions(+), 67 deletions(-) create mode 100755 wrappers/fedimint-ts/bun.lockb diff --git a/wrappers/fedimint-ts/bun.lockb b/wrappers/fedimint-ts/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..a33ea3857722af7fbbe8ae765924b6ff1fa13b42 GIT binary patch literal 56048 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 J(*OVd`#-U7U-$q3 literal 0 HcmV?d00001 diff --git a/wrappers/fedimint-ts/src/FedimintClient.ts b/wrappers/fedimint-ts/src/FedimintClient.ts index ec82560..43ea1ec 100644 --- a/wrappers/fedimint-ts/src/FedimintClient.ts +++ b/wrappers/fedimint-ts/src/FedimintClient.ts @@ -392,18 +392,10 @@ export class FedimintClient { * Creates a lightning invoice to receive payment via gateway */ createInvoice: async ( - amountMsat: number, - description: string, - expiryTime?: number, + request: LightningInvoiceRequest, gatewayId?: string, federationId?: string ): Promise => { - const request: LightningInvoiceRequest = { - amountMsat, - description, - expiryTime, - }; - return await this.postWithGatewayIdAndFederationId( "/ln/invoice", request, @@ -425,22 +417,10 @@ export class FedimintClient { * @param federationId - The ID of the federation to use for the invoice, if not provided will use the active federation ID */ createInvoiceForPubkeyTweak: async ( - pubkey: string, - tweak: number, - amountMsat: number, - description: string, - expiryTime?: number, + request: LightningInvoiceExternalPubkeyTweakedRequest, gatewayId?: string, federationId?: string ): Promise => { - const request: LightningInvoiceExternalPubkeyTweakedRequest = { - externalPubkey: pubkey, - tweak, - amountMsat, - description, - expiryTime, - }; - return await this.postWithGatewayIdAndFederationId( "/ln/invoice-external-pubkey-tweaked", request, @@ -457,15 +437,9 @@ export class FedimintClient { * @param federationId - The ID of the federation to claim the contracts in. Contracts are on specific federations so this is required. */ claimPubkeyTweakReceives: async ( - privateKey: string, - tweaks: number[], + request: LightningClaimPubkeyTweakReceivesRequest, federationId: string ): Promise => { - const request: LightningClaimPubkeyTweakReceivesRequest = { - privateKey, - tweaks, - }; - return await this.postWithFederationId( "/ln/claim-external-receive-tweaked", request, @@ -495,18 +469,10 @@ export class FedimintClient { * Pays a lightning invoice or Lightningurl via a gateway */ pay: async ( - paymentInfo: string, - amountMsat?: number, - LightningurlComment?: string, + request: LightningPayRequest, gatewayId?: string, federationId?: string ): Promise => { - const request: LightningPayRequest = { - paymentInfo, - amountMsat, - LightningurlComment, - }; - return await this.postWithGatewayIdAndFederationId( "/ln/pay", request, @@ -529,9 +495,7 @@ export class FedimintClient { /** * Decodes hex encoded binary ecash notes to json */ - decodeNotes: async ( - notes: string - ): Promise => { + decodeNotes: async (notes: string): Promise => { const request: MintDecodeNotesRequest = { notes, }; @@ -587,19 +551,9 @@ export class FedimintClient { * @param federationId - The ID of the federation to spend the note in, if not provided will use the active federation ID */ spend: async ( - amountMsat: number, - allowOverpay: boolean, - timeout: number, - includeInvite: boolean, + request: MintSpendRequest, federationId?: string ): Promise => { - const request: MintSpendRequest = { - amountMsat, - allowOverpay, - timeout, - includeInvite, - }; - return await this.postWithFederationId( "/mint/spend", request, @@ -637,9 +591,7 @@ export class FedimintClient { * Combines ecash notes into a single note string. * @param notesVec - The notes to combine */ - combine: async ( - notesVec: string[] - ): Promise => { + combine: async (notesVec: string[]): Promise => { const request: MintCombineRequest = { notesVec }; return await this.post("/mint/combine", request); diff --git a/wrappers/fedimint-ts/tests/test.ts b/wrappers/fedimint-ts/tests/test.ts index 26a5e5a..7754253 100644 --- a/wrappers/fedimint-ts/tests/test.ts +++ b/wrappers/fedimint-ts/tests/test.ts @@ -1,7 +1,14 @@ import dotenv from "dotenv"; import { randomBytes } from "crypto"; import * as secp256k1 from "secp256k1"; -import { FedimintClientBuilder } from "../src"; +import { + FedimintClientBuilder, + LightningClaimPubkeyReceiveTweakedRequest, + LightningInvoiceExternalPubkeyTweakedRequest, + LightningInvoiceRequest, + LightningPayRequest, + MintSpendRequest, +} from "../src"; dotenv.config(); @@ -98,9 +105,13 @@ async function main() { logInputAndOutput({}, data); // `/v2/ln/invoice` logMethod("/v2/ln/invoice"); + let lightningInvoiceRequest: LightningInvoiceRequest = { + amountMsat: 10000, + description: "test", + expiryTime: 3600, + }; let { operationId, invoice } = await fedimintClient.lightning.createInvoice( - 10000, - "test" + lightningInvoiceRequest ); logInputAndOutput( { amountMsat: 10000, description: "test" }, @@ -108,7 +119,10 @@ async function main() { ); // `/v2/ln/pay` logMethod("/v2/ln/pay"); - let payResponse = await fedimintClient.lightning.pay(invoice); + let lightningPayRequest: LightningPayRequest = { + paymentInfo: invoice, + }; + let payResponse = await fedimintClient.lightning.pay(lightningPayRequest); logInputAndOutput({ paymentInfo: invoice }, payResponse); // `/v2/ln/await-invoice` logMethod("/v2/ln/await-invoice"); @@ -116,11 +130,16 @@ async function main() { logInputAndOutput({ operationId }, data); // `/v1/ln/invoice-external-pubkey-tweaked` logMethod("/v1/ln/invoice-external-pubkey-tweaked"); + let lightningInvoiceExternalPubkeyTweakedRequest: LightningInvoiceExternalPubkeyTweakedRequest = + { + externalPubkey: keyPair.publicKey, + tweak: 1, + amountMsat: 1000, + description: "test", + expiryTime: 3600, + }; data = await fedimintClient.lightning.createInvoiceForPubkeyTweak( - keyPair.publicKey, - 1, - 1000, - "test" + lightningInvoiceExternalPubkeyTweakedRequest ); logInputAndOutput( { @@ -132,12 +151,19 @@ async function main() { data ); // pay the invoice - payResponse = await fedimintClient.lightning.pay(data.invoice); + let payRequest: LightningPayRequest = { + paymentInfo: data.invoice, + }; + payResponse = await fedimintClient.lightning.pay(payRequest); // `/v1/ln/claim-external-pubkey-tweaked` logMethod("/v1/ln/claim-external-pubkey-tweaked"); + let lightningClaimPubkeyTweakedRequest: LightningClaimPubkeyReceiveTweakedRequest = + { + privateKey: keyPair.privateKey, + tweaks: [1], + }; data = await fedimintClient.lightning.claimPubkeyTweakReceives( - keyPair.privateKey, - [1], + lightningClaimPubkeyTweakedRequest, fedimintClient.getActiveFederationId() ); logInputAndOutput({ privateKey: keyPair.privateKey, tweaks: [1] }, data); @@ -145,7 +171,13 @@ async function main() { // MINT METHODS // `/v2/mint/spend` logMethod("/v2/mint/spend"); - let mintData = await fedimintClient.mint.spend(3000, true, 1000, false); + let spendRequest: MintSpendRequest = { + amountMsat: 3000, + allowOverpay: true, + timeout: 1000, + includeInvite: true, + }; + let mintData = await fedimintClient.mint.spend(spendRequest); logInputAndOutput( { amountMsat: 3000, allowOverpay: true, timeout: 1000 }, data From bbc3f8f8ed21025bca3127d55a9e186c6c3fa652 Mon Sep 17 00:00:00 2001 From: "kody.low" Date: Fri, 19 Apr 2024 13:23:02 -0700 Subject: [PATCH 2/3] chore: bump multimint --- Cargo.lock | 2 +- multimint/Cargo.toml | 2 +- multimint/src/lib.rs | 14 ++++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 33f3845..8cd1c6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2411,7 +2411,7 @@ dependencies = [ [[package]] name = "multimint" -version = "0.3.1" +version = "0.3.2" dependencies = [ "anyhow", "fedimint-client", diff --git a/multimint/Cargo.toml b/multimint/Cargo.toml index ff94234..4dc8120 100644 --- a/multimint/Cargo.toml +++ b/multimint/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "multimint" -version = "0.3.1" +version = "0.3.2" edition = "2021" description = "A library for managing fedimint clients across multiple federations" license = "MIT" diff --git a/multimint/src/lib.rs b/multimint/src/lib.rs index 832df4a..d61442b 100644 --- a/multimint/src/lib.rs +++ b/multimint/src/lib.rs @@ -72,6 +72,7 @@ use fedimint_core::api::InviteCode; use fedimint_core::config::{FederationId, FederationIdPrefix, JsonClientConfig}; use fedimint_core::db::Database; use fedimint_core::Amount; +use fedimint_ln_client::LightningClientModule; use fedimint_mint_client::MintClientModule; use fedimint_wallet_client::WalletClientModule; use tokio::sync::Mutex; @@ -362,4 +363,17 @@ impl MultiMint { Ok(info_map) } + + /// Update the gateway caches for all the lightning modules in the + /// multimint. + pub async fn update_gateway_caches(&self, apply_meta: bool) -> Result<()> { + let clients = self.clients.lock().await; + + for (_, client) in clients.iter() { + let lightning_client = client.get_first_module::(); + lightning_client.update_gateway_cache(apply_meta).await?; + } + + Ok(()) + } } From cf20508498fded89e8d0ced740427ea1d4cb3afe Mon Sep 17 00:00:00 2001 From: "kody.low" Date: Fri, 19 Apr 2024 13:31:06 -0700 Subject: [PATCH 3/3] chore: release 0.3.2 multimint bump --- Cargo.lock | 10 +++++----- fedimint-clientd/Cargo.toml | 9 ++++++--- fedimint-clientd/src/state.rs | 1 + 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8cd1c6a..f47145e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1002,7 +1002,7 @@ dependencies = [ [[package]] name = "fedimint-clientd" -version = "0.3.1" +version = "0.3.2" dependencies = [ "anyhow", "async-utility", @@ -1026,7 +1026,7 @@ dependencies = [ "lazy_static", "lightning-invoice", "lnurl-rs", - "multimint 0.3.0", + "multimint 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.12.3", "serde", "serde_json", @@ -2389,9 +2389,7 @@ dependencies = [ [[package]] name = "multimint" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a926e1ecf3b97aa2bf98d30de76032c7dcfa12b04ba957c985bd7a11c612f0be" +version = "0.3.2" dependencies = [ "anyhow", "fedimint-client", @@ -2412,6 +2410,8 @@ dependencies = [ [[package]] name = "multimint" version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e09006ccf96f467878dd322f159a5597b53455e6693992b75b18fcedcf53913" dependencies = [ "anyhow", "fedimint-client", diff --git a/fedimint-clientd/Cargo.toml b/fedimint-clientd/Cargo.toml index f78e871..996be41 100644 --- a/fedimint-clientd/Cargo.toml +++ b/fedimint-clientd/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fedimint-clientd" -version = "0.3.1" +version = "0.3.2" edition = "2021" description = "A fedimint client daemon for server side applications to hold, use, and manage Bitcoin" repository = "https://github.com/fedimint/fedimint-clientd" @@ -31,13 +31,16 @@ tower-http = { version = "0.5.2", features = ["cors", "auth", "trace"] } bitcoin = "0.29.2" itertools = "0.12.0" lnurl-rs = { version = "0.5.0", features = ["async"], default-features = false } -reqwest = { version = "0.12.3", features = ["json", "rustls-tls"], default-features = false } +reqwest = { version = "0.12.3", features = [ + "json", + "rustls-tls", +], default-features = false } lightning-invoice = { version = "0.26.0", features = ["serde"] } bitcoin_hashes = "0.13.0" time = { version = "0.3.25", features = ["formatting"] } chrono = "0.4.31" futures-util = "0.3.30" clap = { version = "3", features = ["derive", "env"] } -multimint = { version = "0.3.0" } +multimint = { version = "0.3.2" } # multimint = { path = "../multimint" } axum-otel-metrics = "0.8.0" diff --git a/fedimint-clientd/src/state.rs b/fedimint-clientd/src/state.rs index 31a24aa..b9f91bb 100644 --- a/fedimint-clientd/src/state.rs +++ b/fedimint-clientd/src/state.rs @@ -16,6 +16,7 @@ pub struct AppState { impl AppState { pub async fn new(fm_db_path: PathBuf) -> Result { let clients = MultiMint::new(fm_db_path).await?; + clients.update_gateway_caches(true).await?; Ok(Self { multimint: clients, cashu_mint: None,