]> git.bitcoin.ninja Git - rust-lightning/commit
Avoid redundant `{channel,node}_announcement` signature checks 2024-09-no-redundant-gossip-validation
authorMatt Corallo <git@bluematt.me>
Sun, 8 Sep 2024 22:33:57 +0000 (22:33 +0000)
committerMatt Corallo <git@bluematt.me>
Mon, 9 Sep 2024 18:14:19 +0000 (18:14 +0000)
commit56cb6a10f1437c5da593b1e093a55bd095dd7aaa
tree9bdc6ad58b5c56f5f6c3c433b26f2460f90f8d52
parentd35239ca6216c69a58222dea38fa1cfdb8388a8a
Avoid redundant `{channel,node}_announcement` signature checks

If we receive `{channel,node}_announcement` messages which we
already have, we first validate their signatures and then look in
our graph and discover that we should discard the messages. This
avoids a second lock in `node_announcement` handling but does not
impact our locking in `channel_announcement` handling. It also
avoids lock contention in cases where the signatures are invalid,
but that should be exceedingly rare.

For nodes with relatively few peers, this is a fine state to be in,
however for nodes with many peers, we may see the same messages
hundreds of times. This causes a rather substantial waste of CPU
resources validating gossip messages.

Instead, here, we change to checking our network graph first and
then validate the signatures only if we don't already have the
message.
lightning/src/routing/gossip.rs