From a8e08d251b888add696d4cf59561d1bce7d2ce35 Mon Sep 17 00:00:00 2001 From: Jeffrey Czyz Date: Wed, 18 Sep 2024 12:40:48 -0500 Subject: [PATCH] De-couple MessageRouter from Router Now that ChannelManager is parameterized by both a MessageRouter and a Router, Router implementations no longer need to implement MessageRouter, too. --- lightning/src/routing/router.rs | 35 +------------------------------- lightning/src/util/test_utils.rs | 26 ------------------------ 2 files changed, 1 insertion(+), 60 deletions(-) diff --git a/lightning/src/routing/router.rs b/lightning/src/routing/router.rs index a74f9d834d4..b0a3f34a676 100644 --- a/lightning/src/routing/router.rs +++ b/lightning/src/routing/router.rs @@ -12,7 +12,6 @@ use bitcoin::secp256k1::{PublicKey, Secp256k1, self}; use crate::blinded_path::{BlindedHop, Direction, IntroductionNode}; -use crate::blinded_path::message::{BlindedMessagePath, MessageContext, MessageForwardNode}; use crate::blinded_path::payment::{BlindedPaymentPath, ForwardTlvs, PaymentConstraints, PaymentForwardNode, PaymentRelay, ReceiveTlvs}; use crate::ln::{PaymentHash, PaymentPreimage}; use crate::ln::channel_state::ChannelDetails; @@ -23,7 +22,6 @@ use crate::ln::onion_utils; #[cfg(async_payments)] use crate::offers::static_invoice::StaticInvoice; use crate::offers::invoice::Bolt12Invoice; -use crate::onion_message::messenger::{DefaultMessageRouter, Destination, MessageRouter, OnionMessagePath}; use crate::routing::gossip::{DirectedChannelInfo, EffectiveCapacity, ReadOnlyNetworkGraph, NetworkGraph, NodeId}; use crate::routing::scoring::{ChannelUsage, LockableScore, ScoreLookUp}; use crate::sign::EntropySource; @@ -49,9 +47,6 @@ pub use lightning_types::routing::{RouteHint, RouteHintHop}; /// it will create a one-hop path using the recipient as the introduction node if it is a announced /// node. Otherwise, there is no way to find a path to the introduction node in order to send a /// payment, and thus an `Err` is returned. -/// -/// Implements [`MessageRouter`] by delegating to [`DefaultMessageRouter`]. See those docs for -/// privacy implications. pub struct DefaultRouter>, L: Deref, ES: Deref, S: Deref, SP: Sized, Sc: ScoreLookUp> where L::Target: Logger, S::Target: for <'a> LockableScore<'a, ScoreLookUp = Sc>, @@ -190,36 +185,8 @@ impl>, L: Deref, ES: Deref, S: Deref, SP: Size } } -impl< G: Deref>, L: Deref, ES: Deref, S: Deref, SP: Sized, Sc: ScoreLookUp> MessageRouter for DefaultRouter where - L::Target: Logger, - S::Target: for <'a> LockableScore<'a, ScoreLookUp = Sc>, - ES::Target: EntropySource, -{ - fn find_path( - &self, sender: PublicKey, peers: Vec, destination: Destination - ) -> Result { - DefaultMessageRouter::<_, _, ES>::find_path(&self.network_graph, sender, peers, destination) - } - - fn create_blinded_paths< - T: secp256k1::Signing + secp256k1::Verification - > ( - &self, recipient: PublicKey, context: MessageContext, peers: Vec, secp_ctx: &Secp256k1, - ) -> Result, ()> { - DefaultMessageRouter::create_blinded_paths(&self.network_graph, recipient, context, peers, &self.entropy_source, secp_ctx) - } - - fn create_compact_blinded_paths< - T: secp256k1::Signing + secp256k1::Verification - > ( - &self, recipient: PublicKey, context: MessageContext, peers: Vec, secp_ctx: &Secp256k1, - ) -> Result, ()> { - DefaultMessageRouter::create_compact_blinded_paths(&self.network_graph, recipient, context, peers, &self.entropy_source, secp_ctx) - } -} - /// A trait defining behavior for routing a payment. -pub trait Router: MessageRouter { +pub trait Router { /// Finds a [`Route`] for a payment between the given `payer` and a payee. /// /// The `payee` and the payment's value are given in [`RouteParameters::payment_params`] diff --git a/lightning/src/util/test_utils.rs b/lightning/src/util/test_utils.rs index 473ad906af6..12e027d32fc 100644 --- a/lightning/src/util/test_utils.rs +++ b/lightning/src/util/test_utils.rs @@ -265,32 +265,6 @@ impl<'a> Router for TestRouter<'a> { } } -impl<'a> MessageRouter for TestRouter<'a> { - fn find_path( - &self, sender: PublicKey, peers: Vec, destination: Destination - ) -> Result { - self.router.find_path(sender, peers, destination) - } - - fn create_blinded_paths< - T: secp256k1::Signing + secp256k1::Verification - >( - &self, recipient: PublicKey, context: MessageContext, - peers: Vec, secp_ctx: &Secp256k1, - ) -> Result, ()> { - self.router.create_blinded_paths(recipient, context, peers, secp_ctx) - } - - fn create_compact_blinded_paths< - T: secp256k1::Signing + secp256k1::Verification - >( - &self, recipient: PublicKey, context: MessageContext, - peers: Vec, secp_ctx: &Secp256k1, - ) -> Result, ()> { - self.router.create_compact_blinded_paths(recipient, context, peers, secp_ctx) - } -} - impl<'a> Drop for TestRouter<'a> { fn drop(&mut self) { if std::thread::panicking() {