Skip to content

Commit cae6340

Browse files
committed
f DRY public 0conf test
1 parent 0d40d8d commit cae6340

File tree

1 file changed

+55
-104
lines changed

1 file changed

+55
-104
lines changed

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 55 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -557,80 +557,87 @@ fn test_scid_alias_returned() {
557557
.blamed_chan_closed(false).expected_htlc_error_data(0x1000|12, &err_data));
558558
}
559559

560-
#[test]
561-
fn test_simple_0_conf_channel() {
562-
// If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
563-
// we should trust the funding won't be double-spent (assuming `trust_own_funding_0conf` is
564-
// set)!
565-
// Further, if we `accept_inbound_channel_from_trusted_peer_0conf`, funding locked messages
566-
// should fly immediately and the channel should be available for use as soon as they are
567-
// received.
568-
569-
let chanmon_cfgs = create_chanmon_cfgs(2);
570-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
571-
let mut chan_config = test_default_channel_config();
572-
chan_config.manually_accept_inbound_channels = true;
573-
574-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(chan_config)]);
575-
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
576-
577-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
578-
let open_channel = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
560+
// Receiver must have been initialized with manually_accept_inbound_channels set to true.
561+
fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, receiver: &'a Node<'b, 'c, 'd>, initiator_config: Option<UserConfig>) -> bitcoin::Transaction {
562+
initiator.node.create_channel(receiver.node.get_our_node_id(), 100_000, 10_001, 42, initiator_config).unwrap();
563+
let open_channel = get_event_msg!(initiator, MessageSendEvent::SendOpenChannel, receiver.node.get_our_node_id());
579564

580-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &open_channel);
581-
let events = nodes[1].node.get_and_clear_pending_events();
565+
receiver.node.handle_open_channel(&initiator.node.get_our_node_id(), InitFeatures::known(), &open_channel);
566+
let events = receiver.node.get_and_clear_pending_events();
582567
assert_eq!(events.len(), 1);
583568
match events[0] {
584569
Event::OpenChannelRequest { temporary_channel_id, .. } => {
585-
nodes[1].node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, 0).unwrap();
570+
receiver.node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, 0).unwrap();
586571
},
587572
_ => panic!("Unexpected event"),
588573
};
589574

590-
let mut accept_channel = get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id());
575+
let mut accept_channel = get_event_msg!(receiver, MessageSendEvent::SendAcceptChannel, initiator.node.get_our_node_id());
591576
assert_eq!(accept_channel.minimum_depth, 0);
592-
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::known(), &accept_channel);
577+
initiator.node.handle_accept_channel(&receiver.node.get_our_node_id(), InitFeatures::known(), &accept_channel);
593578

594-
let (temporary_channel_id, tx, _) = create_funding_transaction(&nodes[0], 100000, 42);
595-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, tx.clone()).unwrap();
596-
let funding_created = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
579+
let (temporary_channel_id, tx, _) = create_funding_transaction(&initiator, 100_000, 42);
580+
initiator.node.funding_transaction_generated(&temporary_channel_id, tx.clone()).unwrap();
581+
let funding_created = get_event_msg!(initiator, MessageSendEvent::SendFundingCreated, receiver.node.get_our_node_id());
597582

598-
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created);
599-
check_added_monitors!(nodes[1], 1);
600-
let bs_signed_locked = nodes[1].node.get_and_clear_pending_msg_events();
583+
receiver.node.handle_funding_created(&initiator.node.get_our_node_id(), &funding_created);
584+
check_added_monitors!(receiver, 1);
585+
let bs_signed_locked = receiver.node.get_and_clear_pending_msg_events();
601586
assert_eq!(bs_signed_locked.len(), 2);
602587
let as_funding_locked;
603588
match &bs_signed_locked[0] {
604589
MessageSendEvent::SendFundingSigned { node_id, msg } => {
605-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
606-
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
607-
check_added_monitors!(nodes[0], 1);
590+
assert_eq!(*node_id, initiator.node.get_our_node_id());
591+
initiator.node.handle_funding_signed(&receiver.node.get_our_node_id(), &msg);
592+
check_added_monitors!(initiator, 1);
608593

609-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
610-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
594+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
595+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
611596

612-
as_funding_locked = get_event_msg!(nodes[0], MessageSendEvent::SendFundingLocked, nodes[1].node.get_our_node_id());
597+
as_funding_locked = get_event_msg!(initiator, MessageSendEvent::SendFundingLocked, receiver.node.get_our_node_id());
613598
}
614599
_ => panic!("Unexpected event"),
615600
}
616601
match &bs_signed_locked[1] {
617602
MessageSendEvent::SendFundingLocked { node_id, msg } => {
618-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
619-
nodes[0].node.handle_funding_locked(&nodes[1].node.get_our_node_id(), &msg);
603+
assert_eq!(*node_id, initiator.node.get_our_node_id());
604+
initiator.node.handle_funding_locked(&receiver.node.get_our_node_id(), &msg);
620605
}
621606
_ => panic!("Unexpected event"),
622607
}
623608

624-
nodes[1].node.handle_funding_locked(&nodes[0].node.get_our_node_id(), &as_funding_locked);
609+
receiver.node.handle_funding_locked(&initiator.node.get_our_node_id(), &as_funding_locked);
625610

