Drop ChannelMonitor::write_for_watchtower
authorMatt Corallo <git@bluematt.me>
Sun, 19 Apr 2020 01:36:33 +0000 (21:36 -0400)
committerMatt Corallo <git@bluematt.me>
Wed, 22 Apr 2020 20:48:13 +0000 (16:48 -0400)
Not only was watchtower mode never implemented, but the bits that
we had were removed some time ago. It doesn't seem likely we'll
move forward with a "watchtower-mode" ChannelMonitor, instead
we'll likely have some other, separate struct for this.

fuzz/src/chanmon_deser.rs
lightning/src/ln/channelmonitor.rs
lightning/src/util/test_utils.rs

index c9042dd41dd089f0e28180731c5f7df12abe83bf..dc12f5e720781bf4384ea9c9291d7175c0ae7932 100644 (file)
@@ -32,8 +32,6 @@ pub fn do_test(data: &[u8]) {
                let deserialized_copy = <(Sha256dHash, channelmonitor::ChannelMonitor<EnforcingChannelKeys>)>::read(&mut Cursor::new(&w.0), logger.clone()).unwrap();
                assert!(latest_block_hash == deserialized_copy.0);
                assert!(monitor == deserialized_copy.1);
-               w.0.clear();
-               monitor.write_for_watchtower(&mut w).unwrap();
        }
 }
 
