mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-25 15:20:24 +01:00
Remove last_block_connected from Channel
Tracking the last block was only used to de-duplicate block_connected calls, but this is no longer required as of the previous commit. Further, the ChannelManager can pass the latest block hash when needing to create a ChannelMonitor rather than have each Channel maintain an up-to-date copy. This is implemented in the next commit.
This commit is contained in:
parent
ff4b4c4d36
commit
caabc4ef39
2 changed files with 2 additions and 18 deletions
|
@ -39,7 +39,6 @@ use util::errors::APIError;
|
||||||
use util::config::{UserConfig,ChannelConfig};
|
use util::config::{UserConfig,ChannelConfig};
|
||||||
|
|
||||||
use std;
|
use std;
|
||||||
use std::default::Default;
|
|
||||||
use std::{cmp,mem,fmt};
|
use std::{cmp,mem,fmt};
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
#[cfg(any(test, feature = "fuzztarget"))]
|
#[cfg(any(test, feature = "fuzztarget"))]
|
||||||
|
@ -368,8 +367,6 @@ pub(super) struct Channel<Signer: Sign> {
|
||||||
/// could miss the funding_tx_confirmed_in block as well, but it serves as a useful fallback.
|
/// could miss the funding_tx_confirmed_in block as well, but it serves as a useful fallback.
|
||||||
funding_tx_confirmed_in: Option<BlockHash>,
|
funding_tx_confirmed_in: Option<BlockHash>,
|
||||||
short_channel_id: Option<u64>,
|
short_channel_id: Option<u64>,
|
||||||
/// Used to verify consistency during ChannelManager deserialization (hence pub(super)).
|
|
||||||
pub(super) last_block_connected: BlockHash,
|
|
||||||
funding_tx_confirmations: u64,
|
funding_tx_confirmations: u64,
|
||||||
|
|
||||||
counterparty_dust_limit_satoshis: u64,
|
counterparty_dust_limit_satoshis: u64,
|
||||||
|
@ -568,7 +565,6 @@ impl<Signer: Sign> Channel<Signer> {
|
||||||
|
|
||||||
funding_tx_confirmed_in: None,
|
funding_tx_confirmed_in: None,
|
||||||
short_channel_id: None,
|
short_channel_id: None,
|
||||||
last_block_connected: Default::default(),
|
|
||||||
funding_tx_confirmations: 0,
|
funding_tx_confirmations: 0,
|
||||||
|
|
||||||
feerate_per_kw: feerate,
|
feerate_per_kw: feerate,
|
||||||
|
@ -804,7 +800,6 @@ impl<Signer: Sign> Channel<Signer> {
|
||||||
|
|
||||||
funding_tx_confirmed_in: None,
|
funding_tx_confirmed_in: None,
|
||||||
short_channel_id: None,
|
short_channel_id: None,
|
||||||
last_block_connected: Default::default(),
|
|
||||||
funding_tx_confirmations: 0,
|
funding_tx_confirmations: 0,
|
||||||
|
|
||||||
feerate_per_kw: msg.feerate_per_kw,
|
feerate_per_kw: msg.feerate_per_kw,
|
||||||
|
@ -3568,7 +3563,6 @@ impl<Signer: Sign> Channel<Signer> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.last_block_connected = header.block_hash();
|
|
||||||
self.update_time_counter = cmp::max(self.update_time_counter, header.time);
|
self.update_time_counter = cmp::max(self.update_time_counter, header.time);
|
||||||
if self.funding_tx_confirmations > 0 {
|
if self.funding_tx_confirmations > 0 {
|
||||||
if self.funding_tx_confirmations == self.minimum_depth as u64 {
|
if self.funding_tx_confirmations == self.minimum_depth as u64 {
|
||||||
|
@ -3590,7 +3584,7 @@ impl<Signer: Sign> Channel<Signer> {
|
||||||
// funding_tx_confirmed_in and return.
|
// funding_tx_confirmed_in and return.
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
self.funding_tx_confirmed_in = Some(self.last_block_connected);
|
self.funding_tx_confirmed_in = Some(header.block_hash());
|
||||||
|
|
||||||
//TODO: Note that this must be a duplicate of the previous commitment point they sent us,
|
//TODO: Note that this must be a duplicate of the previous commitment point they sent us,
|
||||||
//as otherwise we will have a commitment transaction that they can't revoke (well, kinda,
|
//as otherwise we will have a commitment transaction that they can't revoke (well, kinda,
|
||||||
|
@ -3623,8 +3617,7 @@ impl<Signer: Sign> Channel<Signer> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.last_block_connected = header.block_hash();
|
if Some(header.block_hash()) == self.funding_tx_confirmed_in {
|
||||||
if Some(self.last_block_connected) == self.funding_tx_confirmed_in {
|
|
||||||
self.funding_tx_confirmations = self.minimum_depth as u64 - 1;
|
self.funding_tx_confirmations = self.minimum_depth as u64 - 1;
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
|
@ -4433,8 +4426,6 @@ impl<Signer: Sign> Writeable for Channel<Signer> {
|
||||||
|
|
||||||
self.funding_tx_confirmed_in.write(writer)?;
|
self.funding_tx_confirmed_in.write(writer)?;
|
||||||
self.short_channel_id.write(writer)?;
|
self.short_channel_id.write(writer)?;
|
||||||
|
|
||||||
self.last_block_connected.write(writer)?;
|
|
||||||
self.funding_tx_confirmations.write(writer)?;
|
self.funding_tx_confirmations.write(writer)?;
|
||||||
|
|
||||||
self.counterparty_dust_limit_satoshis.write(writer)?;
|
self.counterparty_dust_limit_satoshis.write(writer)?;
|
||||||
|
@ -4595,8 +4586,6 @@ impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
|
||||||
|
|
||||||
let funding_tx_confirmed_in = Readable::read(reader)?;
|
let funding_tx_confirmed_in = Readable::read(reader)?;
|
||||||
let short_channel_id = Readable::read(reader)?;
|
let short_channel_id = Readable::read(reader)?;
|
||||||
|
|
||||||
let last_block_connected = Readable::read(reader)?;
|
|
||||||
let funding_tx_confirmations = Readable::read(reader)?;
|
let funding_tx_confirmations = Readable::read(reader)?;
|
||||||
|
|
||||||
let counterparty_dust_limit_satoshis = Readable::read(reader)?;
|
let counterparty_dust_limit_satoshis = Readable::read(reader)?;
|
||||||
|
@ -4667,7 +4656,6 @@ impl<'a, Signer: Sign, K: Deref> ReadableArgs<&'a K> for Channel<Signer>
|
||||||
|
|
||||||
funding_tx_confirmed_in,
|
funding_tx_confirmed_in,
|
||||||
short_channel_id,
|
short_channel_id,
|
||||||
last_block_connected,
|
|
||||||
funding_tx_confirmations,
|
funding_tx_confirmations,
|
||||||
|
|
||||||
counterparty_dust_limit_satoshis,
|
counterparty_dust_limit_satoshis,
|
||||||
|
|
|
@ -4153,10 +4153,6 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
|
||||||
let mut short_to_id = HashMap::with_capacity(cmp::min(channel_count as usize, 128));
|
let mut short_to_id = HashMap::with_capacity(cmp::min(channel_count as usize, 128));
|
||||||
for _ in 0..channel_count {
|
for _ in 0..channel_count {
|
||||||
let mut channel: Channel<Signer> = Channel::read(reader, &args.keys_manager)?;
|
let mut channel: Channel<Signer> = Channel::read(reader, &args.keys_manager)?;
|
||||||
if channel.last_block_connected != Default::default() && channel.last_block_connected != last_block_hash {
|
|
||||||
return Err(DecodeError::InvalidValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
let funding_txo = channel.get_funding_txo().ok_or(DecodeError::InvalidValue)?;
|
let funding_txo = channel.get_funding_txo().ok_or(DecodeError::InvalidValue)?;
|
||||||
funding_txo_set.insert(funding_txo.clone());
|
funding_txo_set.insert(funding_txo.clone());
|
||||||
if let Some(ref mut monitor) = args.channel_monitors.get_mut(&funding_txo) {
|
if let Some(ref mut monitor) = args.channel_monitors.get_mut(&funding_txo) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue