Drop the redundant/broken `ChannelMonitor::get_monitored_outpoints`
authorMatt Corallo <git@bluematt.me>
Sun, 27 Sep 2020 21:52:09 +0000 (17:52 -0400)
committerMatt Corallo <git@bluematt.me>
Mon, 5 Oct 2020 16:19:41 +0000 (12:19 -0400)
commita162840ffd228f201ad281f715ef63c459eda14c
tree26cf25f4f1dc2086a3e82bf84d65da2dff6eb0ca
parent45a558b17013531f95f40f1211647ae677e84a23
Drop the redundant/broken `ChannelMonitor::get_monitored_outpoints`

In review of the final doc changes in #649, I noticed there
appeared to be redundant monitored-outpoints function in
`ChannelMonitor` - `get_monitored_outpoints()` and
`get_outputs_to_watch()`.

In 6f08779b0439e7e4367a75f4ee88de093dfb68cb,
get_monitored_outpoints() was added, with its behavior largely the
same as today's - only returning the set of remote commitment txn
outputs that we've learned about on-chain. This is clearly not
sufficient, and in 73dce207dd0ea6c3ac57af3ebb8b87ee03e82c9e,
`get_outputs_to_watch` was added which was overly cautious to
ensure nothing was missed. Still, the author of 73dce207dd0ea6c3ac5
(me) seemed entirely unaware of the work in 6f08779b0439e7e4367a75f
(also me), despite the function being the literal next function in
the same file. This is presumably because it was assumed that
`get_monitored_outpoints` referred to oupoints for which we should
monitor for spends of (which is true), while `get_outputs_to_watch`
referred to outpouts which we should monitor for the transaction
containing said output (which is not true), or something of that
nature. Specifically, it is the expected behavior that the only
time we care about `Filter::register_tx` is for the funding
transaction (which we aren't aware of the inputs of), but for all
other transactions we register interest on the basis of an outpoint
in the previous transaction (ie via `Filter::register_output`).

Here we drop the broken-on-day-one `get_monitored_outpoints()`
version, but assert in testing that the values which it would return
are all present in `get_outputs_to_watch()`.
lightning/src/chain/channelmonitor.rs
lightning/src/ln/channelmanager.rs