Change Persist's Sign from an associated type to a generic param
authorMatt Corallo <git@bluematt.me>
Thu, 18 Feb 2021 21:20:43 +0000 (16:20 -0500)
committerMatt Corallo <git@bluematt.me>
Fri, 19 Feb 2021 21:04:19 +0000 (16:04 -0500)
background-processor/src/lib.rs
fuzz/src/chanmon_consistency.rs
lightning-persister/src/lib.rs
lightning/src/chain/chainmonitor.rs
lightning/src/chain/mod.rs
lightning/src/ln/channelmanager.rs
lightning/src/util/test_utils.rs

index 06a2c00e28cc0dc80afdea89da48a330f8fdfadf..0a09ae95c209e41e6040f85445b8bad4062beb91 100644 (file)
@@ -54,7 +54,7 @@ impl BackgroundProcessor {
        /// [`FilesystemPersister::persist_manager`]: ../lightning_persister/struct.FilesystemPersister.html#impl
        pub fn start<PM, Signer, M, T, K, F, L>(persist_manager: PM, manager: Arc<ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>>, logger: Arc<L>) -> Self
        where Signer: 'static + Sign,
-             M: 'static + chain::Watch<ChanSigner=Signer>,
+             M: 'static + chain::Watch<Signer>,
              T: 'static + BroadcasterInterface,
              K: 'static + KeysInterface<Signer=Signer>,
              F: 'static + FeeEstimator,
@@ -275,7 +275,7 @@ mod tests {
                // Test that if we encounter an error during manager persistence, the thread panics.
                fn persist_manager<Signer, M, T, K, F, L>(_data: &ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>) -> Result<(), std::io::Error>
                where Signer: 'static + Sign,
-                     M: 'static + chain::Watch<ChanSigner=Signer>,
+                     M: 'static + chain::Watch<Signer>,
                      T: 'static + BroadcasterInterface,
                      K: 'static + KeysInterface<Signer=Signer>,
                      F: 'static + FeeEstimator,
index 24b7bf90c239d2a65a243e5b21d73d42bafcd564..e180805f2361a079c9608dfb9cf27d9ee8d629c0 100644 (file)
@@ -108,9 +108,7 @@ impl TestChainMonitor {
                }
        }
 }
