Skip to content

Commit 9098240

Browse files
authored
Merge pull request #590 from jkczyz/2020-04-feature-flags
Features module improvements
2 parents ea4ccf6 + ee27e84 commit 9098240

11 files changed

+684
-412
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
248248
} else { panic!("Wrong event type"); }
249249
};
250250

251-
$dest.handle_open_channel(&$source.get_our_node_id(), InitFeatures::supported(), &open_channel);
251+
$dest.handle_open_channel(&$source.get_our_node_id(), InitFeatures::known(), &open_channel);
252252
let accept_channel = {
253253
let events = $dest.get_and_clear_pending_msg_events();
254254
assert_eq!(events.len(), 1);
@@ -257,7 +257,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
257257
} else { panic!("Wrong event type"); }
258258
};
259259

260-
$source.handle_accept_channel(&$dest.get_our_node_id(), InitFeatures::supported(), &accept_channel);
260+
$source.handle_accept_channel(&$dest.get_our_node_id(), InitFeatures::known(), &accept_channel);
261261
let funding_output;
262262
{
263263
let events = $source.get_and_clear_pending_events();

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn test_simple_monitor_permanent_update_fail() {
2424
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
2525
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
2626
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
27-
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported());
27+
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
2828

2929
let route = nodes[0].router.get_route(&nodes[1].node.get_our_node_id(), None, &Vec::new(), 1000000, TEST_FINAL_CLTV).unwrap();
3030
let (_, payment_hash_1) = get_payment_preimage_hash!(&nodes[0]);
@@ -57,7 +57,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool) {
5757
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
5858
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
5959
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
60-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
60+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
6161

6262
let route = nodes[0].router.get_route(&nodes[1].node.get_our_node_id(), None, &Vec::new(), 1000000, TEST_FINAL_CLTV).unwrap();
6363
let (payment_preimage_1, payment_hash_1) = get_payment_preimage_hash!(&nodes[0]);
@@ -161,7 +161,7 @@ fn do_test_monitor_temporary_update_fail(disconnect_count: usize) {
161161
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
162162
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
163163
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
164-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
164+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
165165

166166
let (payment_preimage_1, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
167167

@@ -493,7 +493,7 @@ fn test_monitor_update_fail_cs() {
493493
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
494494
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
495495
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
496-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
496+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
497497

498498
let route = nodes[0].router.get_route(&nodes[1].node.get_our_node_id(), None, &Vec::new(), 1000000, TEST_FINAL_CLTV).unwrap();
499499
let (payment_preimage, our_payment_hash) = get_payment_preimage_hash!(nodes[0]);
@@ -578,7 +578,7 @@ fn test_monitor_update_fail_no_rebroadcast() {
578578
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
579579
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
580580
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
581-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
581+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
582582

583583
let route = nodes[0].router.get_route(&nodes[1].node.get_our_node_id(), None, &Vec::new(), 1000000, TEST_FINAL_CLTV).unwrap();
584584
let (payment_preimage_1, our_payment_hash) = get_payment_preimage_hash!(nodes[0]);
@@ -624,7 +624,7 @@ fn test_monitor_update_raa_while_paused() {
624624
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
625625
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
626626
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
627-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
627+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
628628

629629
send_payment(&nodes[0], &[&nodes[1]], 5000000, 5_000_000);
630630

@@ -695,8 +695,8 @@ fn do_test_monitor_update_fail_raa(test_ignore_second_cs: bool) {
695695
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
696696
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
697697
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
698-
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported());
699-
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::supported(), InitFeatures::supported());
698+
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
699+
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
700700

701701
// Rebalance a bit so that we can send backwards from 2 to 1.
702702
send_payment(&nodes[0], &[&nodes[1], &nodes[2]], 5000000, 5_000_000);
@@ -953,8 +953,8 @@ fn test_monitor_update_fail_reestablish() {
953953
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
954954
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
955955
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
956-
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported());
957-
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::supported(), InitFeatures::supported());
956+
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
957+
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
958958

959959
let (our_payment_preimage, _) = route_payment(&nodes[0], &[&nodes[1], &nodes[2]], 1000000);
960960

@@ -1035,7 +1035,7 @@ fn raa_no_response_awaiting_raa_state() {
10351035
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
10361036
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
10371037
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1038-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
1038+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
10391039

10401040
let route = nodes[0].router.get_route(&nodes[1].node.get_our_node_id(), None, &Vec::new(), 1000000, TEST_FINAL_CLTV).unwrap();
10411041
let (payment_preimage_1, payment_hash_1) = get_payment_preimage_hash!(nodes[0]);
@@ -1152,7 +1152,7 @@ fn claim_while_disconnected_monitor_update_fail() {
11521152
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
11531153
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
11541154
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1155-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
1155+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
11561156

11571157
// Forward a payment for B to claim
11581158
let (payment_preimage_1, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
@@ -1272,7 +1272,7 @@ fn monitor_failed_no_reestablish_response() {
12721272
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
12731273
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
12741274
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1275-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
1275+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
12761276

12771277
// Route the payment and deliver the initial commitment_signed (with a monitor update failure
12781278
// on receipt).
@@ -1342,7 +1342,7 @@ fn first_message_on_recv_ordering() {
13421342
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
13431343
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
13441344
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1345-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
1345+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
13461346

13471347
// Route the first payment outbound, holding the last RAA for B until we are set up so that we
13481348
// can deliver it and fail the monitor update.
@@ -1432,8 +1432,8 @@ fn test_monitor_update_fail_claim() {
14321432
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
14331433
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
14341434
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
1435-
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported());
1436-
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::supported(), InitFeatures::supported());
1435+
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
1436+
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
14371437

14381438
// Rebalance a bit so that we can send backwards from 3 to 2.
14391439
send_payment(&nodes[0], &[&nodes[1], &nodes[2]], 5000000, 5_000_000);
@@ -1509,8 +1509,8 @@ fn test_monitor_update_on_pending_forwards() {
15091509
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
15101510
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
15111511
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
1512-
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported());
1513-
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::supported(), InitFeatures::supported());
1512+
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
1513+
create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
15141514

15151515
// Rebalance a bit so that we can send backwards from 3 to 1.
15161516
send_payment(&nodes[0], &[&nodes[1], &nodes[2]], 5000000, 5_000_000);
@@ -1578,7 +1578,7 @@ fn monitor_update_claim_fail_no_response() {
15781578
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
15791579
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
15801580
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1581-
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).2;
1581+
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
15821582

15831583
// Forward a payment for B to claim
15841584
let (payment_preimage_1, _) = route_payment(&nodes[0], &[&nodes[1]], 1000000);
@@ -1640,8 +1640,8 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
16401640
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
16411641

16421642
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 43, None).unwrap();
1643-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::supported(), &get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id()));
1644-
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::supported(), &get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id()));
1643+
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id()));
1644+
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::known(), &get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id()));
16451645

