Skip to content

Commit 5be1101

Browse files
committed
f DRY public 0conf test
1 parent a4d42a3 commit 5be1101

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
@@ -565,80 +565,87 @@ fn test_scid_alias_returned() {
565565
.blamed_chan_closed(false).expected_htlc_error_data(0x1000|12, &err_data));
566566
}
567567

568-
#[test]
569-
fn test_simple_0conf_channel() {
570-
// If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
571-
// we should trust the funding won't be double-spent (assuming `trust_own_funding_0conf` is
572-
// set)!
573-
// Further, if we `accept_inbound_channel_from_trusted_peer_0conf`, funding locked messages
574-
// should fly immediately and the channel should be available for use as soon as they are
575-
// received.
576-
577-
let chanmon_cfgs = create_chanmon_cfgs(2);
578-
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
579-
let mut chan_config = test_default_channel_config();
580-
chan_config.manually_accept_inbound_channels = true;
581-
582-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(chan_config)]);
583-
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
584-
585-
nodes[0].node.create_channel(nodes[1].node.get_our_node_id(), 100000, 10001, 42, None).unwrap();
586-
let open_channel = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
568+
// Receiver must have been initialized with manually_accept_inbound_channels set to true.
569+
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 {
570+
initiator.node.create_channel(receiver.node.get_our_node_id(), 100_000, 10_001, 42, initiator_config).unwrap();
571+
let open_channel = get_event_msg!(initiator, MessageSendEvent::SendOpenChannel, receiver.node.get_our_node_id());
587572

588-
nodes[1].node.handle_open_channel(&nodes[0].node.get_our_node_id(), InitFeatures::known(), &open_channel);
589-
let events = nodes[1].node.get_and_clear_pending_events();
573+
receiver.node.handle_open_channel(&initiator.node.get_our_node_id(), InitFeatures::known(), &open_channel);
574+
let events = receiver.node.get_and_clear_pending_events();
590575
assert_eq!(events.len(), 1);
591576
match events[0] {
592577
Event::OpenChannelRequest { temporary_channel_id, .. } => {
593-
nodes[1].node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, &nodes[0].node.get_our_node_id(), 0).unwrap();
578+
receiver.node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, 0).unwrap();
594579
},
595580
_ => panic!("Unexpected event"),
596581
};
597582

598-
let mut accept_channel = get_event_msg!(nodes[1], MessageSendEvent::SendAcceptChannel, nodes[0].node.get_our_node_id());
583+
let mut accept_channel = get_event_msg!(receiver, MessageSendEvent::SendAcceptChannel, initiator.node.get_our_node_id());
599584
assert_eq!(accept_channel.minimum_depth, 0);
600-
nodes[0].node.handle_accept_channel(&nodes[1].node.get_our_node_id(), InitFeatures::known(), &accept_channel);
585+
initiator.node.handle_accept_channel(&receiver.node.get_our_node_id(), InitFeatures::known(), &accept_channel);
601586

602-
let (temporary_channel_id, tx, _) = create_funding_transaction(&nodes[0], &nodes[1].node.get_our_node_id(), 100000, 42);
603-
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), tx.clone()).unwrap();
604-
let funding_created = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
587+
let (temporary_channel_id, tx, _) = create_funding_transaction(&initiator, 100_000, 42);
588+
initiator.node.funding_transaction_generated(&temporary_channel_id, tx.clone()).unwrap();
589+
let funding_created = get_event_msg!(initiator, MessageSendEvent::SendFundingCreated, receiver.node.get_our_node_id());
605590

606-
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created);
607-
check_added_monitors!(nodes[1], 1);
608-
let bs_signed_locked = nodes[1].node.get_and_clear_pending_msg_events();
591+
receiver.node.handle_funding_created(&initiator.node.get_our_node_id(), &funding_created);
592+
check_added_monitors!(receiver, 1);
593+
let bs_signed_locked = receiver.node.get_and_clear_pending_msg_events();
609594
assert_eq!(bs_signed_locked.len(), 2);
610595
let as_funding_locked;
611596
match &bs_signed_locked[0] {
612597
MessageSendEvent::SendFundingSigned { node_id, msg } => {
613-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
614-
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
615-
check_added_monitors!(nodes[0], 1);
598+
assert_eq!(*node_id, initiator.node.get_our_node_id());
599+
initiator.node.handle_funding_signed(&receiver.node.get_our_node_id(), &msg);
600+
check_added_monitors!(initiator, 1);
616601

617-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
618-
assert_eq!(nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
602+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
603+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
619604

620-
as_funding_locked = get_event_msg!(nodes[0], MessageSendEvent::SendFundingLocked, nodes[1].node.get_our_node_id());
605+
as_funding_locked = get_event_msg!(initiator, MessageSendEvent::SendFundingLocked, receiver.node.get_our_node_id());
621606
}
622607
_ => panic!("Unexpected event"),
623608
}
624609
match &bs_signed_locked[1] {
625610
MessageSendEvent::SendFundingLocked { node_id, msg } => {
626-
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
627-
nodes[0].node.handle_funding_locked(&nodes[1].node.get_our_node_id(), &msg);
611+
assert_eq!(*node_id, initiator.node.get_our_node_id());
612+
initiator.node.handle_funding_locked(&receiver.node.get_our_node_id(), &msg);
628613
}
629614
_ => panic!("Unexpected event"),
630615
}
631616

632-
nodes[1].node.handle_funding_locked(&nodes[0].node.get_our_node_id(), &as_funding_locked);
617+
receiver.node.handle_funding_locked(&initiator.node.get_our_node_id(), &as_funding_locked);
633618

634-
let as_channel_update = get_event_msg!(nodes[0], MessageSendEvent::SendChannelUpdate, nodes[1].node.get_our_node_id());
635-
let bs_channel_update = get_event_msg!(nodes[1], MessageSendEvent::SendChannelUpdate, nodes[0].node.get_our_node_id());
619+
let as_channel_update = get_event_msg!(initiator, MessageSendEvent::SendChannelUpdate, receiver.node.get_our_node_id());
620+
let bs_channel_update = get_event_msg!(receiver, MessageSendEvent::SendChannelUpdate, initiator.node.get_our_node_id());
636621

637-
nodes[0].node.handle_channel_update(&nodes[1].node.get_our_node_id(), &bs_channel_update);
638-
nodes[1].node.handle_channel_update(&nodes[0].node.get_our_node_id(), &as_channel_update);
622+
initiator.node.handle_channel_update(&receiver.node.get_our_node_id(), &bs_channel_update);
623+
receiver.node.handle_channel_update(&initiator.node.get_our_node_id(), &as_channel_update);
639624

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

643650
send_payment(&nodes[0], &[&nodes[1]], 100_000);
644651
}
@@ -798,68 +805,13 @@ fn test_public_0_conf_channel() {
798805
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
799806
let mut chan_config = test_default_channel_config();
800807
chan_config.manually_accept_inbound_channels = true;
801-
chan_config.channel_options.announced_channel = true;
802808

803809
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, Some(chan_config)]);
804810
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
805811

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

864816
// We can use the channel immediately, but we can't announce it until we get 6+ confirmations
865817
send_payment(&nodes[0], &[&nodes[1]], 100_000);
@@ -894,5 +846,4 @@ fn test_public_0_conf_channel() {
894846
},
895847
_ => panic!("Unexpected event"),
896848
};
897-
898849
}

0 commit comments

Comments
 (0)