Skip to content

Commit 1be8081

Browse files
fixup: Add NodeSigner to LiquidityManager to pass it to LSPS5/service
1 parent aeadd25 commit 1be8081

File tree

2 files changed

+84
-29
lines changed

2 files changed

+84
-29
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,8 @@ impl<
239239
G,
240240
&'a (dyn UtxoLookup + Send + Sync),
241241
L,
242-
> where
242+
>
243+
where
243244
L::Target: Logger,
244245
{
245246
/// Initializes a new [`GossipSync::Rapid`] variant.
@@ -256,7 +257,8 @@ impl<'a, L: Deref>
256257
&'a NetworkGraph<L>,
257258
&'a (dyn UtxoLookup + Send + Sync),
258259
L,
259-
> where
260+
>
261+
where
260262
L::Target: Logger,
261263
{
262264
/// Initializes a new [`GossipSync::None`] variant.
@@ -1293,8 +1295,13 @@ mod tests {
12931295
IgnoringMessageHandler,
12941296
>;
12951297

1296-
type LM =
1297-
LiquidityManager<Arc<KeysManager>, Arc<ChannelManager>, Arc<dyn Filter + Sync + Send>>;
1298+
type LM = LiquidityManager<
1299+
Arc<KeysManager>,
1300+
Arc<KeysManager>,
1301+
Arc<ChannelManager>,
1302+
Arc<dyn Filter + Sync + Send>,
1303+
Arc<DefaultTimeProvider>,
1304+
>;
12981305

12991306
struct Node {
13001307
node: Arc<ChannelManager>,
@@ -1748,6 +1755,7 @@ mod tests {
17481755
));
17491756
let time_provider = Arc::new(DefaultTimeProvider);
17501757
let liquidity_manager = Arc::new(LiquidityManager::new_with_custom_time_provider(
1758+
Arc::clone(&keys_manager),
17511759
Arc::clone(&keys_manager),
17521760
Arc::clone(&manager),
17531761
None,

lightning-liquidity/src/manager.rs

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use lightning::ln::channelmanager::{AChannelManager, ChainParameters};
3333
use lightning::ln::msgs::{ErrorAction, LightningError};
3434
use lightning::ln::peer_handler::CustomMessageHandler;
3535
use lightning::ln::wire::CustomMessageReader;
36-
use lightning::sign::EntropySource;
36+
use lightning::sign::{EntropySource, NodeSigner};
3737
use lightning::util::logger::Level;
3838
use lightning::util::ser::{LengthLimitedRead, LengthReadable};
3939
use lightning::util::wakers::Future;
@@ -86,6 +86,10 @@ pub trait ALiquidityManager {
8686
type EntropySource: EntropySource + ?Sized;
8787
/// A type that may be dereferenced to [`Self::EntropySource`].
8888
type ES: Deref<Target = Self::EntropySource> + Clone;
89+
/// A type implementing [`NodeSigner`]
90+
type NodeSigner: NodeSigner + ?Sized;
91+
/// A type that may be dereferenced to [`Self::NodeSigner`].
92+
type NS: Deref<Target = Self::NodeSigner> + Clone;
8993
/// A type implementing [`AChannelManager`]
9094
type AChannelManager: AChannelManager + ?Sized;
9195
/// A type that may be dereferenced to [`Self::AChannelManager`].
@@ -99,26 +103,34 @@ pub trait ALiquidityManager {
99103
/// A type that may be dereferenced to [`Self::TimeProvider`].
100104
type TP: Deref<Target = Self::TimeProvider> + Clone;
101105
/// Returns a reference to the actual [`LiquidityManager`] object.
102-
fn get_lm(&self) -> &LiquidityManager<Self::ES, Self::CM, Self::C, Self::TP>;
106+
fn get_lm(&self) -> &LiquidityManager<Self::ES, Self::NS, Self::CM, Self::C, Self::TP>;
103107
}
104108

105-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone> ALiquidityManager
106-
for LiquidityManager<ES, CM, C, TP>
109+
impl<
110+
ES: Deref + Clone,
111+
NS: Deref + Clone,
112+
CM: Deref + Clone,
113+
C: Deref + Clone,
114+
TP: Deref + Clone,
115+
> ALiquidityManager for LiquidityManager<ES, NS, CM, C, TP>
107116
where
108117
ES::Target: EntropySource,
118+
NS::Target: NodeSigner,
109119
CM::Target: AChannelManager,
110120
C::Target: Filter,
111121
TP::Target: TimeProvider,
112122
{
113123
type EntropySource = ES::Target;
114124
type ES = ES;
125+
type NodeSigner = NS::Target;
126+
type NS = NS;
115127
type AChannelManager = CM::Target;
116128
type CM = CM;
117129
type Filter = C::Target;
118130
type C = C;
119131
type TimeProvider = TP::Target;
120132
type TP = TP;
121-
fn get_lm(&self) -> &LiquidityManager<ES, CM, C, TP> {
133+
fn get_lm(&self) -> &LiquidityManager<ES, NS, CM, C, TP> {
122134
self
123135
}
124136
}
@@ -144,11 +156,13 @@ where
144156
/// [`Event::PaymentForwarded`]: lightning::events::Event::PaymentForwarded
145157
pub struct LiquidityManager<
146158
ES: Deref + Clone,
159+
NS: Deref + Clone,
147160
CM: Deref + Clone,
148161
C: Deref + Clone,
149162
TP: Deref + Clone,
150163
> where
151164
ES::Target: EntropySource,
165+
NS::Target: NodeSigner,
152166
CM::Target: AChannelManager,
153167
C::Target: Filter,
154168
TP::Target: TimeProvider,
@@ -165,7 +179,7 @@ pub struct LiquidityManager<
165179
lsps1_client_handler: Option<LSPS1ClientHandler<ES>>,
166180
lsps2_service_handler: Option<LSPS2ServiceHandler<CM>>,
167181
lsps2_client_handler: Option<LSPS2ClientHandler<ES>>,
168-
lsps5_service_handler: Option<LSPS5ServiceHandler<CM, TP>>,
182+
lsps5_service_handler: Option<LSPS5ServiceHandler<CM, NS, TP>>,
169183
lsps5_client_handler: Option<LSPS5ClientHandler<ES, TP>>,
170184
service_config: Option<LiquidityServiceConfig>,
171185
_client_config: Option<LiquidityClientConfig>,
@@ -174,22 +188,24 @@ pub struct LiquidityManager<
174188
}
175189

176190
#[cfg(feature = "time")]
177-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone>
178-
LiquidityManager<ES, CM, C, Arc<DefaultTimeProvider>>
191+
impl<ES: Deref + Clone, NS: Deref + Clone, CM: Deref + Clone, C: Deref + Clone>
192+
LiquidityManager<ES, NS, CM, C, Arc<DefaultTimeProvider>>
179193
where
180194
ES::Target: EntropySource,
195+
NS::Target: NodeSigner,
181196
CM::Target: AChannelManager,
182197
C::Target: Filter,
183198
{
184199
/// Constructor for the [`LiquidityManager`] using the default system clock
185200
pub fn new(
186-
entropy_source: ES, channel_manager: CM, chain_source: Option<C>,
201+
entropy_source: ES, node_signer: NS, channel_manager: CM, chain_source: Option<C>,
187202
chain_params: Option<ChainParameters>, service_config: Option<LiquidityServiceConfig>,
188203
client_config: Option<LiquidityClientConfig>,
189204
) -> Self {
190205
let time_provider = Arc::new(DefaultTimeProvider);
191206
Self::new_with_custom_time_provider(
192207
entropy_source,
208+
node_signer,
193209
channel_manager,
194210
chain_source,
195211
chain_params,
@@ -200,10 +216,16 @@ where
200216
}
201217
}
202218

203-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone>
204-
LiquidityManager<ES, CM, C, TP>
219+
impl<
220+
ES: Deref + Clone,
221+
NS: Deref + Clone,
222+
CM: Deref + Clone,
223+
C: Deref + Clone,
224+
TP: Deref + Clone,
225+
> LiquidityManager<ES, NS, CM, C, TP>
205226
where
206227
ES::Target: EntropySource,
228+
NS::Target: NodeSigner,
207229
CM::Target: AChannelManager,
208230
C::Target: Filter,
209231
TP::Target: TimeProvider,
@@ -215,7 +237,7 @@ where
215237
/// Sets up the required protocol message handlers based on the given
216238
/// [`LiquidityClientConfig`] and [`LiquidityServiceConfig`].
217239
pub fn new_with_custom_time_provider(
218-
entropy_source: ES, channel_manager: CM, chain_source: Option<C>,
240+
entropy_source: ES, node_signer: NS, channel_manager: CM, chain_source: Option<C>,
219241
chain_params: Option<ChainParameters>, service_config: Option<LiquidityServiceConfig>,
220242
client_config: Option<LiquidityClientConfig>, time_provider: TP,
221243
) -> Self {
@@ -266,18 +288,19 @@ where
266288
let lsps5_service_handler = service_config.as_ref().and_then(|config| {
267289
config.lsps5_service_config.as_ref().map(|config| {
268290
if let Some(number) =
269-
<LSPS5ServiceHandler<CM, TP> as LSPSProtocolMessageHandler>::PROTOCOL_NUMBER
291+
<LSPS5ServiceHandler<CM, NS, TP> as LSPSProtocolMessageHandler>::PROTOCOL_NUMBER
270292
{
271293
supported_protocols.push(number);
272294
}
273295

274-
return LSPS5ServiceHandler::new_with_time_provider(
296+
LSPS5ServiceHandler::new_with_time_provider(
275297
Arc::clone(&pending_events),
276298
Arc::clone(&pending_messages),
277299
channel_manager.clone(),
300+
node_signer,
278301
config.clone(),
279-
time_provider,
280-
);
302+
time_provider.clone(),
303+
)
281304
})
282305
});
283306

@@ -394,7 +417,7 @@ where
394417
/// Returns a reference to the LSPS5 server-side handler.
395418
///
396419
/// The returned hendler allows to initiate the LSPS5 service-side flow.
397-
pub fn lsps5_service_handler(&self) -> Option<&LSPS5ServiceHandler<CM, TP>> {
420+
pub fn lsps5_service_handler(&self) -> Option<&LSPS5ServiceHandler<CM, NS, TP>> {
398421
self.lsps5_service_handler.as_ref()
399422
}
400423

@@ -548,10 +571,16 @@ where
548571
}
549572
}
550573

551-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone> CustomMessageReader
552-
for LiquidityManager<ES, CM, C, TP>
574+
impl<
575+
ES: Deref + Clone,
576+
NS: Deref + Clone,
577+
CM: Deref + Clone,
578+
C: Deref + Clone,
579+
TP: Deref + Clone,
580+
> CustomMessageReader for LiquidityManager<ES, NS, CM, C, TP>
553581
where
554582
ES::Target: EntropySource,
583+
NS::Target: NodeSigner,
555584
CM::Target: AChannelManager,
556585
C::Target: Filter,
557586
TP::Target: TimeProvider,
@@ -570,10 +599,16 @@ where
570599
}
571600
}
572601

573-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone> CustomMessageHandler
574-
for LiquidityManager<ES, CM, C, TP>
602+
impl<
603+
ES: Deref + Clone,
604+
NS: Deref + Clone,
605+
CM: Deref + Clone,
606+
C: Deref + Clone,
607+
TP: Deref + Clone,
608+
> CustomMessageHandler for LiquidityManager<ES, NS, CM, C, TP>
575609
where
576610
ES::Target: EntropySource,
611+
NS::Target: NodeSigner,
577612
CM::Target: AChannelManager,
578613
C::Target: Filter,
579614
TP::Target: TimeProvider,
@@ -683,10 +718,16 @@ where
683718
}
684719
}
685720

686-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone> Listen
687-
for LiquidityManager<ES, CM, C, TP>
721+
impl<
722+
ES: Deref + Clone,
723+
NS: Deref + Clone,
724+
CM: Deref + Clone,
725+
C: Deref + Clone,
726+
TP: Deref + Clone,
727+
> Listen for LiquidityManager<ES, NS, CM, C, TP>
688728
where
689729
ES::Target: EntropySource,
730+
NS::Target: NodeSigner,
690731
CM::Target: AChannelManager,
691732
C::Target: Filter,
692733
TP::Target: TimeProvider,
@@ -722,10 +763,16 @@ where
722763
}
723764
}
724765

725-
impl<ES: Deref + Clone, CM: Deref + Clone, C: Deref + Clone, TP: Deref + Clone> Confirm
726-
for LiquidityManager<ES, CM, C, TP>
766+
impl<
767+
ES: Deref + Clone,
768+
NS: Deref + Clone,
769+
CM: Deref + Clone,
770+
C: Deref + Clone,
771+
TP: Deref + Clone,
772+
> Confirm for LiquidityManager<ES, NS, CM, C, TP>
727773
where
728774
ES::Target: EntropySource,
775+
NS::Target: NodeSigner,
729776
CM::Target: AChannelManager,
730777
C::Target: Filter,
731778
TP::Target: TimeProvider,

0 commit comments

Comments
 (0)