diff --git a/Cargo.toml b/Cargo.toml index e98c21ab4..2e224720d 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,17 +39,17 @@ default = [] #lightning-liquidity = { version = "0.2.0", features = ["std"] } #lightning-macros = { version = "0.2.0" } -lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["std"] } -lightning-types = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a" } -lightning-invoice = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["std"] } -lightning-net-tokio = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a" } -lightning-persister = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["tokio"] } -lightning-background-processor = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a" } -lightning-rapid-gossip-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a" } -lightning-block-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["rest-client", "rpc-client", "tokio"] } -lightning-transaction-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["esplora-async-https", "time", "electrum-rustls-ring"] } -lightning-liquidity = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["std"] } -lightning-macros = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a" } +lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["std"] } +lightning-types = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245" } +lightning-invoice = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["std"] } +lightning-net-tokio = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245" } +lightning-persister = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["tokio"] } +lightning-background-processor = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245" } +lightning-rapid-gossip-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245" } +lightning-block-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["rest-client", "rpc-client", "tokio"] } +lightning-transaction-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["esplora-async-https", "time", "electrum-rustls-ring"] } +lightning-liquidity = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["std"] } +lightning-macros = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245" } bdk_chain = { version = "0.23.0", default-features = false, features = ["std"] } bdk_esplora = { version = "0.22.0", default-features = false, features = ["async-https-rustls", "tokio"]} @@ -78,13 +78,13 @@ log = { version = "0.4.22", default-features = false, features = ["std"]} vss-client = { package = "vss-client-ng", version = "0.5" } prost = { version = "0.11.6", default-features = false} #bitcoin-payment-instructions = { version = "0.6" } -bitcoin-payment-instructions = { git = "https://github.com/jkczyz/bitcoin-payment-instructions", rev = "8fbb1997917c9a5687f8e532cab9a453af3c3dc1" } +bitcoin-payment-instructions = { git = "https://github.com/jkczyz/bitcoin-payment-instructions", rev = "869fd348c3ca0c78f439d2f31181f4d798c6b20e" } [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["winbase"] } [dev-dependencies] -lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "2d2151a4e40734b871289e8bb0fa13466c0ea60a", features = ["std", "_test_utils"] } +lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "98501d6e5134228c41460dcf786ab53337e41245", features = ["std", "_test_utils"] } rand = { version = "0.9.2", default-features = false, features = ["std", "thread_rng", "os_rng"] } proptest = "1.0.0" regex = "1.5.6" diff --git a/src/event.rs b/src/event.rs index 5f02f9f87..a4dcc8cf3 100644 --- a/src/event.rs +++ b/src/event.rs @@ -16,7 +16,8 @@ use bitcoin::secp256k1::PublicKey; use bitcoin::{Amount, OutPoint}; use lightning::events::bump_transaction::BumpTransactionEvent; use lightning::events::{ - ClosureReason, Event as LdkEvent, PaymentFailureReason, PaymentPurpose, ReplayEvent, + ClosureReason, Event as LdkEvent, FundingInfo, PaymentFailureReason, PaymentPurpose, + ReplayEvent, }; use lightning::impl_writeable_tlv_based_enum; use lightning::ln::channelmanager::PaymentId; @@ -1516,7 +1517,26 @@ where }, }; }, - LdkEvent::DiscardFunding { .. } => {}, + LdkEvent::DiscardFunding { channel_id, funding_info } => { + if let FundingInfo::Contribution { inputs: _, outputs } = funding_info { + log_info!( + self.logger, + "Reclaiming unused addresses from channel {} funding", + channel_id, + ); + + let tx = bitcoin::Transaction { + version: bitcoin::transaction::Version::TWO, + lock_time: bitcoin::absolute::LockTime::ZERO, + input: vec![], + output: outputs, + }; + if let Err(e) = self.wallet.cancel_tx(&tx) { + log_error!(self.logger, "Failed reclaiming unused addresses: {}", e); + return Err(ReplayEvent()); + } + } + }, LdkEvent::HTLCIntercepted { requested_next_hop_scid, intercept_id, @@ -1746,7 +1766,6 @@ where user_channel_id, counterparty_node_id, abandoned_funding_txo, - contributed_outputs, .. } => { if let Some(funding_txo) = abandoned_funding_txo { @@ -1766,17 +1785,6 @@ where ); } - let tx = bitcoin::Transaction { - version: bitcoin::transaction::Version::TWO, - lock_time: bitcoin::absolute::LockTime::ZERO, - input: vec![], - output: contributed_outputs, - }; - if let Err(e) = self.wallet.cancel_tx(&tx) { - log_error!(self.logger, "Failed reclaiming unused addresses: {}", e); - return Err(ReplayEvent()); - } - let event = Event::SpliceFailed { channel_id, user_channel_id: UserChannelId(user_channel_id), diff --git a/src/payment/spontaneous.rs b/src/payment/spontaneous.rs index 84f6c6412..536501e75 100644 --- a/src/payment/spontaneous.rs +++ b/src/payment/spontaneous.rs @@ -128,7 +128,7 @@ impl SpontaneousPayment { *max_channel_saturation_power_of_half; } - let mut recipient_fields = RecipientOnionFields::spontaneous_empty(); + let mut recipient_fields = RecipientOnionFields::spontaneous_empty(amount_msat); if let Some(tlvs) = custom_tlvs { let tlvs_vec = tlvs.into_iter().map(|tlv| (tlv.type_num, tlv.value)).collect(); recipient_fields = recipient_fields.with_custom_tlvs(