From 5abee4d362b89cdd73f276032d14e88e295d32c3 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 24 Dec 2019 13:45:30 -0500 Subject: [PATCH] Do not allow routing to a node with unkown feature bits set. This appears to have been an oversight in the flat features spec, and is somewhat implicitly relied on for several new feature bits - if var_onion_optin is set on a node_announcement (its not allowed on a channel_announcement), then trying to route through that node using the pre-tlv formt is somewhat nonsensical, and should be forbidden. --- 07-routing-gossip.md | 3 +++ 09-features.md | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/07-routing-gossip.md b/07-routing-gossip.md index ab4ece066..6ae579d8a 100644 --- a/07-routing-gossip.md +++ b/07-routing-gossip.md @@ -323,6 +323,9 @@ any future fields appended to the end): - MUST NOT process the message further. - if `features` field contains _unknown even bits_: - SHOULD NOT connect to the node. + - Unless paying a [BOLT #11](11-payment-encoding.md) invoice which does not + have the same bit(s) set, MUST NOT attempt to send payments _to_ the node. + - MUST NOT route a payment _through_ the node. - SHOULD ignore the first `address descriptor` that does NOT match the types defined above. - if `addrlen` is insufficient to hold the address descriptors of the diff --git a/09-features.md b/09-features.md index c0948c506..70f1899a2 100644 --- a/09-features.md +++ b/09-features.md @@ -60,6 +60,12 @@ There is no _even_ bit for `initial_routing_sync`, as there would be little point: a local node can't determine if a remote node complies, and it must interpret the flag, as defined in the initial spec. +Note that for feature flags which are available in both the `node_announcement` +and [BOLT 11](11-payment-encoding.md) invoice contexts, the features as set in +the [BOLT 11](11-payment-encoding.md) invoice should override those set in the +`node_announcement`. This keeps things consistent with the unknown features +behavior as specified in [BOLT 7](07-routing-gossip.md#the-node_announcement-message). + ![Creative Commons License](https://i.creativecommons.org/l/by/4.0/88x31.png "License CC-BY")
This work is licensed under a [Creative Commons Attribution 4.0 International License](http://creativecommons.org/licenses/by/4.0/).