Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lightning-background-processor/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ bitcoin_hashes = { version = "0.14.0", default-features = false }
bitcoin-io = { version = "0.1.2", default-features = false }
lightning = { version = "0.3.0", path = "../lightning", default-features = false }
lightning-rapid-gossip-sync = { version = "0.2.0", path = "../lightning-rapid-gossip-sync", default-features = false }
lightning-liquidity = { version = "0.2.0", path = "../lightning-liquidity", default-features = false }
lightning-liquidity = { version = "0.3.0", path = "../lightning-liquidity", default-features = false }
possiblyrandom = { version = "0.2", path = "../possiblyrandom", default-features = false }

[dev-dependencies]
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "time" ] }
lightning = { version = "0.3.0", path = "../lightning", features = ["_test_utils"] }
lightning-invoice = { version = "0.34.0", path = "../lightning-invoice" }
lightning-liquidity = { version = "0.2.0", path = "../lightning-liquidity", default-features = false, features = ["_test_utils"] }
lightning-liquidity = { version = "0.3.0", path = "../lightning-liquidity", default-features = false, features = ["_test_utils"] }
lightning-persister = { version = "0.2.0", path = "../lightning-persister" }

[lints]
Expand Down
109 changes: 37 additions & 72 deletions lightning-background-processor/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -201,10 +201,9 @@ pub enum GossipSync<
R: Deref<Target = RapidGossipSync<G, L>>,
G: Deref<Target = NetworkGraph<L>>,
U: Deref,
L: Deref,
L: Logger,
> where
U::Target: UtxoLookup,
L::Target: Logger,
{
/// Gossip sync via the lightning peer-to-peer network as defined by BOLT 7.
P2P(P),
Expand All @@ -219,11 +218,10 @@ impl<
R: Deref<Target = RapidGossipSync<G, L>>,
G: Deref<Target = NetworkGraph<L>>,
U: Deref,
L: Deref,
L: Logger,
> GossipSync<P, R, G, U, L>
where
U::Target: UtxoLookup,
L::Target: Logger,
{
fn network_graph(&self) -> Option<&G> {
match self {
Expand Down Expand Up @@ -261,11 +259,10 @@ impl<
P: Deref<Target = P2PGossipSync<G, U, L>>,
G: Deref<Target = NetworkGraph<L>>,
U: Deref,
L: Deref,
L: Logger,
> GossipSync<P, &RapidGossipSync<G, L>, G, U, L>
where
U::Target: UtxoLookup,
L::Target: Logger,
{
/// Initializes a new [`GossipSync::P2P`] variant.
pub fn p2p(gossip_sync: P) -> Self {
Expand All @@ -278,16 +275,15 @@ impl<
'a,
R: Deref<Target = RapidGossipSync<G, L>>,
G: Deref<Target = NetworkGraph<L>>,
L: Deref,
L: Logger,
>
GossipSync<
&P2PGossipSync<G, &'a (dyn UtxoLookup + Send + Sync), L>,
R,
G,
&'a (dyn UtxoLookup + Send + Sync),
L,
> where
L::Target: Logger,
>
{
/// Initializes a new [`GossipSync::Rapid`] variant.
pub fn rapid(gossip_sync: R) -> Self {
Expand All @@ -296,26 +292,22 @@ impl<
}

/// This is not exported to bindings users as the bindings concretize everything and have constructors for us
impl<'a, L: Deref>
impl<'a, L: Logger>
GossipSync<
&P2PGossipSync<&'a NetworkGraph<L>, &'a (dyn UtxoLookup + Send + Sync), L>,
&RapidGossipSync<&'a NetworkGraph<L>, L>,
&'a NetworkGraph<L>,
&'a (dyn UtxoLookup + Send + Sync),
L,
> where
L::Target: Logger,
>
{
/// Initializes a new [`GossipSync::None`] variant.
pub fn none() -> Self {
GossipSync::None
}
}

fn handle_network_graph_update<L: Deref>(network_graph: &NetworkGraph<L>, event: &Event)
where
L::Target: Logger,
{
fn handle_network_graph_update<L: Logger>(network_graph: &NetworkGraph<L>, event: &Event) {
if let Event::PaymentPathFailed {
failure: PathFailure::OnPath { network_update: Some(ref upd) },
..
Expand Down Expand Up @@ -420,24 +412,15 @@ type DynChannelManager = lightning::ln::channelmanager::ChannelManager<
pub const NO_ONION_MESSENGER: Option<
Arc<
dyn AOnionMessenger<
EntropySource = dyn EntropySource + Send + Sync,
ES = &(dyn EntropySource + Send + Sync),
NodeSigner = dyn lightning::sign::NodeSigner + Send + Sync,
NS = &(dyn lightning::sign::NodeSigner + Send + Sync),
Logger = dyn Logger + Send + Sync,
L = &'static (dyn Logger + Send + Sync),
NodeIdLookUp = DynChannelManager,
EntropySource = &(dyn EntropySource + Send + Sync),
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
Logger = &'static (dyn Logger + Send + Sync),
NL = &'static DynChannelManager,
MessageRouter = DynMessageRouter,
MR = &'static DynMessageRouter,
OffersMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,
OMH = &'static lightning::ln::peer_handler::IgnoringMessageHandler,
AsyncPaymentsMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,
APH = &'static lightning::ln::peer_handler::IgnoringMessageHandler,
DNSResolverMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,
DRH = &'static lightning::ln::peer_handler::IgnoringMessageHandler,
CustomOnionMessageHandler = lightning::ln::peer_handler::IgnoringMessageHandler,
CMH = &'static lightning::ln::peer_handler::IgnoringMessageHandler,
MessageRouter = &'static DynMessageRouter,
OMH = lightning::ln::peer_handler::IgnoringMessageHandler,
APH = lightning::ln::peer_handler::IgnoringMessageHandler,
DRH = lightning::ln::peer_handler::IgnoringMessageHandler,
CMH = lightning::ln::peer_handler::IgnoringMessageHandler,
> + Send
+ Sync,
>,
Expand Down Expand Up @@ -480,22 +463,18 @@ impl KVStore for DummyKVStore {
pub const NO_LIQUIDITY_MANAGER: Option<
Arc<
dyn ALiquidityManager<
EntropySource = dyn EntropySource + Send + Sync,
ES = &(dyn EntropySource + Send + Sync),
NodeSigner = dyn lightning::sign::NodeSigner + Send + Sync,
NS = &(dyn lightning::sign::NodeSigner + Send + Sync),
EntropySource = &(dyn EntropySource + Send + Sync),
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
AChannelManager = DynChannelManager,
CM = &DynChannelManager,
Filter = dyn chain::Filter + Send + Sync,
C = &(dyn chain::Filter + Send + Sync),
KVStore = DummyKVStore,
K = &DummyKVStore,
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider + Send + Sync,
TP = &(dyn lightning_liquidity::utils::time::TimeProvider + Send + Sync),
BroadcasterInterface = dyn lightning::chain::chaininterface::BroadcasterInterface
+ Send
+ Sync,
T = &(dyn BroadcasterInterface + Send + Sync),
BroadcasterInterface = &(dyn lightning::chain::chaininterface::BroadcasterInterface
+ Send
+ Sync),
> + Send
+ Sync,
>,
Expand All @@ -507,10 +486,8 @@ pub const NO_LIQUIDITY_MANAGER: Option<
pub const NO_LIQUIDITY_MANAGER_SYNC: Option<
Arc<
dyn ALiquidityManagerSync<
EntropySource = dyn EntropySource + Send + Sync,
ES = &(dyn EntropySource + Send + Sync),
NodeSigner = dyn lightning::sign::NodeSigner + Send + Sync,
NS = &(dyn lightning::sign::NodeSigner + Send + Sync),
EntropySource = &(dyn EntropySource + Send + Sync),
NodeSigner = &(dyn lightning::sign::NodeSigner + Send + Sync),
AChannelManager = DynChannelManager,
CM = &DynChannelManager,
Filter = dyn chain::Filter + Send + Sync,
Expand All @@ -519,10 +496,9 @@ pub const NO_LIQUIDITY_MANAGER_SYNC: Option<
KS = &(dyn lightning::util::persist::KVStoreSync + Send + Sync),
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider + Send + Sync,
TP = &(dyn lightning_liquidity::utils::time::TimeProvider + Send + Sync),
BroadcasterInterface = dyn lightning::chain::chaininterface::BroadcasterInterface
+ Send
+ Sync,
T = &(dyn BroadcasterInterface + Send + Sync),
BroadcasterInterface = &(dyn lightning::chain::chaininterface::BroadcasterInterface
+ Send
+ Sync),
> + Send
+ Sync,
>,
Expand Down Expand Up @@ -956,14 +932,14 @@ pub async fn process_events_async<
'a,
UL: Deref,
CF: Deref,
T: Deref,
F: Deref,
T: BroadcasterInterface,
F: FeeEstimator,
G: Deref<Target = NetworkGraph<L>>,
L: Deref,
L: Logger,
P: Deref,
EventHandlerFuture: core::future::Future<Output = Result<(), ReplayEvent>>,
EventHandler: Fn(Event) -> EventHandlerFuture,
ES: Deref,
ES: EntropySource,
M: Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>>,
CM: Deref,
OM: Deref,
Expand All @@ -973,7 +949,7 @@ pub async fn process_events_async<
LM: Deref,
D: Deref,
O: Deref,
K: Deref,
K: KVStore,
OS: Deref<Target = OutputSweeper<T, D, F, CF, K, L, O>>,
S: Deref<Target = SC>,
SC: for<'b> WriteableScore<'b>,
Expand All @@ -989,18 +965,13 @@ pub async fn process_events_async<
where
UL::Target: UtxoLookup,
CF::Target: chain::Filter,
T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
ES::Target: EntropySource,
CM::Target: AChannelManager,
OM::Target: AOnionMessenger,
PM::Target: APeerManager,
LM::Target: ALiquidityManager,
O::Target: OutputSpender,
D::Target: ChangeDestinationSource,
K::Target: KVStore,
{
let async_event_handler = |event| {
let network_graph = gossip_sync.network_graph();
Expand Down Expand Up @@ -1457,14 +1428,14 @@ fn check_and_reset_sleeper<
pub async fn process_events_async_with_kv_store_sync<
UL: Deref,
CF: Deref,
T: Deref,
F: Deref,
T: BroadcasterInterface,
F: FeeEstimator,
G: Deref<Target = NetworkGraph<L>>,
L: Deref,
L: Logger,
P: Deref,
EventHandlerFuture: core::future::Future<Output = Result<(), ReplayEvent>>,
EventHandler: Fn(Event) -> EventHandlerFuture,
ES: Deref,
ES: EntropySource,
M: Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P, ES>>,
CM: Deref,
OM: Deref,
Expand All @@ -1490,11 +1461,7 @@ pub async fn process_events_async_with_kv_store_sync<
where
UL::Target: UtxoLookup,
CF::Target: chain::Filter,
T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<<CM::Target as AChannelManager>::Signer>,
ES::Target: EntropySource,
CM::Target: AChannelManager,
OM::Target: AOnionMessenger,
PM::Target: APeerManager,
Expand Down Expand Up @@ -1571,8 +1538,8 @@ impl BackgroundProcessor {
'a,
UL: 'static + Deref,
CF: 'static + Deref,
T: 'static + Deref,
F: 'static + Deref + Send,
T: 'static + BroadcasterInterface,
F: 'static + FeeEstimator + Send,
G: 'static + Deref<Target = NetworkGraph<L>>,
L: 'static + Deref + Send,
P: 'static + Deref,
Expand Down Expand Up @@ -1604,8 +1571,6 @@ impl BackgroundProcessor {
where
UL::Target: 'static + UtxoLookup,
CF::Target: 'static + chain::Filter,
T::Target: 'static + BroadcasterInterface,
F::Target: 'static + FeeEstimator,
L::Target: 'static + Logger,
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
ES::Target: 'static + EntropySource,
Expand Down
35 changes: 3 additions & 32 deletions lightning-dns-resolver/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#![deny(rustdoc::private_intra_doc_links)]

use std::net::SocketAddr;
use std::ops::Deref;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::{Arc, Mutex};

Expand All @@ -30,10 +29,7 @@ const WE_REQUIRE_32_OR_64_BIT_USIZE: u8 = 424242;

/// A resolver which implements [`DNSResolverMessageHandler`] and replies to [`DNSSECQuery`]
/// messages with with [`DNSSECProof`]s.
pub struct OMDomainResolver<PH: Deref>
where
PH::Target: DNSResolverMessageHandler,
{
pub struct OMDomainResolver<PH: DNSResolverMessageHandler> {
state: Arc<OMResolverState>,
proof_handler: Option<PH>,
runtime_handle: Mutex<Option<Handle>>,
Expand All @@ -56,10 +52,7 @@ impl OMDomainResolver<IgnoringMessageHandler> {
}
}

impl<PH: Deref> OMDomainResolver<PH>
where
PH::Target: DNSResolverMessageHandler,
{
impl<PH: DNSResolverMessageHandler> OMDomainResolver<PH> {
/// Creates a new [`OMDomainResolver`] given the [`SocketAddr`] of a DNS resolver listening on
/// TCP (e.g. 8.8.8.8:53, 1.1.1.1:53 or your local DNS resolver).
///
Expand Down Expand Up @@ -103,10 +96,7 @@ where
}
}

impl<PH: Deref> DNSResolverMessageHandler for OMDomainResolver<PH>
where
PH::Target: DNSResolverMessageHandler,
{
impl<PH: DNSResolverMessageHandler> DNSResolverMessageHandler for OMDomainResolver<PH> {
fn handle_dnssec_proof(&self, proof: DNSSECProof, context: DNSResolverContext) {
if let Some(proof_handler) = &self.proof_handler {
proof_handler.handle_dnssec_proof(proof, context);
Expand Down Expand Up @@ -169,7 +159,6 @@ mod test {
use lightning::ln::msgs::{
BaseMessageHandler, ChannelMessageHandler, Init, OnionMessageHandler,
};
use lightning::ln::peer_handler::IgnoringMessageHandler;
use lightning::offers::offer::Offer;
use lightning::onion_message::dns_resolution::{HumanReadableName, OMNameResolver};
use lightning::onion_message::messenger::{
Expand All @@ -195,25 +184,13 @@ mod test {
eprintln!("{:<8} {}", self.node, record);
}
}
impl Deref for TestLogger {
type Target = TestLogger;
fn deref(&self) -> &TestLogger {
self
}
}

struct DummyNodeLookup {}
impl NodeIdLookUp for DummyNodeLookup {
fn next_node_id(&self, _: u64) -> Option<PublicKey> {
None
}
}
impl Deref for DummyNodeLookup {
type Target = DummyNodeLookup;
fn deref(&self) -> &DummyNodeLookup {
self
}
}

struct DirectlyConnectedRouter {}
impl MessageRouter for DirectlyConnectedRouter {
Expand Down Expand Up @@ -242,12 +219,6 @@ mod test {
)])
}
}
impl Deref for DirectlyConnectedRouter {
type Target = DirectlyConnectedRouter;
fn deref(&self) -> &DirectlyConnectedRouter {
self
}
}

struct URIResolver {
resolved_uri: Mutex<Option<(HumanReadableName, PaymentId, String)>>,
Expand Down
2 changes: 1 addition & 1 deletion lightning-liquidity/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lightning-liquidity"
version = "0.2.0+git"
version = "0.3.0+git"
authors = ["John Cantrell <johncantrell97@gmail.com>", "Elias Rohrer <dev@tnull.de>"]
homepage = "https://lightningdevkit.org/"
license = "MIT OR Apache-2.0"
Expand Down
Loading
Loading