626-
let as_channel_update = get_event_msg!(nodes[0], MessageSendEvent::SendChannelUpdate, nodes[1].node.get_our_node_id());
627-
let bs_channel_update = get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, nodes[0].node.get_our_node_id());
611+
let as_channel_update = get_event_msg!(initiator, MessageSendEvent::SendChannelUpdate, receiver.node.get_our_node_id());
612+
let bs_channel_update = get_event_msg!(receiver, MessageSendEvent::SendChannelUpdate, initiator.node.get_our_node_id());
628613

629-
nodes[0].node.handle_channel_update(&nodes[1].node.get_our_node_id(), &bs_channel_update);
630-
nodes[1].node.handle_channel_update(&nodes[0].node.get_our_node_id(), &as_channel_update);
614+
initiator.node.handle_channel_update(&receiver.node.get_our_node_id(), &bs_channel_update);
615+
receiver.node.handle_channel_update(&initiator.node.get_our_node_id(), &as_channel_update);
631616

632-
assert_eq!(nodes[0].node.list_usable_channels().len(), 1);
633-
assert_eq!(nodes[1].node.list_usable_channels().len(), 1);
617+
assert_eq!(initiator.node.list_usable_channels().len(), 1);
618+
assert_eq!(receiver.node.list_usable_channels().len(), 1);
619+
620+
tx
621+
}
622+
623+
#[test]
624+
fn test_simple_0_conf_channel() {
625+
// If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
626+
// we should trust the funding won't be double-spent (assuming `trust_own_funding_0conf` is
627+
// set)!
628+
// Further, if we `accept_inbound_channel_from_trusted_peer_0conf`, funding locked messages
629+
// should fly immediately and the channel should be available for use as soon as they are
630+
// received.
631+
632+
let chanmon_cfgs = create_chanmon_cfgs(2);
633+
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
634+
let mut chan_config = test_default_channel_config();
635+
chan_config.manually_accept_inbound_channels = true;
636+
637+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(chan_config)]);
638+
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
639+
640+
open_zero_conf_channel(&nodes[0], &nodes[1], None);
634641

635642
send_payment(&nodes[0], &[&nodes[1]], 100_000);
636643
}
@@ -790,68 +797,13 @@ fn test_public_0_conf_channel() {
790797
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
791798
let mut chan_config = test_default_channel_config();
792799
chan_config.manually_accept_inbound_channels = true;
793-
chan_config.channel_options.announced_channel = true;
794800

795801
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(chan_config)]);
796802
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
797803

798-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
799-
let open_channel = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
800-
801-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &open_channel);
802-
let events = nodes[1].node.get_and_clear_pending_events();
803-
assert_eq!(events.len(), 1);
804-
match events[0] {
805-
Event::OpenChannelRequest { temporary_channel_id, .. } => {
806-
nodes[1].node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, 0).unwrap();
807-
},
808-
_ => panic!("Unexpected event"),
809-
};
810-
811-
let mut accept_channel = get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id());
812-
assert_eq!(accept_channel.minimum_depth, 0);
813-
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::known(), &accept_channel);
814-
815-
let (temporary_channel_id, tx, _) = create_funding_transaction(&nodes[0], 100000, 42);
816-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, tx.clone()).unwrap();
817-
let funding_created = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
818-
819-
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created);
820-
check_added_monitors!(nodes[1], 1);
821-
let bs_signed_locked = nodes[1].node.get_and_clear_pending_msg_events();
822-
assert_eq!(bs_signed_locked.len(), 2);
823-
let as_funding_locked;
824-
match &bs_signed_locked[0] {
825-
MessageSendEvent::SendFundingSigned { node_id, msg } => {
826-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
827-
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
828-
check_added_monitors!(nodes[0], 1);
829-
830-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
831-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
832-
833-
as_funding_locked = get_event_msg!(nodes[0], MessageSendEvent::SendFundingLocked, nodes[1].node.get_our_node_id());
834-
}
835-
_ => panic!("Unexpected event"),
836-
}
837-
match &bs_signed_locked[1] {
838-
MessageSendEvent::SendFundingLocked { node_id, msg } => {
839-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
840-
nodes[0].node.handle_funding_locked(&nodes[1].node.get_our_node_id(), &msg);
841-
}
842-
_ => panic!("Unexpected event"),
843-
}
844-
845-
nodes[1].node.handle_funding_locked(&nodes[0].node.get_our_node_id(), &as_funding_locked);
846-
847-
let as_channel_update = get_event_msg!(nodes[0], MessageSendEvent::SendChannelUpdate, nodes[1].node.get_our_node_id());
848-
let bs_channel_update = get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, nodes[0].node.get_our_node_id());
849-
850-
nodes[0].node.handle_channel_update(&nodes[1].node.get_our_node_id(), &bs_channel_update);
851-
nodes[1].node.handle_channel_update(&nodes[0].node.get_our_node_id(), &as_channel_update);
852-
853-
assert_eq!(nodes[0].node.list_usable_channels().len(), 1);
854-
assert_eq!(nodes[1].node.list_usable_channels().len(), 1);
804+
// This is the default but we force it on anyway
805+
chan_config.channel_options.announced_channel = true;
806+
let tx = open_zero_conf_channel(&nodes[0], &nodes[1], Some(chan_config));
855807

856808
// We can use the channel immediately, but we can't announce it until we get 6+ confirmations
857809
send_payment(&nodes[0], &[&nodes[1]], 100_000);
@@ -886,5 +838,4 @@ fn test_public_0_conf_channel() {
886838
},
887839
_ => panic!("Unexpected event"),
888840
};
889-
890841
}

0 commit comments

Comments
 (0)