16461646
let (temporary_channel_id, funding_tx, funding_output) = create_funding_transaction(&nodes[0], 100000, 43);
16471647

@@ -1741,10 +1741,10 @@ fn test_path_paused_mpp() {
17411741
let node_chanmgrs = create_node_chanmgrs(4, &node_cfgs, &[None, None, None, None]);
17421742
let mut nodes = create_network(4, &node_cfgs, &node_chanmgrs);
17431743

1744-
let chan_1_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::supported(), InitFeatures::supported()).0.contents.short_channel_id;
1745-
let (chan_2_ann, _, chan_2_id, _) = create_announced_chan_between_nodes(&nodes, 0, 2, InitFeatures::supported(), InitFeatures::supported());
1746-
let chan_3_id = create_announced_chan_between_nodes(&nodes, 1, 3, InitFeatures::supported(), InitFeatures::supported()).0.contents.short_channel_id;
1747-
let chan_4_id = create_announced_chan_between_nodes(&nodes, 2, 3, InitFeatures::supported(), InitFeatures::supported()).0.contents.short_channel_id;
1744+
let chan_1_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
1745+
let (chan_2_ann, _, chan_2_id, _) = create_announced_chan_between_nodes(&nodes, 0, 2, InitFeatures::known(), InitFeatures::known());
1746+
let chan_3_id = create_announced_chan_between_nodes(&nodes, 1, 3, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
1747+
let chan_4_id = create_announced_chan_between_nodes(&nodes, 2, 3, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
17481748

17491749
let (payment_preimage, payment_hash) = get_payment_preimage_hash!(&nodes[0]);
17501750
let payment_secret = PaymentSecret([0xdb; 32]);

lightning/src/ln/channel.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3445,7 +3445,7 @@ impl<ChanSigner: ChannelKeys> Channel<ChanSigner> {
34453445
let our_bitcoin_key = PublicKey::from_secret_key(&self.secp_ctx, self.local_keys.funding_key());
34463446

34473447
let msg = msgs::UnsignedChannelAnnouncement {
3448-
features: ChannelFeatures::supported(),
3448+
features: ChannelFeatures::known(),
34493449
chain_hash: chain_hash,
34503450
short_channel_id: self.get_short_channel_id().unwrap(),
34513451
node_id_1: if were_node_one { our_node_id } else { self.get_their_node_id() },
@@ -4381,11 +4381,11 @@ mod tests {
43814381
// Create Node B's channel by receiving Node A's open_channel message
43824382
let open_channel_msg = node_a_chan.get_open_channel(genesis_block(network).header.bitcoin_hash(), &&feeest);
43834383
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
4384-
let mut node_b_chan = Channel::<EnforcingChannelKeys>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::supported(), &open_channel_msg, 7, logger, &config).unwrap();
4384+
let mut node_b_chan = Channel::<EnforcingChannelKeys>::new_from_req(&&feeest, &&keys_provider, node_b_node_id, InitFeatures::known(), &open_channel_msg, 7, logger, &config).unwrap();
43854385

43864386
// Node B --> Node A: accept channel
43874387
let accept_channel_msg = node_b_chan.get_accept_channel();
4388-
node_a_chan.accept_channel(&accept_channel_msg, &config, InitFeatures::supported()).unwrap();
4388+
node_a_chan.accept_channel(&accept_channel_msg, &config, InitFeatures::known()).unwrap();
43894389

43904390
// Node A --> Node B: funding created
43914391
let output_script = node_a_chan.get_funding_redeemscript();

lightning/src/ln/channelmanager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1508,7 +1508,7 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref, K: Deref, F: Deref> ChannelMan
15081508
}
15091509

15101510
let announcement = msgs::UnsignedNodeAnnouncement {
1511-
features: NodeFeatures::supported(),
1511+
features: NodeFeatures::known(),
15121512
timestamp: self.last_node_announcement_serial.fetch_add(1, Ordering::AcqRel) as u32,
15131513
node_id: self.get_our_node_id(),
15141514
rgb, alias, addresses,

0 commit comments

Comments
 (0)