From: Elias Rohrer Date: Fri, 8 Mar 2024 13:32:39 +0000 (+0100) Subject: Generate random `PaymentId` for outbound offers X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=4a1a645819fa18609ccaf9f6a9c4ddfd55519dd5;p=ldk-sample Generate random `PaymentId` for outbound offers Previously, we'd deterministically derive the `offer_hash` as a `PaymentId` for outbound BOLT 12 payments. However, as offers may be paid multiple times, this could result in collisions in our `outbound_payments` store. Here, we therefore use random `PaymentId`s to avoid collisions, even if offers are paid multiple times. --- diff --git a/src/cli.rs b/src/cli.rs index a70d772..b9fbf77 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -175,8 +175,8 @@ pub(crate) fn poll_for_user_input( } if let Ok(offer) = Offer::from_str(invoice_str.unwrap()) { - let offer_hash = Sha256::hash(invoice_str.unwrap().as_bytes()); - let payment_id = PaymentId(*offer_hash.as_ref()); + let random_bytes = keys_manager.get_secure_random_bytes(); + let payment_id = PaymentId(random_bytes); let amt_msat = match (offer.amount(), user_provided_amt) { (Some(offer::Amount::Bitcoin { amount_msats }), _) => *amount_msats,