diff --git a/common/features.c b/common/features.c index a6241a179..7cd520c85 100644 --- a/common/features.c +++ b/common/features.c @@ -10,7 +10,8 @@ static const u32 our_localfeatures[] = { OPTIONAL_FEATURE(LOCAL_UPFRONT_SHUTDOWN_SCRIPT), OPTIONAL_FEATURE(LOCAL_GOSSIP_QUERIES), #if EXPERIMENTAL_FEATURES - OPTIONAL_FEATURE(LOCAL_GOSSIP_QUERIES_EX) + OPTIONAL_FEATURE(LOCAL_GOSSIP_QUERIES_EX), + OPTIONAL_FEATURE(LOCAL_STATIC_REMOTEKEY), #endif }; diff --git a/common/features.h b/common/features.h index 129a3578e..1514e9403 100644 --- a/common/features.h +++ b/common/features.h @@ -25,7 +25,7 @@ const char **list_supported_features(const tal_t *ctx); bool feature_is_set(const u8 *features, size_t bit); void set_feature_bit(u8 **ptr, u32 bit); -/* BOLT #9: +/* BOLT-930a9b44076a8f25a8626b31b3d5a55c0888308c #9: * * Flags are numbered from the least-significant bit, at bit 0 (i.e. 0x1, * an _even_ bit). They are generally assigned in pairs so that features @@ -36,7 +36,7 @@ void set_feature_bit(u8 **ptr, u32 bit); #define COMPULSORY_FEATURE(x) ((x) & 0xFFFFFFFE) #define OPTIONAL_FEATURE(x) ((x) | 1) -/* BOLT #9: +/* BOLT-930a9b44076a8f25a8626b31b3d5a55c0888308c #9: * * ## Assigned `localfeatures` flags *... @@ -45,11 +45,13 @@ void set_feature_bit(u8 **ptr, u32 bit); * | 3 | `initial_routing_sync` |... * | 4/5 | `option_upfront_shutdown_script` |... * | 6/7 | `gossip_queries` |... + * | 48/49| `option_static_remotekey` |... */ #define LOCAL_DATA_LOSS_PROTECT 0 #define LOCAL_INITIAL_ROUTING_SYNC 2 #define LOCAL_UPFRONT_SHUTDOWN_SCRIPT 4 #define LOCAL_GOSSIP_QUERIES 6 +#define LOCAL_STATIC_REMOTEKEY 48 /* BOLT-927c96daab2338b716708a57cd75c84a2d169e0e #9: * | Bits | Name |... diff --git a/tests/test_connection.py b/tests/test_connection.py index 0b76011b3..b7c82ce98 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -1345,7 +1345,7 @@ def test_peerinfo(node_factory, bitcoind): l1, l2 = node_factory.line_graph(2, fundchannel=False, opts={'may_reconnect': True}) lfeatures = 'aa' if EXPERIMENTAL_FEATURES: - lfeatures = '08aa' + lfeatures = '020000000008aa' # Gossiping but no node announcement yet assert l1.rpc.getpeer(l2.info['id'])['connected'] assert len(l1.rpc.getpeer(l2.info['id'])['channels']) == 0 @@ -1596,16 +1596,18 @@ def test_dataloss_protection(node_factory, bitcoind): feerates=(7500, 7500, 7500), allow_broken_log=True) if EXPERIMENTAL_FEATURES: - # lflen == 2, features 1, 3, 5, 7 and 11 (0x08aa). - lf = "0002" + "08aa" + # features 1, 3, 5, 7, 11 and 49 (0x020000000008aa). + lf = "020000000008aa" else: - # lflen == 1, features 1, 3, 5 and 7 (0xaa). - lf = "0001" + "aa" + # features 1, 3, 5 and 7 (0xaa). + lf = "aa" l1.rpc.connect(l2.info['id'], 'localhost', l2.port) # l1 should send out WIRE_INIT (0010) l1.daemon.wait_for_log(r"\[OUT\] 0010" # gflen == 0 "0000" + # lflen + + format(len(lf) // 2, '04x') + lf) l1.fund_channel(l2, 10**6)