]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Make ChannelMonitor always clonable
authorMatt Corallo <git@bluematt.me>
Mon, 1 Feb 2021 01:12:50 +0000 (20:12 -0500)
committerMatt Corallo <git@bluematt.me>
Mon, 14 Oct 2024 19:15:11 +0000 (19:15 +0000)
Rather than `ChannelMonitor` only being clonable when the signer is
clonable, we require all signers to be clonable and then make all
`ChannelMonitor`s clonable.

lightning/src/chain/channelmonitor.rs
lightning/src/sign/ecdsa.rs
lightning/src/sign/mod.rs

index 693e1dda5c72bf3c5d70ac681af846054918615d..464ad50407f309404ff257b6d0f6ea3a67f471cd 100644 (file)
@@ -850,7 +850,7 @@ pub struct ChannelMonitor<Signer: EcdsaChannelSigner> {
        pub(super) inner: Mutex<ChannelMonitorImpl<Signer>>,
 }
 
-impl<Signer: EcdsaChannelSigner> Clone for ChannelMonitor<Signer> where Signer: Clone {
+impl<Signer: EcdsaChannelSigner> Clone for ChannelMonitor<Signer> {
        fn clone(&self) -> Self {
                let inner = self.inner.lock().unwrap().clone();
                ChannelMonitor::from_impl(inner)
index ecdd45aa3f5e0b5b401843bff17327aa04dbdaec..c6df3344cfaadbfc2cf85675b5ada81f6cdb0b46 100644 (file)
@@ -24,7 +24,7 @@ use crate::sign::{ChannelSigner, HTLCDescriptor};
 /// policies in order to be secure. Please refer to the [VLS Policy
 /// Controls](https://gitlab.com/lightning-signer/validating-lightning-signer/-/blob/main/docs/policy-controls.md)
 /// for an example of such policies.
-pub trait EcdsaChannelSigner: ChannelSigner {
+pub trait EcdsaChannelSigner: ChannelSigner + Clone {
        /// Create a signature for a counterparty's commitment transaction and associated HTLC transactions.
        ///
        /// Note that if signing fails or is rejected, the channel will be force-closed.
index 0d3ec9efa417863fcd9bf9f37a901f5a63df68b5..c0fd5b73bb993a6451ef2c1a8ee15cd72354d0de 100644 (file)
@@ -2500,11 +2500,11 @@ impl EntropySource for RandomBytes {
        }
 }
 
-// Ensure that EcdsaChannelSigner can have a vtable
-#[test]
+// Ensure that EcdsaChannelSigner can have a vtable - not required in bindings
+/*#[test]
 pub fn dyn_sign() {
        let _signer: Box<dyn EcdsaChannelSigner>;
-}
+}*/
 
 #[cfg(ldk_bench)]
 pub mod benches {