Skip to content

Commit 46cff28

Browse files
committed
Initial commit for Pickhardt Router implementation in Rust-LDK
1 parent d2191d9 commit 46cff28

File tree

5 files changed

+1214
-0
lines changed

5 files changed

+1214
-0
lines changed

lightning-invoice/src/utils.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,34 @@ where L::Target: Logger {
470470
}
471471
}
472472

473+
474+
/// Pickhardt [`Router`] implemented using an alterhative [`find_route`] implementation that computes min cost flow.
475+
pub struct PickhardtRouter<G: Deref<Target = NetworkGraph<L>>, L: Deref> where L::Target: Logger {
476+
network_graph: G,
477+
logger: L,
478+
}
479+
480+
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> PickhardtRouter<G, L> where L::Target: Logger {
481+
/// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source
482+
/// `random_seed_bytes`.
483+
pub fn new(network_graph: G, logger: L) -> Self {
484+
Self { network_graph, logger }
485+
}
486+
}
487+
488+
use lightning::routing::pickhardt_router::pickhardt_router;
489+
490+
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Score> Router<S> for PickhardtRouter<G, L>
491+
where L::Target: Logger {
492+
fn find_route(
493+
&self, payer: &PublicKey, params: &RouteParameters, _payment_hash: &PaymentHash,
494+
first_hops: Option<&[&ChannelDetails]>, scorer: &S
495+
) -> Result<Route, LightningError> {
496+
pickhardt_router::find_route(
497+
payer, params, &self.network_graph, first_hops, &*self.logger, scorer)
498+
}
499+
}
500+
473501
impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Payer for ChannelManager<Signer, M, T, K, F, L>
474502
where
475503
M::Target: chain::Watch<Signer>,

lightning/src/routing/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
pub mod gossip;
1313
pub mod router;
1414
pub mod scoring;
15+
pub mod pickhardt_router;

0 commit comments

Comments
 (0)