index 7a6bac9c7fba4bf30da188ef8842a569f986c4da..503a358e8b3c49c10a33950615ccd41999b6f311 100644 (file)
@@ -833,8 +833,14 @@ impl<ChanSigner: ChannelKeys> PartialEq for ChannelMonitor<ChanSigner> {
 }
 
 impl<ChanSigner: ChannelKeys + Writeable> ChannelMonitor<ChanSigner> {
-       /// Serializes into a vec, with various modes for the exposed pub fns
-       fn write<W: Writer>(&self, writer: &mut W, for_local_storage: bool) -> Result<(), ::std::io::Error> {
+       /// Writes this monitor into the given writer, suitable for writing to disk.
+       ///
+       /// Note that the deserializer is only implemented for (Sha256dHash, ChannelMonitor), which
+       /// tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
+       /// the "reorg path" (ie not just starting at the same height but starting at the highest
+       /// common block that appears on your best chain as well as on the chain which contains the
+       /// last block hash returned) upon deserializing the object!
+       pub fn write_for_disk<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
                //TODO: We still write out all the serialization here manually instead of using the fancy
                //serialization framework we have, we should migrate things over to it.
                writer.write_all(&[SERIALIZATION_VERSION; 1])?;
@@ -929,14 +935,10 @@ impl<ChanSigner: ChannelKeys + Writeable> ChannelMonitor<ChanSigner> {
                        }
                }
 
-               if for_local_storage {
-                       writer.write_all(&byte_utils::be64_to_array(self.remote_hash_commitment_number.len() as u64))?;
-                       for (ref payment_hash, commitment_number) in self.remote_hash_commitment_number.iter() {
-                               writer.write_all(&payment_hash.0[..])?;
-                               writer.write_all(&byte_utils::be48_to_array(*commitment_number))?;
-                       }
-               } else {
-                       writer.write_all(&byte_utils::be64_to_array(0))?;
+               writer.write_all(&byte_utils::be64_to_array(self.remote_hash_commitment_number.len() as u64))?;
+               for (ref payment_hash, commitment_number) in self.remote_hash_commitment_number.iter() {
+                       writer.write_all(&payment_hash.0[..])?;
+                       writer.write_all(&byte_utils::be48_to_array(*commitment_number))?;
                }
 
                macro_rules! serialize_local_tx {
@@ -977,17 +979,8 @@ impl<ChanSigner: ChannelKeys + Writeable> ChannelMonitor<ChanSigner> {
                        writer.write_all(&[0; 1])?;
                }
 
-               if for_local_storage {
-                       writer.write_all(&byte_utils::be48_to_array(self.current_remote_commitment_number))?;
-               } else {
-                       writer.write_all(&byte_utils::be48_to_array(0))?;
-               }
-
-               if for_local_storage {
-                       writer.write_all(&byte_utils::be48_to_array(self.current_local_commitment_number))?;
-               } else {
-                       writer.write_all(&byte_utils::be48_to_array(0))?;
-               }
+               writer.write_all(&byte_utils::be48_to_array(self.current_remote_commitment_number))?;
+               writer.write_all(&byte_utils::be48_to_array(self.current_local_commitment_number))?;
 
                writer.write_all(&byte_utils::be64_to_array(self.payment_preimages.len() as u64))?;
                for payment_preimage in self.payment_preimages.values() {
@@ -1039,28 +1032,6 @@ impl<ChanSigner: ChannelKeys + Writeable> ChannelMonitor<ChanSigner> {
 
                Ok(())
        }
-
-       /// Writes this monitor into the given writer, suitable for writing to disk.
-       ///
-       /// Note that the deserializer is only implemented for (Sha256dHash, ChannelMonitor), which
-       /// tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
-       /// the "reorg path" (ie not just starting at the same height but starting at the highest
-       /// common block that appears on your best chain as well as on the chain which contains the
-       /// last block hash returned) upon deserializing the object!
-       pub fn write_for_disk<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
-               self.write(writer, true)
-       }
-
-       /// Encodes this monitor into the given writer, suitable for sending to a remote watchtower
-       ///
-       /// Note that the deserializer is only implemented for (Sha256dHash, ChannelMonitor), which
-       /// tells you the last block hash which was block_connect()ed. You MUST rescan any blocks along
-       /// the "reorg path" (ie not just starting at the same height but starting at the highest
-       /// common block that appears on your best chain as well as on the chain which contains the
-       /// last block hash returned) upon deserializing the object!
-       pub fn write_for_watchtower<W: Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
-               self.write(writer, false)
-       }
 }
 
 impl<ChanSigner: ChannelKeys> ChannelMonitor<ChanSigner> {
index 13cbde4aa1fe35c24702d277a48b310c77d08490..4fcaf803e7e7071ec9d17007e65920cf1e4fcd01 100644 (file)
@@ -71,8 +71,6 @@ impl<'a> channelmonitor::ManyChannelMonitor<EnforcingChannelKeys> for TestChanne
                let new_monitor = <(Sha256dHash, channelmonitor::ChannelMonitor<EnforcingChannelKeys>)>::read(
                                &mut ::std::io::Cursor::new(&w.0), Arc::new(TestLogger::new())).unwrap().1;
                assert!(new_monitor == monitor);
-               w.0.clear();
-               monitor.write_for_watchtower(&mut w).unwrap(); // This at least shouldn't crash...
                self.latest_monitor_update_id.lock().unwrap().insert(funding_txo.to_channel_id(), (funding_txo, monitor.get_latest_update_id()));
                self.added_monitors.lock().unwrap().push((funding_txo, monitor));
                assert!(self.simple_monitor.add_monitor(funding_txo, new_monitor).is_ok());
@@ -97,8 +95,6 @@ impl<'a> channelmonitor::ManyChannelMonitor<EnforcingChannelKeys> for TestChanne
                let new_monitor = <(Sha256dHash, channelmonitor::ChannelMonitor<EnforcingChannelKeys>)>::read(
                                &mut ::std::io::Cursor::new(&w.0), Arc::new(TestLogger::new())).unwrap().1;
                assert!(new_monitor == *monitor);
-               w.0.clear();
-               monitor.write_for_watchtower(&mut w).unwrap(); // This at least shouldn't crash...
                self.added_monitors.lock().unwrap().push((funding_txo, new_monitor));
                self.update_ret.lock().unwrap().clone()
        }