]> git.bitcoin.ninja Git - rust-lightning/commit
Avoid startup `PeerState` entries for peers with unfunded channels 2024-10-mon-ids-after-close
authorMatt Corallo <git@bluematt.me>
Thu, 10 Oct 2024 19:42:16 +0000 (19:42 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 14 Nov 2024 20:00:23 +0000 (20:00 +0000)
commit4582b201ea7a2880d452ef06354a953979e75dbd
tree0d5850dff08ab96d6083564d5a5057b5881000f9
parentc99d3d785dd78f594837d283636b82222c3b9ef1
Avoid startup `PeerState` entries for peers with unfunded channels

If a peer creates a channel with us which never reaches the funding
stage (or never gets any commitment updates after creation), we'll
avoid inserting the `update_id` into
`closed_channel_monitor_update_ids` at runtime to avoid keeping a
`PeerState` entry around for no reason. However, on startup we
still create a `ChannelMonitorUpdate` with a `ChannelForceClosed`
update step to ensure the `ChannelMonitor` is locked and shut down.

This is pretty redundant, and results in a bunch of on-startup
`ChannelMonitorUpdate`s for any old but non-archived
`ChannelMonitor`s. Instead, here, we check if a `ChannelMonitor`
already saw a `ChannelForceClosed` update step before we generate
the on-startup `ChannelMonitorUpdate`.

This also allows us to skip the `closed_channel_monitor_update_ids`
insertion as we can be confident we'll never have a
`ChannelMonitorUpdate` for this channel at all.
lightning/src/chain/channelmonitor.rs
lightning/src/ln/channelmanager.rs
lightning/src/ln/monitor_tests.rs
lightning/src/ln/payment_tests.rs