From ec59f7c1ca14a87edc65c19222e84a01c421f02a 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 ba0a0c5bf..0e0c787ee 100644 --- a/09-features.md +++ b/09-features.md @@ -64,10 +64,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