Skip to content

Commit b2d5a8e

Browse files
committed
fixup: our_peer_storage: Replace timestamp with block height
1 parent 9ab8833 commit b2d5a8e

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,7 @@ where C::Target: chain::Filter,
712712
{
713713
fn send_peer_storage(&self, their_node_id: PublicKey) {
714714
log_debug!(self.logger, "Sending Peer Storage from chainmonitor");
715+
// TODO: Serialize `ChannelMonitor`s inside `our_peer_storage` and update [`OurPeerStorage::block_height`] accordingly.
715716

716717
self.pending_send_only_events.lock().unwrap().push(events::MessageSendEvent::SendPeerStorage { node_id: their_node_id
717718
, msg: msgs::PeerStorage { data: self.our_peer_storage.lock().unwrap().encrypt_our_peer_storage(self.our_peerstorage_encryption_key) } })

lightning/src/ln/channelmanager.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8309,7 +8309,6 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83098309
match OurPeerStorage::decrypt_our_peer_storage(&mut res, cyphertext_with_key.as_slice()) {
83108310
Ok(()) => {
83118311
// Decryption successful, the plaintext is now stored in `res`.
8312-
log_debug!(logger, "Received a peer storage from peer {}", log_pubkey!(counterparty_node_id));
83138312
}
83148313
Err(_) => {
83158314
log_debug!(logger, "Invalid YourPeerStorage received from {}", log_pubkey!(counterparty_node_id));
@@ -8319,6 +8318,12 @@ This indicates a bug inside LDK. Please report this error at https://github.com/
83198318
), ChannelId([0; 32])));
83208319
}
83218320
}
8321+
let our_peer_storage = <OurPeerStorage as Readable>::read(&mut ::bitcoin::io::Cursor::new(res)).unwrap();
8322+
8323+
if our_peer_storage.get_block_height() == 0 {
8324+
log_debug!(logger, "Received a peer storage from peer {} with 0 channels.", log_pubkey!(counterparty_node_id));
8325+
}
8326+
83228327
Ok(())
83238328
}
83248329

lightning/src/ln/our_peer_storage.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,15 @@ use crate::ln::msgs::DecodeError;
5656
#[derive(PartialEq)]
5757
pub struct OurPeerStorage {
5858
version: u8,
59-
timestamp: u32,
59+
// If the block height is 0, OurPeerStorage doesn't have any channels backed up.
60+
block_height: u32,
6061
ser_channels: Vec<u8>,
6162
}
6263

6364
impl OurPeerStorage {
6465
/// Returns a [`OurPeerStorage`] with version 1 and current timestamp.
6566
pub fn new() -> Self {
66-
let duration_since_epoch = std::time::SystemTime::now()
67-
.duration_since(std::time::SystemTime::UNIX_EPOCH)
68-
.expect("Time must be > 1970");
69-
70-
Self {
71-
version: 1,
72-
timestamp: duration_since_epoch.as_secs() as u32,
73-
ser_channels: Vec::new(),
74-
}
67+
Self { version: 1, block_height: 0u32, ser_channels: Vec::new() }
7568
}
7669

7770
/// Stubs a channel inside [`OurPeerStorage`]
@@ -84,6 +77,10 @@ impl OurPeerStorage {
8477
self.ser_channels.clone()
8578
}
8679

80+
pub fn get_block_height(&self) -> u32 {
81+
self.block_height
82+
}
83+
8784
/// Encrypt [`OurPeerStorage`] using the `key` and return a `Vec<u8>` containing the result.
8885
pub fn encrypt_our_peer_storage(&self, key: [u8; 32]) -> Vec<u8> {
8986
let n = 0u64;
@@ -135,7 +132,7 @@ impl OurPeerStorage {
135132
impl Writeable for OurPeerStorage {
136133
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error> {
137134
write_ver_prefix!(writer, self.version, 1);
138-
self.timestamp.write(writer)?;
135+
self.block_height.write(writer)?;
139136
self.ser_channels.write(writer)?;
140137
Ok(())
141138
}
@@ -144,10 +141,10 @@ impl Writeable for OurPeerStorage {
144141
impl Readable for OurPeerStorage {
145142
fn read<R: io::Read>(reader: &mut R) -> Result<Self, DecodeError> {
146143
let ver = read_ver_prefix!(reader, 1u8);
147-
let timestamp: u32 = Readable::read(reader)?;
144+
let block_height: u32 = Readable::read(reader)?;
148145
let ser_channels = <Vec<u8> as Readable>::read(reader)?;
149146

150-
let ps = OurPeerStorage { version: ver, timestamp, ser_channels };
147+
let ps = OurPeerStorage { version: ver, block_height, ser_channels };
151148
Ok(ps)
152149
}
153150
}

0 commit comments

Comments
 (0)