-impl chain::Watch for TestChainMonitor {
-       type ChanSigner = EnforcingSigner;
-
+impl chain::Watch<EnforcingSigner> for TestChainMonitor {
        fn watch_channel(&self, funding_txo: OutPoint, monitor: channelmonitor::ChannelMonitor<EnforcingSigner>) -> Result<(), channelmonitor::ChannelMonitorUpdateErr> {
                let mut ser = VecWriter(Vec::new());
                monitor.write(&mut ser).unwrap();
index 218366e7de4edea752a1d01258fa660e24d53479..cb7223a426a0b9a0cde2b6aa8a128ee7af5cbf92 100644 (file)
@@ -51,7 +51,7 @@ impl<Signer: Sign> DiskWriteable for ChannelMonitor<Signer> {
 }
 
 impl<Signer: Sign, M, T, K, F, L> DiskWriteable for ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>
-where M: chain::Watch<ChanSigner=Signer>,
+where M: chain::Watch<Signer>,
       T: BroadcasterInterface,
       K: KeysInterface<Signer=Signer>,
       F: FeeEstimator,
@@ -82,7 +82,7 @@ impl FilesystemPersister {
                manager: &ChannelManager<Signer, Arc<M>, Arc<T>, Arc<K>, Arc<F>, Arc<L>>
        ) -> Result<(), std::io::Error>
        where Signer: Sign,
-             M: chain::Watch<ChanSigner=Signer>,
+             M: chain::Watch<Signer>,
              T: BroadcasterInterface,
              K: KeysInterface<Signer=Signer>,
              F: FeeEstimator,
index cb2d4b47bad6c902fd8159ac0c3673adfb39e780..1923d00205a2ae671859ca5c69104308f8e8252f 100644 (file)
@@ -140,15 +140,14 @@ where C::Target: chain::Filter,
        }
 }
 
-impl<ChanSigner: Sign, C: Deref + Sync + Send, T: Deref + Sync + Send, F: Deref + Sync + Send, L: Deref + Sync + Send, P: Deref + Sync + Send> chain::Watch for ChainMonitor<ChanSigner, C, T, F, L, P>
+impl<ChanSigner: Sign, C: Deref + Sync + Send, T: Deref + Sync + Send, F: Deref + Sync + Send, L: Deref + Sync + Send, P: Deref + Sync + Send>
+chain::Watch<ChanSigner> for ChainMonitor<ChanSigner, C, T, F, L, P>
 where C::Target: chain::Filter,
            T::Target: BroadcasterInterface,
            F::Target: FeeEstimator,
            L::Target: Logger,
            P::Target: channelmonitor::Persist<ChanSigner>,
 {
-       type ChanSigner = ChanSigner;
-
        /// Adds the monitor that watches the channel referred to by the given outpoint.
        ///
        /// Calls back to [`chain::Filter`] with the funding transaction and outputs to watch.
index 98fc857e92df94886519353b8a5d17f7bdeb74d8..c7957f0ac0f504d6d32c92035dfab8673320d933 100644 (file)
@@ -67,10 +67,7 @@ pub trait Access: Send + Sync {
 /// [`ChannelMonitor`]: channelmonitor/struct.ChannelMonitor.html
 /// [`ChannelMonitorUpdateErr`]: channelmonitor/enum.ChannelMonitorUpdateErr.html
 /// [`PermanentFailure`]: channelmonitor/enum.ChannelMonitorUpdateErr.html#variant.PermanentFailure
-pub trait Watch: Send + Sync {
-       /// Keys needed by monitors for creating and signing transactions.
-       type ChanSigner: Sign;
-
+pub trait Watch<ChanSigner: Sign>: Send + Sync {
        /// Watches a channel identified by `funding_txo` using `monitor`.
        ///
        /// Implementations are responsible for watching the chain for the funding transaction along
@@ -80,7 +77,7 @@ pub trait Watch: Send + Sync {
        /// [`get_outputs_to_watch`]: channelmonitor/struct.ChannelMonitor.html#method.get_outputs_to_watch
        /// [`block_connected`]: channelmonitor/struct.ChannelMonitor.html#method.block_connected
        /// [`block_disconnected`]: channelmonitor/struct.ChannelMonitor.html#method.block_disconnected
-       fn watch_channel(&self, funding_txo: OutPoint, monitor: ChannelMonitor<Self::ChanSigner>) -> Result<(), ChannelMonitorUpdateErr>;
+       fn watch_channel(&self, funding_txo: OutPoint, monitor: ChannelMonitor<ChanSigner>) -> Result<(), ChannelMonitorUpdateErr>;
 
        /// Updates a channel identified by `funding_txo` by applying `update` to its monitor.
        ///
index 21ee32b0f0be2dfec5535fa0f8e01f6f708d19e1..a759443d86ed9ab56374c3d44d24ad8affa6a5a9 100644 (file)
@@ -398,7 +398,7 @@ pub type SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L> = ChannelManage
 /// SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
 /// you're using lightning-net-tokio.
 pub struct ChannelManager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -745,7 +745,7 @@ macro_rules! maybe_break_monitor_err {
 }
 
 impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3102,7 +3102,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
 }
 
 impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> MessageSendEventsProvider for ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3121,7 +3121,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> MessageSend
 }
 
 impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> EventsProvider for ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3140,7 +3140,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> EventsProvi
 }
 
 impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3320,7 +3320,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
 
 impl<Signer: Sign, M: Deref + Sync + Send, T: Deref + Sync + Send, K: Deref + Sync + Send, F: Deref + Sync + Send, L: Deref + Sync + Send>
        ChannelMessageHandler for ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3833,7 +3833,7 @@ impl Readable for HTLCForwardInfo {
 }
 
 impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable for ChannelManager<Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3916,7 +3916,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable f
 /// 5) Move the ChannelMonitors into your local chain::Watch.
 /// 6) Disconnect/connect blocks on the ChannelManager.
 pub struct ChannelManagerReadArgs<'a, Signer: 'a + Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -3966,7 +3966,7 @@ pub struct ChannelManagerReadArgs<'a, Signer: 'a + Sign, M: Deref, T: Deref, K:
 
 impl<'a, Signer: 'a + Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
                ChannelManagerReadArgs<'a, Signer, M, T, K, F, L>
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
                T::Target: BroadcasterInterface,
                K::Target: KeysInterface<Signer = Signer>,
                F::Target: FeeEstimator,
@@ -3988,7 +3988,7 @@ impl<'a, Signer: 'a + Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
 // SipmleArcChannelManager type:
 impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
        ReadableArgs<ChannelManagerReadArgs<'a, Signer, M, T, K, F, L>> for (BlockHash, Arc<ChannelManager<Signer, M, T, K, F, L>>)
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
@@ -4002,7 +4002,7 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
 
 impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
        ReadableArgs<ChannelManagerReadArgs<'a, Signer, M, T, K, F, L>> for (BlockHash, ChannelManager<Signer, M, T, K, F, L>)
-       where M::Target: chain::Watch<ChanSigner=Signer>,
+       where M::Target: chain::Watch<Signer>,
         T::Target: BroadcasterInterface,
         K::Target: KeysInterface<Signer = Signer>,
         F::Target: FeeEstimator,
index 4b40123434c9602b8871d682d676e9dfe56d756f..f0743c1f061f3ead55453e556a0f6c9759b3cd27 100644 (file)
@@ -98,9 +98,7 @@ impl<'a> TestChainMonitor<'a> {
                }
        }
 }
-impl<'a> chain::Watch for TestChainMonitor<'a> {
-       type ChanSigner = EnforcingSigner;
-
+impl<'a> chain::Watch<EnforcingSigner> for TestChainMonitor<'a> {
        fn watch_channel(&self, funding_txo: OutPoint, monitor: channelmonitor::ChannelMonitor<EnforcingSigner>) -> Result<(), channelmonitor::ChannelMonitorUpdateErr> {
                // At every point where we get a monitor update, we should be able to send a useful monitor
                // to a watchtower and disk...