From c6a9ea424f3feba6be31e23bbdb964f17a6d5438 Mon Sep 17 00:00:00 2001 From: Vincenzo Palazzo Date: Sat, 15 Jul 2023 02:51:05 +0200 Subject: [PATCH] bol09: Specify behavior when a node specifies both optional and required features While reviewing a patch on lnprototest, I encountered a scenario where the BOLT 9 specification needed to provide clear guidance. As a result, this commit adds specific requirements to determine the appropriate behaviour when a node specifies both optional and required features. Additionally, if this situation appears to be an implementation bug, it will be taken care of accordingly. Reported-by: lnprototest Signed-off-by: Vincenzo Palazzo --- 09-features.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/09-features.md b/09-features.md index 8fde0c809..730e6cd72 100644 --- a/09-features.md +++ b/09-features.md @@ -65,10 +65,14 @@ The origin node: unless indicated that it must set the odd feature bit instead. * MUST NOT set feature bits it does not support. * MUST NOT set feature bits in fields not specified by the table above. + * MUST NOT set both the optional and mandatory bits. * MUST set all transitive feature dependencies. + * MUST support: + * `var_onion_optin` -The origin node MUST support: - * `var_onion_optin` +The receiving node: + * if both the optional and the mandatory feature bits in a pair are set, + the feature should be treated as mandatory. The requirements for receiving specific bits are defined in the linked sections in the table above. The requirements for feature bits that are not defined