Skip to content

Commit 0198e49

Browse files
committed
Add RouteBlinding feature flag
The RouteBlinding feature flag is signals support for relaying payments over blinded paths. It is used for paying BOLT 12 invoices, which are required to included at least one blinded path.
1 parent 5c9c78e commit 0198e49

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

lightning/src/ln/features.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
//! and HTLC transactions are pre-signed with zero fee (see
4646
//! [BOLT-3](https://github.com/lightning/bolts/blob/master/03-transactions.md) for more
4747
//! information).
48+
//! - `RouteBlinding` - requires/supports that a node can relay payments over blinded paths
49+
//! (see [BOLT-4](https://github.com/lightning/bolts/blob/master/04-onion-routing.md#route-blinding) for more information).
4850
//! - `ShutdownAnySegwit` - requires/supports that future segwit versions are allowed in `shutdown`
4951
//! (see [BOLT-2](https://github.com/lightning/bolts/blob/master/02-peer-protocol.md) for more information).
5052
//! - `OnionMessages` - requires/supports forwarding onion messages
@@ -143,7 +145,7 @@ mod sealed {
143145
// Byte 2
144146
BasicMPP | Wumbo | AnchorsNonzeroFeeHtlcTx | AnchorsZeroFeeHtlcTx,
145147
// Byte 3
146-
ShutdownAnySegwit | Taproot,
148+
RouteBlinding | ShutdownAnySegwit | Taproot,
147149
// Byte 4
148150
OnionMessages,
149151
// Byte 5
@@ -159,7 +161,7 @@ mod sealed {
159161
// Byte 2
160162
BasicMPP | Wumbo | AnchorsNonzeroFeeHtlcTx | AnchorsZeroFeeHtlcTx,
161163
// Byte 3
162-
ShutdownAnySegwit | Taproot,
164+
RouteBlinding | ShutdownAnySegwit | Taproot,
163165
// Byte 4
164166
OnionMessages,
165167
// Byte 5
@@ -391,6 +393,9 @@ mod sealed {
391393
define_feature!(23, AnchorsZeroFeeHtlcTx, [InitContext, NodeContext, ChannelTypeContext],
392394
"Feature flags for `option_anchors_zero_fee_htlc_tx`.", set_anchors_zero_fee_htlc_tx_optional,
393395
set_anchors_zero_fee_htlc_tx_required, supports_anchors_zero_fee_htlc_tx, requires_anchors_zero_fee_htlc_tx);
396+
define_feature!(25, RouteBlinding, [InitContext, NodeContext],
397+
"Feature flags for `option_route_blinding`.", set_route_blinding_optional,
398+
set_route_blinding_required, supports_route_blinding, requires_route_blinding);
394399
define_feature!(27, ShutdownAnySegwit, [InitContext, NodeContext],
395400
"Feature flags for `opt_shutdown_anysegwit`.", set_shutdown_any_segwit_optional,
396401
set_shutdown_any_segwit_required, supports_shutdown_anysegwit, requires_shutdown_anysegwit);
@@ -1049,6 +1054,7 @@ mod tests {
10491054
init_features.set_basic_mpp_optional();
10501055
init_features.set_wumbo_optional();
10511056
init_features.set_anchors_zero_fee_htlc_tx_optional();
1057+
init_features.set_route_blinding_optional();
10521058
init_features.set_shutdown_any_segwit_optional();
10531059
init_features.set_onion_messages_optional();
10541060
init_features.set_channel_type_optional();
@@ -1065,15 +1071,15 @@ mod tests {
10651071
// - option_data_loss_protect (req)
10661072
// - var_onion_optin (req) | static_remote_key (req) | payment_secret(req)
10671073
// - basic_mpp | wumbo | option_anchors_zero_fee_htlc_tx
1068-
// - opt_shutdown_anysegwit
1074+
// - option_route_blinding | opt_shutdown_anysegwit
10691075
// - onion_messages
10701076
// - option_channel_type | option_scid_alias
10711077
// - option_zeroconf
10721078
assert_eq!(node_features.flags.len(), 7);
10731079
assert_eq!(node_features.flags[0], 0b00000001);
10741080
assert_eq!(node_features.flags[1], 0b01010001);
10751081
assert_eq!(node_features.flags[2], 0b10001010);
1076-
assert_eq!(node_features.flags[3], 0b00001000);
1082+
assert_eq!(node_features.flags[3], 0b00001010);
10771083
assert_eq!(node_features.flags[4], 0b10000000);
10781084
assert_eq!(node_features.flags[5], 0b10100000);
10791085
assert_eq!(node_features.flags[6], 0b00001000);

0 commit comments

Comments
 (0)