Skip to content

Commit a1eef19

Browse files
Support client_trusts_lsp on LSPS2
1 parent 9514637 commit a1eef19

File tree

9 files changed

+1972
-92
lines changed

9 files changed

+1972
-92
lines changed

fuzz/src/lsps_message.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ pub fn do_test(data: &[u8]) {
8484
None::<Arc<dyn Filter + Send + Sync>>,
8585
None,
8686
kv_store,
87+
Arc::clone(&tx_broadcaster),
8788
None,
8889
None,
8990
).unwrap());

lightning-background-processor/src/lib.rs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,8 @@ pub const NO_LIQUIDITY_MANAGER: Option<
426426
K = &dyn lightning::util::persist::KVStore,
427427
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider,
428428
TP = &dyn lightning_liquidity::utils::time::TimeProvider,
429+
BroadcasterInterface = dyn lightning::chain::chaininterface::BroadcasterInterface,
430+
T = &dyn BroadcasterInterface,
429431
> + Send
430432
+ Sync,
431433
>,
@@ -449,6 +451,8 @@ pub const NO_LIQUIDITY_MANAGER_SYNC: Option<
449451
KS = &dyn lightning::util::persist::KVStoreSync,
450452
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider,
451453
TP = &dyn lightning_liquidity::utils::time::TimeProvider,
454+
BroadcasterInterface = dyn lightning::chain::chaininterface::BroadcasterInterface,
455+
T = &dyn BroadcasterInterface,
452456
> + Send
453457
+ Sync,
454458
>,
@@ -766,7 +770,7 @@ use futures_util::{dummy_waker, Joiner, OptionalSelector, Selector, SelectorOutp
766770
/// # type P2PGossipSync<UL> = lightning::routing::gossip::P2PGossipSync<Arc<NetworkGraph>, Arc<UL>, Arc<Logger>>;
767771
/// # type ChannelManager<B, F, FE> = lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor<B, F, FE>, B, FE, Logger>;
768772
/// # type OnionMessenger<B, F, FE> = lightning::onion_message::messenger::OnionMessenger<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<Logger>, Arc<ChannelManager<B, F, FE>>, Arc<lightning::onion_message::messenger::DefaultMessageRouter<Arc<NetworkGraph>, Arc<Logger>, Arc<lightning::sign::KeysManager>>>, Arc<ChannelManager<B, F, FE>>, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler>;
769-
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>, Arc<Store>, Arc<DefaultTimeProvider>>;
773+
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>, Arc<Store>, Arc<DefaultTimeProvider>, Arc<B>>;
770774
/// # type Scorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<NetworkGraph>, Arc<Logger>>>;
771775
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger, F, StoreSync>;
772776
/// # type OutputSweeper<B, D, FE, F, O> = lightning::util::sweep::OutputSweeper<Arc<B>, Arc<D>, Arc<FE>, Arc<F>, Arc<Store>, Arc<Logger>, Arc<O>>;
@@ -1950,6 +1954,7 @@ mod tests {
19501954
Arc<dyn Filter + Sync + Send>,
19511955
Arc<Persister>,
19521956
DefaultTimeProvider,
1957+
Arc<test_utils::TestBroadcaster>,
19531958
>;
19541959

19551960
struct Node {
@@ -2404,6 +2409,7 @@ mod tests {
24042409
None,
24052410
None,
24062411
Arc::clone(&kv_store),
2412+
Arc::clone(&tx_broadcaster),
24072413
None,
24082414
None,
24092415
)
@@ -2778,10 +2784,10 @@ mod tests {
27782784
let kv_store = KVStoreSyncWrapper(kv_store_sync);
27792785

27802786
// Yes, you can unsafe { turn off the borrow checker }
2781-
let lm_async: &'static LiquidityManager<_, _, _, _, _, _> = unsafe {
2787+
let lm_async: &'static LiquidityManager<_, _, _, _, _, _, _> = unsafe {
27822788
&*(nodes[0].liquidity_manager.get_lm_async()
2783-
as *const LiquidityManager<_, _, _, _, _, _>)
2784-
as &'static LiquidityManager<_, _, _, _, _, _>
2789+
as *const LiquidityManager<_, _, _, _, _, _, _>)
2790+
as &'static LiquidityManager<_, _, _, _, _, _, _>
27852791
};
27862792
let sweeper_async: &'static OutputSweeper<_, _, _, _, _, _, _> = unsafe {
27872793
&*(nodes[0].sweeper.sweeper_async() as *const OutputSweeper<_, _, _, _, _, _, _>)
@@ -3297,10 +3303,10 @@ mod tests {
32973303
let kv_store = KVStoreSyncWrapper(kv_store_sync);
32983304

32993305
// Yes, you can unsafe { turn off the borrow checker }
3300-
let lm_async: &'static LiquidityManager<_, _, _, _, _, _> = unsafe {
3306+
let lm_async: &'static LiquidityManager<_, _, _, _, _, _, _> = unsafe {
33013307
&*(nodes[0].liquidity_manager.get_lm_async()
3302-
as *const LiquidityManager<_, _, _, _, _, _>)
3303-
as &'static LiquidityManager<_, _, _, _, _, _>
3308+
as *const LiquidityManager<_, _, _, _, _, _, _>)
3309+
as &'static LiquidityManager<_, _, _, _, _, _, _>
33043310
};
33053311
let sweeper_async: &'static OutputSweeper<_, _, _, _, _, _, _> = unsafe {
33063312
&*(nodes[0].sweeper.sweeper_async() as *const OutputSweeper<_, _, _, _, _, _, _>)
@@ -3524,10 +3530,10 @@ mod tests {
35243530
let (exit_sender, exit_receiver) = tokio::sync::watch::channel(());
35253531

35263532
// Yes, you can unsafe { turn off the borrow checker }
3527-
let lm_async: &'static LiquidityManager<_, _, _, _, _, _> = unsafe {
3533+
let lm_async: &'static LiquidityManager<_, _, _, _, _, _, _> = unsafe {
35283534
&*(nodes[0].liquidity_manager.get_lm_async()
3529-
as *const LiquidityManager<_, _, _, _, _, _>)
3530-
as &'static LiquidityManager<_, _, _, _, _, _>
3535+
as *const LiquidityManager<_, _, _, _, _, _, _>)
3536+
as &'static LiquidityManager<_, _, _, _, _, _, _>
35313537
};
35323538
let sweeper_async: &'static OutputSweeper<_, _, _, _, _, _, _> = unsafe {
35333539
&*(nodes[0].sweeper.sweeper_async() as *const OutputSweeper<_, _, _, _, _, _, _>)

lightning-liquidity/src/lsps2/msgs.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,14 @@ pub struct LSPS2BuyResponse {
183183
pub jit_channel_scid: LSPS2InterceptScid,
184184
/// The locktime expiry delta the lsp requires.
185185
pub lsp_cltv_expiry_delta: u32,
186-
/// A flag that indicates who is trusting who.
186+
/// Trust model flag (default: false).
187+
///
188+
/// false => "LSP trusts client": LSP immediately (or as soon as safe) broadcasts the
189+
/// funding transaction; client may wait for broadcast / confirmations
190+
/// before revealing the preimage.
191+
/// true => "Client trusts LSP": LSP may defer broadcasting until after the client
192+
/// reveals the preimage; client MUST send the preimage once HTLC(s) are
193+
/// irrevocably committed.
187194
#[serde(default)]
188195
pub client_trusts_lsp: bool,
189196
}

0 commit comments

Comments
 (0)