Skip to content

Commit 98292f3

Browse files
committed
Run chanmon_consistency_test with anchor outputs channels
1 parent 1852715 commit 98292f3

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

fuzz/src/chanmon_consistency.rs

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ fn send_hop_payment(source: &ChanMan, middle: &ChanMan, middle_chan_id: u64, des
431431
}
432432

433433
#[inline]
434-
pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
434+
pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
435435
let out = SearchingOutput::new(underlying_out);
436436
let broadcast = Arc::new(TestBroadcaster{});
437437
let router = FuzzRouter {};
@@ -449,6 +449,10 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
449449
let mut config = UserConfig::default();
450450
config.channel_config.forwarding_fee_proportional_millionths = 0;
451451
config.channel_handshake_config.announced_channel = true;
452+
if anchors {
453+
config.channel_handshake_config.negotiate_anchors_zero_fee_htlc_tx = true;
454+
config.manually_accept_inbound_channels = true;
455+
}
452456
let network = Network::Bitcoin;
453457
let best_block_timestamp = genesis_block(network).header.time;
454458
let params = ChainParameters {
@@ -508,7 +512,7 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
508512

509513
let mut channel_txn = Vec::new();
510514
macro_rules! make_channel {
511-
($source: expr, $dest: expr, $chan_id: expr) => { {
515+
($source: expr, $dest: expr, $dest_keys_manager: expr, $chan_id: expr) => { {
512516
$source.peer_connected(&$dest.get_our_node_id(), &Init {
513517
features: $dest.init_features(), networks: None, remote_network_address: None
514518
}, true).unwrap();
@@ -527,6 +531,22 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
527531

528532
$dest.handle_open_channel(&$source.get_our_node_id(), &open_channel);
529533
let accept_channel = {
534+
if anchors {
535+
let events = $dest.get_and_clear_pending_events();
536+
assert_eq!(events.len(), 1);
537+
if let events::Event::OpenChannelRequest {
538+
ref temporary_channel_id, ref counterparty_node_id, ..
539+
} = events[0] {
540+
let mut random_bytes = [0u8; 16];
541+
random_bytes.copy_from_slice(&$dest_keys_manager.get_secure_random_bytes()[..16]);
542+
let user_channel_id = u128::from_be_bytes(random_bytes);
543+
$dest.accept_inbound_channel(
544+
temporary_channel_id,
545+
counterparty_node_id,
546+
user_channel_id,
547+
).unwrap();
548+
} else { panic!("Wrong event type"); }
549+
}
530550
let events = $dest.get_and_clear_pending_msg_events();
531551
assert_eq!(events.len(), 1);
532552
if let events::MessageSendEvent::SendAcceptChannel { ref msg, .. } = events[0] {
@@ -638,8 +658,8 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out) {
638658

639659
let mut nodes = [node_a, node_b, node_c];
640660

641-
let chan_1_funding = make_channel!(nodes[0], nodes[1], 0);
642-
let chan_2_funding = make_channel!(nodes[1], nodes[2], 1);
661+
let chan_1_funding = make_channel!(nodes[0], nodes[1], keys_manager_b, 0);
662+
let chan_2_funding = make_channel!(nodes[1], nodes[2], keys_manager_c, 1);
643663

644664
for node in nodes.iter() {
645665
confirm_txn!(node);
@@ -1337,10 +1357,12 @@ impl<O: Output> SearchingOutput<O> {
13371357
}
13381358

13391359
pub fn chanmon_consistency_test<Out: Output>(data: &[u8], out: Out) {
1340-
do_test(data, out);
1360+
do_test(data, out.clone(), false);
1361+
do_test(data, out, true);
13411362
}
13421363

13431364
#[no_mangle]
13441365
pub extern "C" fn chanmon_consistency_run(data: *const u8, datalen: usize) {
1345-
do_test(unsafe { std::slice::from_raw_parts(data, datalen) }, test_logger::DevNull{});
1366+
do_test(unsafe { std::slice::from_raw_parts(data, datalen) }, test_logger::DevNull{}, false);
1367+
do_test(unsafe { std::slice::from_raw_parts(data, datalen) }, test_logger::DevNull{}, true);
13461368
}

0 commit comments

Comments
 (0)