Drop Deref indirection for BroadcasterInterface
What changed, and why it matters
This commit is a large but straightforward internal code cleanup in the Lightning Dev Kit Rust library. It removes an extra layer of pointer-like generic wrapping (the `Deref` indirection) around the transaction-broadcasting interface and instead uses the trait directly. The commit message says the goal is to reduce generics and verbosity while keeping the same behavior. There is no indication this fixes a security bug or changes runtime behavior in a way that introduces a vulnerability.
No security action required. Treat as a normal refactoring review: verify the blanket `BroadcasterInterface` impl compiles correctly and that no call sites accidentally pass an owned value where a reference was previously required. No advisory or CVE is warranted based on the supplied materials.
Security signals we found
No security-relevant keywords in commit title or message
No changes to cryptographic operations, serialization bounds, or transaction validation logic
No changes to access control, permissions, or secret handling
Refactoring only: trait bound simplification and removal of redundant `Deref` constraints
Blanket impl preserves existing behavior for references and smart pointers
Evidence from the diff
The patch refactors generic bounds across ChannelManager, ChainMonitor, ChannelMonitor, LiquidityManager, OutputSweeper, BumpTransactionEventHandler, and related types from T: Deref where T::Target: BroadcasterInterface to T: BroadcasterInterface. It also adds a blanket impl<T: BroadcasterInterface + ?Sized, B: Deref<Target = T>> BroadcasterInterface for B in chaininterface.rs so that smart pointers and references still implement the trait automatically. Call sites change from &*self.broadcaster to &self.broadcaster. This is a type-system simplification; the actual values passed and the broadcast_transactions calls remain the same.
Changed components
lightning/src/chain/chaininterface.rslightning/src/chain/chainmonitor.rslightning/src/chain/channelmonitor.rslightning/src/chain/onchaintx.rslightning/src/events/bump_transaction/mod.rslightning/src/events/bump_transaction/sync.rslightning/src/ln/channelmanager.rslightning/src/ln/functional_test_utils.rslightning/src/util/anchor_channel_reserves.rslightning/src/util/persist.rslightning/src/util/sweep.rslightning-background-processor/src/lib.rslightning-liquidity/src/lsps2/service.rslightning-liquidity/src/manager.rsInspect captured patch +208 / −268
diff --git a/lightning-background-processor/src/lib.rs b/lightning-background-processor/src/lib.rs
index c38d6df..0cefcca 100644
--- a/lightning-background-processor/src/lib.rs
+++ b/lightning-background-processor/src/lib.rs
@@ -492,10 +492,9 @@ pub const NO_LIQUIDITY_MANAGER: Option<
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,
>,
@@ -519,10 +518,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,
>,
@@ -956,7 +954,7 @@ pub async fn process_events_async<
'a,
UL: Deref,
CF: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
G: Deref<Target = NetworkGraph<L>>,
L: Deref,
@@ -989,7 +987,6 @@ 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>,
@@ -1457,7 +1454,7 @@ fn check_and_reset_sleeper<
pub async fn process_events_async_with_kv_store_sync<
UL: Deref,
CF: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
G: Deref<Target = NetworkGraph<L>>,
L: Deref,
@@ -1490,7 +1487,6 @@ 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>,
@@ -1571,7 +1567,7 @@ impl BackgroundProcessor {
'a,
UL: 'static + Deref,
CF: 'static + Deref,
- T: 'static + Deref,
+ T: 'static + BroadcasterInterface,
F: 'static + Deref + Send,
G: 'static + Deref<Target = NetworkGraph<L>>,
L: 'static + Deref + Send,
@@ -1604,7 +1600,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>,
diff --git a/lightning-liquidity/src/lsps2/service.rs b/lightning-liquidity/src/lsps2/service.rs
index 1b5bf96..756e8b3 100644
--- a/lightning-liquidity/src/lsps2/service.rs
+++ b/lightning-liquidity/src/lsps2/service.rs
@@ -702,11 +702,10 @@ macro_rules! get_or_insert_peer_state_entry {
}
/// The main object allowing to send and receive bLIP-52 / LSPS2 messages.
-pub struct LSPS2ServiceHandler<CM: Deref, K: Deref + Clone, T: Deref>
+pub struct LSPS2ServiceHandler<CM: Deref, K: Deref + Clone, T: BroadcasterInterface>
where
CM::Target: AChannelManager,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
channel_manager: CM,
kv_store: K,
@@ -721,11 +720,10 @@ where
persistence_in_flight: AtomicUsize,
}
-impl<CM: Deref, K: Deref + Clone, T: Deref + Clone> LSPS2ServiceHandler<CM, K, T>
+impl<CM: Deref, K: Deref + Clone, T: BroadcasterInterface + Clone> LSPS2ServiceHandler<CM, K, T>
where
CM::Target: AChannelManager,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
/// Constructs a `LSPS2ServiceHandler`.
pub(crate) fn new(
@@ -2044,12 +2042,11 @@ where
}
}
-impl<CM: Deref, K: Deref + Clone, T: Deref + Clone> LSPSProtocolMessageHandler
+impl<CM: Deref, K: Deref + Clone, T: BroadcasterInterface + Clone> LSPSProtocolMessageHandler
for LSPS2ServiceHandler<CM, K, T>
where
CM::Target: AChannelManager,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
type ProtocolMessage = LSPS2Message;
const PROTOCOL_NUMBER: Option<u16> = Some(2);
@@ -2119,20 +2116,19 @@ fn calculate_amount_to_forward_per_htlc(
/// A synchroneous wrapper around [`LSPS2ServiceHandler`] to be used in contexts where async is not
/// available.
-pub struct LSPS2ServiceHandlerSync<'a, CM: Deref, K: Deref + Clone, T: Deref + Clone>
+pub struct LSPS2ServiceHandlerSync<'a, CM: Deref, K: Deref + Clone, T: BroadcasterInterface + Clone>
where
CM::Target: AChannelManager,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
inner: &'a LSPS2ServiceHandler<CM, K, T>,
}
-impl<'a, CM: Deref, K: Deref + Clone, T: Deref + Clone> LSPS2ServiceHandlerSync<'a, CM, K, T>
+impl<'a, CM: Deref, K: Deref + Clone, T: BroadcasterInterface + Clone>
+ LSPS2ServiceHandlerSync<'a, CM, K, T>
where
CM::Target: AChannelManager,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
pub(crate) fn from_inner(inner: &'a LSPS2ServiceHandler<CM, K, T>) -> Self {
Self { inner }
diff --git a/lightning-liquidity/src/manager.rs b/lightning-liquidity/src/manager.rs
index 0b4f5ef..84a52e2 100644
--- a/lightning-liquidity/src/manager.rs
+++ b/lightning-liquidity/src/manager.rs
@@ -128,13 +128,19 @@ pub trait ALiquidityManager {
/// A type that may be dereferenced to [`Self::TimeProvider`].
type TP: Deref<Target = Self::TimeProvider> + Clone;
/// A type implementing [`BroadcasterInterface`].
- type BroadcasterInterface: BroadcasterInterface + ?Sized;
- /// A type that may be dereferenced to [`Self::BroadcasterInterface`].
- type T: Deref<Target = Self::BroadcasterInterface> + Clone;
+ type BroadcasterInterface: BroadcasterInterface + Clone;
/// Returns a reference to the actual [`LiquidityManager`] object.
fn get_lm(
&self,
- ) -> &LiquidityManager<Self::ES, Self::NS, Self::CM, Self::C, Self::K, Self::TP, Self::T>;
+ ) -> &LiquidityManager<
+ Self::ES,
+ Self::NS,
+ Self::CM,
+ Self::C,
+ Self::K,
+ Self::TP,
+ Self::BroadcasterInterface,
+ >;
}
impl<
@@ -144,7 +150,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> ALiquidityManager for LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -153,7 +159,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
type EntropySource = ES::Target;
type ES = ES;
@@ -167,8 +172,7 @@ where
type K = K;
type TimeProvider = TP::Target;
type TP = TP;
- type BroadcasterInterface = T::Target;
- type T = T;
+ type BroadcasterInterface = T;
fn get_lm(&self) -> &LiquidityManager<ES, NS, CM, C, K, TP, T> {
self
}
@@ -204,9 +208,7 @@ pub trait ALiquidityManagerSync {
/// A type that may be dereferenced to [`Self::TimeProvider`].
type TP: Deref<Target = Self::TimeProvider> + Clone;
/// A type implementing [`BroadcasterInterface`].
- type BroadcasterInterface: BroadcasterInterface + ?Sized;
- /// A type that may be dereferenced to [`Self::BroadcasterInterface`].
- type T: Deref<Target = Self::BroadcasterInterface> + Clone;
+ type BroadcasterInterface: BroadcasterInterface + Clone;
/// Returns the inner async [`LiquidityManager`] for testing purposes.
#[cfg(any(test, feature = "_test_utils"))]
fn get_lm_async(
@@ -218,12 +220,20 @@ pub trait ALiquidityManagerSync {
Self::C,
KVStoreSyncWrapper<Self::KS>,
Self::TP,
- Self::T,
+ Self::BroadcasterInterface,
>;
/// Returns a reference to the actual [`LiquidityManager`] object.
fn get_lm(
&self,
- ) -> &LiquidityManagerSync<Self::ES, Self::NS, Self::CM, Self::C, Self::KS, Self::TP, Self::T>;
+ ) -> &LiquidityManagerSync<
+ Self::ES,
+ Self::NS,
+ Self::CM,
+ Self::C,
+ Self::KS,
+ Self::TP,
+ Self::BroadcasterInterface,
+ >;
}
impl<
@@ -233,7 +243,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> ALiquidityManagerSync for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -242,7 +252,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
type EntropySource = ES::Target;
type ES = ES;
@@ -256,8 +265,7 @@ where
type KS = KS;
type TimeProvider = TP::Target;
type TP = TP;
- type BroadcasterInterface = T::Target;
- type T = T;
+ type BroadcasterInterface = T;
/// Returns the inner async [`LiquidityManager`] for testing purposes.
#[cfg(any(test, feature = "_test_utils"))]
fn get_lm_async(
@@ -269,7 +277,7 @@ where
Self::C,
KVStoreSyncWrapper<Self::KS>,
Self::TP,
- Self::T,
+ Self::BroadcasterInterface,
> {
&self.inner
}
@@ -304,7 +312,7 @@ pub struct LiquidityManager<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> where
ES::Target: EntropySource,
NS::Target: NodeSigner,
@@ -312,7 +320,6 @@ pub struct LiquidityManager<
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
pending_messages: Arc<MessageQueue>,
pending_events: Arc<EventQueue<K>>,
@@ -342,7 +349,7 @@ impl<
CM: Deref + Clone,
C: Deref + Clone,
K: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> LiquidityManager<ES, NS, CM, C, K, DefaultTimeProvider, T>
where
ES::Target: EntropySource,
@@ -350,7 +357,6 @@ where
CM::Target: AChannelManager,
C::Target: Filter,
K::Target: KVStore,
- T::Target: BroadcasterInterface,
{
/// Constructor for the [`LiquidityManager`] using the default system clock
///
@@ -384,7 +390,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -393,7 +399,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
/// Constructor for the [`LiquidityManager`] with a custom time provider.
///
@@ -811,7 +816,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> CustomMessageReader for LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -820,7 +825,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
type CustomMessage = RawLSPSMessage;
@@ -843,7 +847,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> CustomMessageHandler for LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -852,7 +856,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn handle_custom_message(
&self, msg: Self::CustomMessage, sender_node_id: PublicKey,
@@ -977,7 +980,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> Listen for LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -986,7 +989,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn filtered_block_connected(
&self, header: &bitcoin::block::Header, txdata: &chain::transaction::TransactionData,
@@ -1023,7 +1025,7 @@ impl<
C: Deref + Clone,
K: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> Confirm for LiquidityManager<ES, NS, CM, C, K, TP, T>
where
ES::Target: EntropySource,
@@ -1032,7 +1034,6 @@ where
C::Target: Filter,
K::Target: KVStore,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn transactions_confirmed(
&self, _header: &bitcoin::block::Header, _txdata: &chain::transaction::TransactionData,
@@ -1069,7 +1070,7 @@ pub struct LiquidityManagerSync<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> where
ES::Target: EntropySource,
NS::Target: NodeSigner,
@@ -1077,7 +1078,6 @@ pub struct LiquidityManagerSync<
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
inner: LiquidityManager<ES, NS, CM, C, KVStoreSyncWrapper<KS>, TP, T>,
}
@@ -1089,7 +1089,7 @@ impl<
CM: Deref + Clone,
C: Deref + Clone,
KS: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> LiquidityManagerSync<ES, NS, CM, C, KS, DefaultTimeProvider, T>
where
ES::Target: EntropySource,
@@ -1097,7 +1097,6 @@ where
CM::Target: AChannelManager,
KS::Target: KVStoreSync,
C::Target: Filter,
- T::Target: BroadcasterInterface,
{
/// Constructor for the [`LiquidityManagerSync`] using the default system clock
///
@@ -1142,7 +1141,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -1151,7 +1150,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
/// Constructor for the [`LiquidityManagerSync`] with a custom time provider.
///
@@ -1312,7 +1310,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> CustomMessageReader for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -1321,7 +1319,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
type CustomMessage = RawLSPSMessage;
@@ -1339,7 +1336,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> CustomMessageHandler for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -1348,7 +1345,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn handle_custom_message(
&self, msg: Self::CustomMessage, sender_node_id: PublicKey,
@@ -1386,7 +1382,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> Listen for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -1395,7 +1391,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn filtered_block_connected(
&self, header: &bitcoin::block::Header, txdata: &chain::transaction::TransactionData,
@@ -1416,7 +1411,7 @@ impl<
C: Deref + Clone,
KS: Deref + Clone,
TP: Deref + Clone,
- T: Deref + Clone,
+ T: BroadcasterInterface + Clone,
> Confirm for LiquidityManagerSync<ES, NS, CM, C, KS, TP, T>
where
ES::Target: EntropySource,
@@ -1425,7 +1420,6 @@ where
C::Target: Filter,
KS::Target: KVStoreSync,
TP::Target: TimeProvider,
- T::Target: BroadcasterInterface,
{
fn transactions_confirmed(
&self, header: &bitcoin::block::Header, txdata: &chain::transaction::TransactionData,
diff --git a/lightning/src/chain/chaininterface.rs b/lightning/src/chain/chaininterface.rs
index 117e9b3..d21017c 100644
--- a/lightning/src/chain/chaininterface.rs
+++ b/lightning/src/chain/chaininterface.rs
@@ -48,6 +48,12 @@ pub trait BroadcasterInterface {
fn broadcast_transactions(&self, txs: &[&Transaction]);
}
+impl<T: BroadcasterInterface + ?Sized, B: Deref<Target = T>> BroadcasterInterface for B {
+ fn broadcast_transactions(&self, txs: &[&Transaction]) {
+ self.deref().broadcast_transactions(txs)
+ }
+}
+
/// An enum that represents the priority at which we want a transaction to confirm used for feerate
/// estimation.
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
diff --git a/lightning/src/chain/chainmonitor.rs b/lightning/src/chain/chainmonitor.rs
index 9fd6383..678c7b6 100644
--- a/lightning/src/chain/chainmonitor.rs
+++ b/lightning/src/chain/chainmonitor.rs
@@ -261,14 +261,13 @@ pub struct AsyncPersister<
L: Deref + MaybeSend + MaybeSync + 'static,
ES: Deref + MaybeSend + MaybeSync + 'static,
SP: Deref + MaybeSend + MaybeSync + 'static,
- BI: Deref + MaybeSend + MaybeSync + 'static,
+ BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
FE: Deref + MaybeSend + MaybeSync + 'static,
> where
K::Target: KVStore + MaybeSync,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
persister: MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>,
@@ -281,7 +280,7 @@ impl<
L: Deref + MaybeSend + MaybeSync + 'static,
ES: Deref + MaybeSend + MaybeSync + 'static,
SP: Deref + MaybeSend + MaybeSync + 'static,
- BI: Deref + MaybeSend + MaybeSync + 'static,
+ BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
FE: Deref + MaybeSend + MaybeSync + 'static,
> Deref for AsyncPersister<K, S, L, ES, SP, BI, FE>
where
@@ -289,7 +288,6 @@ where
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
type Target = Self;
@@ -304,7 +302,7 @@ impl<
L: Deref + MaybeSend + MaybeSync + 'static,
ES: Deref + MaybeSend + MaybeSync + 'static,
SP: Deref + MaybeSend + MaybeSync + 'static,
- BI: Deref + MaybeSend + MaybeSync + 'static,
+ BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
FE: Deref + MaybeSend + MaybeSync + 'static,
> Persist<<SP::Target as SignerProvider>::EcdsaSigner> for AsyncPersister<K, S, L, ES, SP, BI, FE>
where
@@ -312,7 +310,6 @@ where
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
<SP::Target as SignerProvider>::EcdsaSigner: MaybeSend + 'static,
{
@@ -362,14 +359,13 @@ where
pub struct ChainMonitor<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
ES: Deref,
> where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -404,7 +400,7 @@ impl<
S: FutureSpawner,
SP: Deref + MaybeSend + MaybeSync + 'static,
C: Deref,
- T: Deref + MaybeSend + MaybeSync + 'static,
+ T: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
F: Deref + MaybeSend + MaybeSync + 'static,
L: Deref + MaybeSend + MaybeSync + 'static,
ES: Deref + MaybeSend + MaybeSync + 'static,
@@ -421,7 +417,6 @@ impl<
K::Target: KVStore + MaybeSync,
SP::Target: SignerProvider + Sized,
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
ES::Target: EntropySource + Sized,
@@ -462,7 +457,7 @@ impl<
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -470,7 +465,6 @@ impl<
> ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -895,7 +889,7 @@ where
let monitors = self.monitors.read().unwrap();
for (_, monitor_holder) in &*monitors {
monitor_holder.monitor.rebroadcast_pending_claims(
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -911,7 +905,7 @@ where
if let Some(channel_id) = monitor_opt {
if let Some(monitor_holder) = monitors.get(&channel_id) {
monitor_holder.monitor.signer_unblocked(
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -919,7 +913,7 @@ where
} else {
for (_, monitor_holder) in &*monitors {
monitor_holder.monitor.signer_unblocked(
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -1109,7 +1103,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1117,7 +1111,6 @@ impl<
> BaseMessageHandler for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -1148,7 +1141,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1156,7 +1149,6 @@ impl<
> SendOnlyMessageHandler for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -1167,7 +1159,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1175,7 +1167,6 @@ impl<
> chain::Listen for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -1193,7 +1184,7 @@ where
header,
txdata,
height,
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -1220,7 +1211,7 @@ where
for monitor_state in monitor_states.values() {
monitor_state.monitor.blocks_disconnected(
fork_point,
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
);
@@ -1231,7 +1222,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1239,7 +1230,6 @@ impl<
> chain::Confirm for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -1258,7 +1248,7 @@ where
header,
txdata,
height,
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -1273,7 +1263,7 @@ where
for monitor_state in monitor_states.values() {
monitor_state.monitor.transaction_unconfirmed(
txid,
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
);
@@ -1294,7 +1284,7 @@ where
monitor.best_block_updated(
header,
height,
- &*self.broadcaster,
+ &self.broadcaster,
&*self.fee_estimator,
&self.logger,
)
@@ -1326,7 +1316,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1334,7 +1324,6 @@ impl<
> chain::Watch<ChannelSigner> for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
@@ -1522,7 +1511,7 @@ where
impl<
ChannelSigner: EcdsaChannelSigner,
C: Deref,
- T: Deref,
+ T: BroadcasterInterface,
F: Deref,
L: Deref,
P: Deref,
@@ -1530,7 +1519,6 @@ impl<
> events::EventsProvider for ChainMonitor<ChannelSigner, C, T, F, L, P, ES>
where
C::Target: chain::Filter,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
P::Target: Persist<ChannelSigner>,
diff --git a/lightning/src/chain/channelmonitor.rs b/lightning/src/chain/channelmonitor.rs
index fc9ffec..5c531cd 100644
--- a/lightning/src/chain/channelmonitor.rs
+++ b/lightning/src/chain/channelmonitor.rs
@@ -2058,7 +2058,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
///
/// [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
#[rustfmt::skip]
- pub(crate) fn provide_payment_preimage_unsafe_legacy<B: Deref, F: Deref, L: Deref>(
+ pub(crate) fn provide_payment_preimage_unsafe_legacy<B: BroadcasterInterface, F: Deref, L: Deref>(
&self,
payment_hash: &PaymentHash,
payment_preimage: &PaymentPreimage,
@@ -2066,7 +2066,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
fee_estimator: &LowerBoundedFeeEstimator<F>,
logger: &L,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2083,11 +2082,10 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
/// itself.
///
/// panics if the given update is not the next update by update_id.
- pub fn update_monitor<B: Deref, F: Deref, L: Deref>(
+ pub fn update_monitor<B: BroadcasterInterface, F: Deref, L: Deref>(
&self, updates: &ChannelMonitorUpdate, broadcaster: &B, fee_estimator: &F, logger: &L,
) -> Result<(), ()>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2338,10 +2336,9 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
/// transactions that cannot be confirmed until the funding transaction is visible.
///
/// [`Event::BumpTransaction`]: crate::events::Event::BumpTransaction
- pub fn broadcast_latest_holder_commitment_txn<B: Deref, F: Deref, L: Deref>(
+ pub fn broadcast_latest_holder_commitment_txn<B: BroadcasterInterface, F: Deref, L: Deref>(
&self, broadcaster: &B, fee_estimator: &F, logger: &L,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2382,7 +2379,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
///
/// [`get_outputs_to_watch`]: #method.get_outputs_to_watch
#[rustfmt::skip]
- pub fn block_connected<B: Deref, F: Deref, L: Deref>(
+ pub fn block_connected<B: BroadcasterInterface, F: Deref, L: Deref>(
&self,
header: &Header,
txdata: &TransactionData,
@@ -2392,7 +2389,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
logger: &L,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2404,10 +2400,9 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
/// Determines if the disconnected block contained any transactions of interest and updates
/// appropriately.
- pub fn blocks_disconnected<B: Deref, F: Deref, L: Deref>(
+ pub fn blocks_disconnected<B: BroadcasterInterface, F: Deref, L: Deref>(
&self, fork_point: BestBlock, broadcaster: B, fee_estimator: F, logger: &L,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2424,7 +2419,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
///
/// [`block_connected`]: Self::block_connected
#[rustfmt::skip]
- pub fn transactions_confirmed<B: Deref, F: Deref, L: Deref>(
+ pub fn transactions_confirmed<B: BroadcasterInterface, F: Deref, L: Deref>(
&self,
header: &Header,
txdata: &TransactionData,
@@ -2434,7 +2429,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
logger: &L,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2452,14 +2446,13 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
///
/// [`blocks_disconnected`]: Self::blocks_disconnected
#[rustfmt::skip]
- pub fn transaction_unconfirmed<B: Deref, F: Deref, L: Deref>(
+ pub fn transaction_unconfirmed<B: BroadcasterInterface, F: Deref, L: Deref>(
&self,
txid: &Txid,
broadcaster: B,
fee_estimator: F,
logger: &L,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2479,7 +2472,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
///
/// [`block_connected`]: Self::block_connected
#[rustfmt::skip]
- pub fn best_block_updated<B: Deref, F: Deref, L: Deref>(
+ pub fn best_block_updated<B: BroadcasterInterface, F: Deref, L: Deref>(
&self,
header: &Header,
height: u32,
@@ -2488,7 +2481,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
logger: &L,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2526,11 +2518,10 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
/// invoking this every 30 seconds, or lower if running in an environment with spotty
/// connections, like on mobile.
#[rustfmt::skip]
- pub fn rebroadcast_pending_claims<B: Deref, F: Deref, L: Deref>(
+ pub fn rebroadcast_pending_claims<B: BroadcasterInterface, F: Deref, L: Deref>(
&self, broadcaster: B, fee_estimator: F, logger: &L,
)
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -2554,11 +2545,10 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
/// Triggers rebroadcasts of pending claims from a force-closed channel after a transaction
/// signature generation failure.
#[rustfmt::skip]
- pub fn signer_unblocked<B: Deref, F: Deref, L: Deref>(
+ pub fn signer_unblocked<B: BroadcasterInterface, F: Deref, L: Deref>(
&self, broadcaster: B, fee_estimator: F, logger: &L,
)
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -3808,12 +3798,11 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
///
/// Note that this is often called multiple times for the same payment and must be idempotent.
#[rustfmt::skip]
- fn provide_payment_preimage<B: Deref, F: Deref, L: Deref>(
+ fn provide_payment_preimage<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self, payment_hash: &PaymentHash, payment_preimage: &PaymentPreimage,
payment_info: &Option<PaymentClaimDetails>, broadcaster: &B,
fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &WithContext<L>)
- where B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
+ where F::Target: FeeEstimator,
L::Target: Logger,
{
self.payment_preimages.entry(payment_hash.clone())
@@ -3987,12 +3976,11 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
/// See also [`ChannelMonitor::broadcast_latest_holder_commitment_txn`].
///
/// [`ChannelMonitor::broadcast_latest_holder_commitment_txn`]: crate::chain::channelmonitor::ChannelMonitor::broadcast_latest_holder_commitment_txn
- pub(crate) fn queue_latest_holder_commitment_txn_for_broadcast<B: Deref, F: Deref, L: Deref>(
+ pub(crate) fn queue_latest_holder_commitment_txn_for_broadcast<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self, broadcaster: &B, fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &WithContext<L>,
require_funding_seen: bool,
)
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -4190,11 +4178,10 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn update_monitor<B: Deref, F: Deref, L: Deref>(
+ fn update_monitor<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self, updates: &ChannelMonitorUpdate, broadcaster: &B, fee_estimator: &F, logger: &WithContext<L>
) -> Result<(), ()>
- where B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
+ where F::Target: FeeEstimator,
L::Target: Logger,
{
if self.latest_update_id == LEGACY_CLOSED_CHANNEL_UPDATE_ID && updates.update_id == LEGACY_CLOSED_CHANNEL_UPDATE_ID {
@@ -5286,12 +5273,11 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn block_connected<B: Deref, F: Deref, L: Deref>(
+ fn block_connected<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self, header: &Header, txdata: &TransactionData, height: u32, broadcaster: B,
fee_estimator: F, logger: &WithContext<L>,
) -> Vec<TransactionOutputs>
- where B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
+ where F::Target: FeeEstimator,
L::Target: Logger,
{
let block_hash = header.block_hash();
@@ -5302,7 +5288,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn best_block_updated<B: Deref, F: Deref, L: Deref>(
+ fn best_block_updated<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self,
header: &Header,
height: u32,
@@ -5311,7 +5297,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
logger: &WithContext<L>,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -5334,7 +5319,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn transactions_confirmed<B: Deref, F: Deref, L: Deref>(
+ fn transactions_confirmed<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self,
header: &Header,
txdata: &TransactionData,
@@ -5344,7 +5329,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
logger: &WithContext<L>,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -5619,7 +5603,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
/// `conf_height` should be set to the height at which any new transaction(s)/block(s) were
/// confirmed at, even if it is not the current best height.
#[rustfmt::skip]
- fn block_confirmed<B: Deref, F: Deref, L: Deref>(
+ fn block_confirmed<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self,
conf_height: u32,
conf_hash: BlockHash,
@@ -5631,7 +5615,6 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
logger: &WithContext<L>,
) -> Vec<TransactionOutputs>
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -5847,10 +5830,9 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn blocks_disconnected<B: Deref, F: Deref, L: Deref>(
+ fn blocks_disconnected<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self, fork_point: BestBlock, broadcaster: B, fee_estimator: F, logger: &WithContext<L>
- ) where B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
+ ) where F::Target: FeeEstimator,
L::Target: Logger,
{
let new_height = fork_point.height;
@@ -5896,14 +5878,13 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
#[rustfmt::skip]
- fn transaction_unconfirmed<B: Deref, F: Deref, L: Deref>(
+ fn transaction_unconfirmed<B: BroadcasterInterface, F: Deref, L: Deref>(
&mut self,
txid: &Txid,
broadcaster: B,
fee_estimator: &LowerBoundedFeeEstimator<F>,
logger: &WithContext<L>,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
@@ -6357,39 +6338,38 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitorImpl<Signer> {
}
}
-impl<Signer: EcdsaChannelSigner, T: Deref, F: Deref, L: Deref> chain::Listen
+impl<Signer: EcdsaChannelSigner, T: BroadcasterInterface, F: Deref, L: Deref> chain::Listen
for (ChannelMonitor<Signer>, T, F, L)
where
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
fn filtered_block_connected(&self, header: &Header, txdata: &TransactionData, height: u32) {
- self.0.block_connected(header, txdata, height, &*self.1, &*self.2, &self.3);
+ self.0.block_connected(header, txdata, height, &self.1, &*self.2, &self.3);
}
fn blocks_disconnected(&self, fork_point: BestBlock) {
- self.0.blocks_disconnected(fork_point, &*self.1, &*self.2, &self.3);
+ self.0.blocks_disconnected(fork_point, &self.1, &*self.2, &self.3);
}
}
-impl<Signer: EcdsaChannelSigner, M, T: Deref, F: Deref, L: Deref> chain::Confirm for (M, T, F, L)
+impl<Signer: EcdsaChannelSigner, M, T: BroadcasterInterface, F: Deref, L: Deref> chain::Confirm
+ for (M, T, F, L)
where
M: Deref<Target = ChannelMonitor<Signer>>,
- T::Target: BroadcasterInterface,
F::Target: FeeEstimator,
L::Target: Logger,
{
fn transactions_confirmed(&self, header: &Header, txdata: &TransactionData, height: u32) {
- self.0.transactions_confirmed(header, txdata, height, &*self.1, &*self.2, &self.3);
+ self.0.transactions_confirmed(header, txdata, height, &self.1, &*self.2, &self.3);
}
fn transaction_unconfirmed(&self, txid: &Txid) {
- self.0.transaction_unconfirmed(txid, &*self.1, &*self.2, &self.3);
+ self.0.transaction_unconfirmed(txid, &self.1, &*self.2, &self.3);
}
fn best_block_updated(&self, header: &Header, height: u32) {
- self.0.best_block_updated(header, height, &*self.1, &*self.2, &self.3);
+ self.0.best_block_updated(header, height, &self.1, &*self.2, &self.3);
}
fn get_relevant_txids(&self) -> Vec<(Txid, u32, Option<BlockHash>)> {
diff --git a/lightning/src/chain/onchaintx.rs b/lightning/src/chain/onchaintx.rs
index fb65aa0..321b600 100644
--- a/lightning/src/chain/onchaintx.rs
+++ b/lightning/src/chain/onchaintx.rs
@@ -485,13 +485,12 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
/// invoking this every 30 seconds, or lower if running in an environment with spotty
/// connections, like on mobile.
#[rustfmt::skip]
- pub(super) fn rebroadcast_pending_claims<B: Deref, F: Deref, L: Logger>(
+ pub(super) fn rebroadcast_pending_claims<B: BroadcasterInterface, F: Deref, L: Logger>(
&mut self, current_height: u32, feerate_strategy: FeerateStrategy, broadcaster: &B,
conf_target: ConfirmationTarget, destination_script: &Script,
fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &L,
)
where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
{
let mut bump_requests = Vec::with_capacity(self.pending_claim_requests.len());
@@ -761,14 +760,11 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
/// does not need to equal the current blockchain tip height, which should be provided via
/// `cur_height`, however it must never be higher than `cur_height`.
#[rustfmt::skip]
- pub(super) fn update_claims_view_from_requests<B: Deref, F: Deref, L: Logger>(
+ pub(super) fn update_claims_view_from_requests<B: BroadcasterInterface, F: Deref, L: Logger>(
&mut self, mut requests: Vec<PackageTemplate>, conf_height: u32, cur_height: u32,
broadcaster: &B, conf_target: ConfirmationTarget, destination_script: &Script,
fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &L
- ) where
- B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
- {
+ ) where F::Target: FeeEstimator, {
if !requests.is_empty() {
log_debug!(logger, "Updating claims view at height {} with {} claim requests", cur_height, requests.len());
}
@@ -912,12 +908,11 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
/// confirmed. This does not need to equal the current blockchain tip height, which should be
/// provided via `cur_height`, however it must never be higher than `cur_height`.
#[rustfmt::skip]
- pub(super) fn update_claims_view_from_matched_txn<B: Deref, F: Deref, L: Logger>(
+ pub(super) fn update_claims_view_from_matched_txn<B: BroadcasterInterface, F: Deref, L: Logger>(
&mut self, txn_matched: &[&Transaction], conf_height: u32, conf_hash: BlockHash,
cur_height: u32, broadcaster: &B, conf_target: ConfirmationTarget,
destination_script: &Script, fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &L
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
{
let mut have_logged_intro = false;
@@ -1110,7 +1105,7 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
}
#[rustfmt::skip]
- pub(super) fn transaction_unconfirmed<B: Deref, F: Deref, L: Logger>(
+ pub(super) fn transaction_unconfirmed<B: BroadcasterInterface, F: Deref, L: Logger>(
&mut self,
txid: &Txid,
broadcaster: &B,
@@ -1119,7 +1114,6 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
fee_estimator: &LowerBoundedFeeEstimator<F>,
logger: &L,
) where
- B::Target: BroadcasterInterface,
F::Target: FeeEstimator,
{
let mut height = None;
@@ -1138,13 +1132,10 @@ impl<ChannelSigner: EcdsaChannelSigner> OnchainTxHandler<ChannelSigner> {
}
#[rustfmt::skip]
- pub(super) fn blocks_disconnected<B: Deref, F: Deref, L: Logger>(
+ pub(super) fn blocks_disconnected<B: BroadcasterInterface, F: Deref, L: Logger>(
&mut self, new_best_height: u32, broadcaster: &B, conf_target: ConfirmationTarget,
destination_script: &Script, fee_estimator: &LowerBoundedFeeEstimator<F>, logger: &L,
- )
- where B::Target: BroadcasterInterface,
- F::Target: FeeEstimator,
- {
+ ) where F::Target: FeeEstimator, {
let mut bump_candidates = new_hash_map();
let onchain_events_awaiting_threshold_conf =
self.onchain_events_awaiting_threshold_conf.drain(..).collect::<Vec<_>>();
diff --git a/lightning/src/events/bump_transaction/mod.rs b/lightning/src/events/bump_transaction/mod.rs
index e141d9b..b45b659 100644
--- a/lightning/src/events/bump_transaction/mod.rs
+++ b/lightning/src/events/bump_transaction/mod.rs
@@ -694,9 +694,8 @@ where
///
/// [`Event::BumpTransaction`]: crate::events::Event::BumpTransaction
// Note that updates to documentation on this struct should be copied to the synchronous version.
-pub struct BumpTransactionEventHandler<B: Deref, C: Deref, SP: Deref, L: Deref>
+pub struct BumpTransactionEventHandler<B: BroadcasterInterface, C: Deref, SP: Deref, L: Deref>
where
- B::Target: BroadcasterInterface,
C::Target: CoinSelectionSource,
SP::Target: SignerProvider,
L::Target: Logger,
@@ -708,9 +707,9 @@ where
secp: Secp256k1<secp256k1::All>,
}
-impl<B: Deref, C: Deref, SP: Deref, L: Deref> BumpTransactionEventHandler<B, C, SP, L>
+impl<B: BroadcasterInterface, C: Deref, SP: Deref, L: Deref>
+ BumpTransactionEventHandler<B, C, SP, L>
where
- B::Target: BroadcasterInterface,
C::Target: CoinSelectionSource,
SP::Target: SignerProvider,
L::Target: Logger,
diff --git a/lightning/src/events/bump_transaction/sync.rs b/lightning/src/events/bump_transaction/sync.rs
index 1328c2c..bf0668c 100644
--- a/lightning/src/events/bump_transaction/sync.rs
+++ b/lightning/src/events/bump_transaction/sync.rs
@@ -267,9 +267,8 @@ where
///
/// [`Event::BumpTransaction`]: crate::events::Event::BumpTransaction
// Note that updates to documentation on this struct should be copied to the synchronous version.
-pub struct BumpTransactionEventHandlerSync<B: Deref, C: Deref, SP: Deref, L: Deref>
+pub struct BumpTransactionEventHandlerSync<B: BroadcasterInterface, C: Deref, SP: Deref, L: Deref>
where
- B::Target: BroadcasterInterface,
C::Target: CoinSelectionSourceSync,
SP::Target: SignerProvider,
L::Target: Logger,
@@ -278,9 +277,9 @@ where
BumpTransactionEventHandler<B, CoinSelectionSourceSyncWrapper<C>, SP, L>,
}
-impl<B: Deref, C: Deref, SP: Deref, L: Deref> BumpTransactionEventHandlerSync<B, C, SP, L>
+impl<B: BroadcasterInterface, C: Deref, SP: Deref, L: Deref>
+ BumpTransactionEventHandlerSync<B, C, SP, L>
where
- B::Target: BroadcasterInterface,
C::Target: CoinSelectionSourceSync,
SP::Target: SignerProvider,
L::Target: Logger,
diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs
index 0f9adfc..7191e84 100644
--- a/lightning/src/ln/channelmanager.rs
+++ b/lightning/src/ln/channelmanager.rs
@@ -1789,9 +1789,7 @@ pub trait AChannelManager {
/// A type that may be dereferenced to [`Self::Watch`].
type M: Deref<Target = Self::Watch>;
/// A type implementing [`BroadcasterInterface`].
- type Broadcaster: BroadcasterInterface + ?Sized;
- /// A type that may be dereferenced to [`Self::Broadcaster`].
- type T: Deref<Target = Self::Broadcaster>;
+ type Broadcaster: BroadcasterInterface;
/// A type implementing [`EntropySource`].
type EntropySource: EntropySource + ?Sized;
/// A type that may be dereferenced to [`Self::EntropySource`].
@@ -1827,7 +1825,7 @@ pub trait AChannelManager {
&self,
) -> &ChannelManager<
Self::M,
- Self::T,
+ Self::Broadcaster,
Self::ES,
Self::NS,
Self::SP,
@@ -1840,7 +1838,7 @@ pub trait AChannelManager {
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -1851,7 +1849,6 @@ impl<
> AChannelManager for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -1862,8 +1859,7 @@ where
{
type Watch = M::Target;
type M = M;
- type Broadcaster = T::Target;
- type T = T;
+ type Broadcaster = T;
type EntropySource = ES::Target;
type ES = ES;
type NodeSigner = NS::Target;
@@ -2625,7 +2621,7 @@ where
/// [`read`]: ReadableArgs::read
pub struct ChannelManager<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -2635,7 +2631,6 @@ pub struct ChannelManager<
L: Deref,
> where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -3415,7 +3410,7 @@ fn create_htlc_intercepted_event(
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -3426,7 +3421,6 @@ impl<
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -13556,7 +13550,7 @@ macro_rules! create_refund_builder { ($self: ident, $builder: ty) => {
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -13567,7 +13561,6 @@ impl<
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -14433,7 +14426,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -14444,7 +14437,6 @@ impl<
> BaseMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -14804,7 +14796,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -14815,7 +14807,6 @@ impl<
> EventsProvider for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -14839,7 +14830,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -14850,7 +14841,6 @@ impl<
> chain::Listen for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -14900,7 +14890,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -14911,7 +14901,6 @@ impl<
> chain::Confirm for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -15073,7 +15062,7 @@ pub(super) enum FundingConfirmedMessage {
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -15084,7 +15073,6 @@ impl<
> ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -15435,7 +15423,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -15446,7 +15434,6 @@ impl<
> ChannelMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -16010,7 +15997,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -16021,7 +16008,6 @@ impl<
> OffersMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -16228,7 +16214,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -16239,7 +16225,6 @@ impl<
> AsyncPaymentsMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -16473,7 +16458,7 @@ where
#[cfg(feature = "dnssec")]
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -16484,7 +16469,6 @@ impl<
> DNSResolverMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -16541,7 +16525,7 @@ where
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -16552,7 +16536,6 @@ impl<
> NodeIdLookUp for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -17057,7 +17040,7 @@ impl_writeable_tlv_based!(PendingInboundPayment, {
impl<
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -17068,7 +17051,6 @@ impl<
> Writeable for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -17424,7 +17406,7 @@ impl Readable for VecDeque<(Event, Option<EventCompletionAction>)> {
pub struct ChannelManagerReadArgs<
'a,
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -17434,7 +17416,6 @@ pub struct ChannelManagerReadArgs<
L: Deref + Clone,
> where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -17504,7 +17485,7 @@ pub struct ChannelManagerReadArgs<
impl<
'a,
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -17515,7 +17496,6 @@ impl<
> ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -17592,7 +17572,7 @@ fn dedup_decode_update_add_htlcs<L: Deref>(
impl<
'a,
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -17604,7 +17584,6 @@ impl<
for (BlockHash, Arc<ChannelManager<M, T, ES, NS, SP, F, R, MR, L>>)
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
@@ -17625,7 +17604,7 @@ where
impl<
'a,
M: Deref,
- T: Deref,
+ T: BroadcasterInterface,
ES: Deref,
NS: Deref,
SP: Deref,
@@ -17637,7 +17616,6 @@ impl<
for (BlockHash, ChannelManager<M, T, ES, NS, SP, F, R, MR, L>)
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
- T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
diff --git a/lightning/src/ln/functional_test_utils.rs b/lightning/src/ln/functional_test_utils.rs
index 9aaa0d5..69c18d9 100644
--- a/lightning/src/ln/functional_test_utils.rs
+++ b/lightning/src/ln/functional_test_utils.rs
@@ -733,7 +733,7 @@ pub trait NodeHolder {
&self,
) -> &ChannelManager<
<Self::CM as AChannelManager>::M,
- <Self::CM as AChannelManager>::T,
+ <Self::CM as AChannelManager>::Broadcaster,
<Self::CM as AChannelManager>::ES,
<Self::CM as AChannelManager>::NS,
<Self::CM as AChannelManager>::SP,
@@ -750,7 +750,7 @@ impl<H: NodeHolder> NodeHolder for &H {
&self,
) -> &ChannelManager<
<Self::CM as AChannelManager>::M,
- <Self::CM as AChannelManager>::T,
+ <Self::CM as AChannelManager>::Broadcaster,
<Self::CM as AChannelManager>::ES,
<Self::CM as AChannelManager>::NS,
<Self::CM as AChannelManager>::SP,
diff --git a/lightning/src/util/anchor_channel_reserves.rs b/lightning/src/util/anchor_channel_reserves.rs
index e50e103..26212ca 100644
--- a/lightning/src/util/anchor_channel_reserves.rs
+++ b/lightning/src/util/anchor_channel_reserves.rs
@@ -273,7 +273,7 @@ pub fn can_support_additional_anchor_channel<
AChannelManagerRef: Deref,
ChannelSigner: EcdsaChannelSigner,
FilterRef: Deref,
- BroadcasterRef: Deref,
+ B: BroadcasterInterface,
EstimatorRef: Deref,
LoggerRef: Deref,
PersistRef: Deref,
@@ -282,7 +282,7 @@ pub fn can_support_additional_anchor_channel<
Target = ChainMonitor<
ChannelSigner,
FilterRef,
- BroadcasterRef,
+ B,
EstimatorRef,
LoggerRef,
PersistRef,
@@ -296,7 +296,6 @@ pub fn can_support_additional_anchor_channel<
where
AChannelManagerRef::Target: AChannelManager,
FilterRef::Target: Filter,
- BroadcasterRef::Target: BroadcasterInterface,
EstimatorRef::Target: FeeEstimator,
LoggerRef::Target: Logger,
PersistRef::Target: Persist<ChannelSigner>,
diff --git a/lightning/src/util/persist.rs b/lightning/src/util/persist.rs
index 2e1e880..92a565a 100644
--- a/lightning/src/util/persist.rs
+++ b/lightning/src/util/persist.rs
@@ -588,25 +588,28 @@ fn poll_sync_future<F: Future>(future: F) -> F::Output {
/// If you have many stale updates stored (such as after a crash with pending lazy deletes), and
/// would like to get rid of them, consider using the
/// [`MonitorUpdatingPersister::cleanup_stale_updates`] function.
-pub struct MonitorUpdatingPersister<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>(
- MonitorUpdatingPersisterAsync<KVStoreSyncWrapper<K>, PanicingSpawner, L, ES, SP, BI, FE>,
-)
+pub struct MonitorUpdatingPersister<
+ K: Deref,
+ L: Deref,
+ ES: Deref,
+ SP: Deref,
+ BI: BroadcasterInterface,
+ FE: Deref,
+>(MonitorUpdatingPersisterAsync<KVStoreSyncWrapper<K>, PanicingSpawner, L, ES, SP, BI, FE>)
where
K::Target: KVStoreSync,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator;
-impl<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
+impl<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: BroadcasterInterface, FE: Deref>
MonitorUpdatingPersister<K, L, ES, SP, BI, FE>
where
K::Target: KVStoreSync,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
/// Constructs a new [`MonitorUpdatingPersister`].
@@ -697,7 +700,7 @@ impl<
L: Deref,
ES: Deref,
SP: Deref,
- BI: Deref,
+ BI: BroadcasterInterface,
FE: Deref,
> Persist<ChannelSigner> for MonitorUpdatingPersister<K, L, ES, SP, BI, FE>
where
@@ -705,7 +708,6 @@ where
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
/// Persists a new channel. This means writing the entire monitor to the
@@ -783,7 +785,7 @@ pub struct MonitorUpdatingPersisterAsync<
L: Deref,
ES: Deref,
SP: Deref,
- BI: Deref,
+ BI: BroadcasterInterface,
FE: Deref,
>(Arc<MonitorUpdatingPersisterAsyncInner<K, S, L, ES, SP, BI, FE>>)
where
@@ -791,7 +793,6 @@ where
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator;
struct MonitorUpdatingPersisterAsyncInner<
@@ -800,14 +801,13 @@ struct MonitorUpdatingPersisterAsyncInner<
L: Deref,
ES: Deref,
SP: Deref,
- BI: Deref,
+ BI: BroadcasterInterface,
FE: Deref,
> where
K::Target: KVStore,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
kv_store: K,
@@ -821,14 +821,20 @@ struct MonitorUpdatingPersisterAsyncInner<
fee_estimator: FE,
}
-impl<K: Deref, S: FutureSpawner, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
- MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>
+impl<
+ K: Deref,
+ S: FutureSpawner,
+ L: Deref,
+ ES: Deref,
+ SP: Deref,
+ BI: BroadcasterInterface,
+ FE: Deref,
+ > MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>
where
K::Target: KVStore,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
/// Constructs a new [`MonitorUpdatingPersisterAsync`].
@@ -971,7 +977,7 @@ impl<
L: Deref + MaybeSend + MaybeSync + 'static,
ES: Deref + MaybeSend + MaybeSync + 'static,
SP: Deref + MaybeSend + MaybeSync + 'static,
- BI: Deref + MaybeSend + MaybeSync + 'static,
+ BI: BroadcasterInterface + MaybeSend + MaybeSync + 'static,
FE: Deref + MaybeSend + MaybeSync + 'static,
> MonitorUpdatingPersisterAsync<K, S, L, ES, SP, BI, FE>
where
@@ -979,7 +985,6 @@ where
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
<SP::Target as SignerProvider>::EcdsaSigner: MaybeSend + 'static,
{
@@ -1057,14 +1062,20 @@ where
trait MaybeSendableFuture: Future<Output = Result<(), io::Error>> + MaybeSend {}
impl<F: Future<Output = Result<(), io::Error>> + MaybeSend> MaybeSendableFuture for F {}
-impl<K: Deref, S: FutureSpawner, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
- MonitorUpdatingPersisterAsyncInner<K, S, L, ES, SP, BI, FE>
+impl<
+ K: Deref,
+ S: FutureSpawner,
+ L: Deref,
+ ES: Deref,
+ SP: Deref,
+ BI: BroadcasterInterface,
+ FE: Deref,
+ > MonitorUpdatingPersisterAsyncInner<K, S, L, ES, SP, BI, FE>
where
K::Target: KVStore,
L::Target: Logger,
ES::Target: EntropySource + Sized,
SP::Target: SignerProvider + Sized,
- BI::Target: BroadcasterInterface,
FE::Target: FeeEstimator,
{
pub async fn read_channel_monitor_with_updates(
diff --git a/lightning/src/util/sweep.rs b/lightning/src/util/sweep.rs
index bf048ef..6b3ce10 100644
--- a/lightning/src/util/sweep.rs
+++ b/lightning/src/util/sweep.rs
@@ -337,9 +337,15 @@ impl_writeable_tlv_based_enum!(OutputSpendStatus,
///
/// [`Event::SpendableOutputs`]: crate::events::Event::SpendableOutputs
// Note that updates to documentation on this struct should be copied to the synchronous version.
-pub struct OutputSweeper<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
-where
- B::Target: BroadcasterInterface,
+pub struct OutputSweeper<
+ B: BroadcasterInterface,
+ D: Deref,
+ E: Deref,
+ F: Deref,
+ K: Deref,
+ L: Deref,
+ O: Deref,
+> where
D::Target: ChangeDestinationSource,
E::Target: FeeEstimator,
F::Target: Filter,
@@ -358,10 +364,9 @@ where
logger: L,
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
OutputSweeper<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSource,
E::Target: FeeEstimator,
F::Target: Filter,
@@ -710,10 +715,9 @@ where
}
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Listen
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Listen
for OutputSweeper<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSource,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
@@ -751,10 +755,9 @@ where
}
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Confirm
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Confirm
for OutputSweeper<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSource,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
@@ -848,10 +851,9 @@ pub enum SpendingDelay {
},
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
ReadableArgs<(B, E, Option<F>, O, D, K, L)> for (BestBlock, OutputSweeper<B, D, E, F, K, L, O>)
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSource,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
@@ -918,9 +920,15 @@ where
///
/// [`Event::SpendableOutputs`]: crate::events::Event::SpendableOutputs
// Note that updates to documentation on this struct should be copied to the asynchronous version.
-pub struct OutputSweeperSync<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
-where
- B::Target: BroadcasterInterface,
+pub struct OutputSweeperSync<
+ B: BroadcasterInterface,
+ D: Deref,
+ E: Deref,
+ F: Deref,
+ K: Deref,
+ L: Deref,
+ O: Deref,
+> where
D::Target: ChangeDestinationSourceSync,
E::Target: FeeEstimator,
F::Target: Filter,
@@ -932,10 +940,9 @@ where
OutputSweeper<B, ChangeDestinationSourceSyncWrapper<D>, E, F, KVStoreSyncWrapper<K>, L, O>,
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
OutputSweeperSync<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSourceSync,
E::Target: FeeEstimator,
F::Target: Filter,
@@ -1052,10 +1059,9 @@ where
}
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Listen
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Listen
for OutputSweeperSync<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSourceSync,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
@@ -1074,10 +1080,9 @@ where
}
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Confirm
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref> Confirm
for OutputSweeperSync<B, D, E, F, K, L, O>
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSourceSync,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
@@ -1104,10 +1109,9 @@ where
}
}
-impl<B: Deref, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
+impl<B: BroadcasterInterface, D: Deref, E: Deref, F: Deref, K: Deref, L: Deref, O: Deref>
ReadableArgs<(B, E, Option<F>, O, D, K, L)> for (BestBlock, OutputSweeperSync<B, D, E, F, K, L, O>)
where
- B::Target: BroadcasterInterface,
D::Target: ChangeDestinationSourceSync,
E::Target: FeeEstimator,
F::Target: Filter + Sync + Send,
Why this scored 18/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.