X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning%2Fsrc%2Fln%2Freorg_tests.rs;h=92a313f8c76bf751ceae65f202691dfcf2eb5d26;hb=e985334fd2a297a6b3a3e4637a4277147c4b9d7d;hp=165f86fc2665627e6bd5c909fdd5d7a6f4c1ce2d;hpb=93a75726a128c5f03e822eb70e65192074eb07b8;p=rust-lightning diff --git a/lightning/src/ln/reorg_tests.rs b/lightning/src/ln/reorg_tests.rs index 165f86fc..92a313f8 100644 --- a/lightning/src/ln/reorg_tests.rs +++ b/lightning/src/ln/reorg_tests.rs @@ -21,7 +21,9 @@ use util::test_utils; use util::ser::{ReadableArgs, Writeable}; use bitcoin::blockdata::block::{Block, BlockHeader}; +use bitcoin::blockdata::constants::genesis_block; use bitcoin::hash_types::BlockHash; +use bitcoin::network::constants::Network; use std::collections::HashMap; use std::mem; @@ -207,17 +209,8 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool) { assert_eq!(channel_state.short_to_id.len(), 1); mem::drop(channel_state); - let mut headers = Vec::new(); - let mut header = BlockHeader { version: 0x20000000, prev_blockhash: Default::default(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; - headers.push(header.clone()); - for _i in 2..100 { - header = BlockHeader { version: 0x20000000, prev_blockhash: header.block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; - headers.push(header.clone()); - } if !reorg_after_reload { - while !headers.is_empty() { - nodes[0].node.block_disconnected(&headers.pop().unwrap()); - } + disconnect_all_blocks(&nodes[0]); check_closed_broadcast!(nodes[0], false); { let channel_state = nodes[0].node.channel_state.lock().unwrap(); @@ -240,7 +233,7 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool) { new_chain_monitor = test_utils::TestChainMonitor::new(Some(nodes[0].chain_source), nodes[0].tx_broadcaster.clone(), nodes[0].logger, node_cfgs[0].fee_estimator, &persister, keys_manager); nodes[0].chain_monitor = &new_chain_monitor; let mut chan_0_monitor_read = &chan_0_monitor_serialized.0[..]; - let (_, mut chan_0_monitor) = <(Option, ChannelMonitor)>::read( + let (_, mut chan_0_monitor) = <(BlockHash, ChannelMonitor)>::read( &mut chan_0_monitor_read, keys_manager).unwrap(); assert!(chan_0_monitor_read.is_empty()); @@ -249,7 +242,7 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool) { nodes_0_deserialized = { let mut channel_monitors = HashMap::new(); channel_monitors.insert(chan_0_monitor.get_funding_txo().0, &mut chan_0_monitor); - <(Option, ChannelManager)>::read( &mut nodes_0_read, ChannelManagerReadArgs { default_config: config, @@ -269,9 +262,7 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool) { } if reorg_after_reload { - while !headers.is_empty() { - nodes[0].node.block_disconnected(&headers.pop().unwrap()); - } + disconnect_all_blocks(&nodes[0]); check_closed_broadcast!(nodes[0], false); { let channel_state = nodes[0].node.channel_state.lock().unwrap(); @@ -279,7 +270,6 @@ fn do_test_unconf_chan(reload_node: bool, reorg_after_reload: bool) { assert_eq!(channel_state.short_to_id.len(), 0); } } - // With expect_channel_force_closed set the TestChainMonitor will enforce that the next update // is a ChannelForcClosed on the right channel with should_broadcast set. *nodes[0].chain_monitor.expect_channel_force_closed.lock().unwrap() = Some((chan_id, true)); @@ -319,7 +309,7 @@ fn test_set_outpoints_partial_claiming() { check_spends!(remote_txn[2], remote_txn[0]); // Connect blocks on node A to advance height towards TEST_FINAL_CLTV - let prev_header_100 = connect_blocks(&nodes[1], 100, 0, false, Default::default()); + let block_hash_100 = connect_blocks(&nodes[1], 100, 0, false, genesis_block(Network::Testnet).header.block_hash()); // Provide node A with both preimage nodes[0].node.claim_funds(payment_preimage_1, &None, 3_000_000); nodes[0].node.claim_funds(payment_preimage_2, &None, 3_000_000); @@ -328,8 +318,8 @@ fn test_set_outpoints_partial_claiming() { nodes[0].node.get_and_clear_pending_msg_events(); // Connect blocks on node A commitment transaction - let header = BlockHeader { version: 0x20000000, prev_blockhash: prev_header_100, merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; - connect_block(&nodes[0], &Block { header, txdata: vec![remote_txn[0].clone()] }, 101); + let header_101 = BlockHeader { version: 0x20000000, prev_blockhash: block_hash_100, merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; + connect_block(&nodes[0], &Block { header: header_101, txdata: vec![remote_txn[0].clone()] }, CHAN_CONFIRM_DEPTH + 1); check_closed_broadcast!(nodes[0], false); check_added_monitors!(nodes[0], 1); // Verify node A broadcast tx claiming both HTLCs @@ -361,8 +351,8 @@ fn test_set_outpoints_partial_claiming() { }; // Broadcast partial claim on node A, should regenerate a claiming tx with HTLC dropped - let header = BlockHeader { version: 0x20000000, prev_blockhash: header.block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; - connect_block(&nodes[0], &Block { header, txdata: vec![partial_claim_tx.clone()] }, 102); + let header_102 = BlockHeader { version: 0x20000000, prev_blockhash: header_101.block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 }; + connect_block(&nodes[0], &Block { header: header_102, txdata: vec![partial_claim_tx.clone()] }, CHAN_CONFIRM_DEPTH + 2); { let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap(); assert_eq!(node_txn.len(), 1); @@ -373,7 +363,7 @@ fn test_set_outpoints_partial_claiming() { nodes[0].node.get_and_clear_pending_msg_events(); // Disconnect last block on node A, should regenerate a claiming tx with HTLC dropped - disconnect_block(&nodes[0], &header, 102); + disconnect_block(&nodes[0], &header_102, CHAN_CONFIRM_DEPTH + 2); { let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap(); assert_eq!(node_txn.len(), 1); @@ -383,8 +373,8 @@ fn test_set_outpoints_partial_claiming() { } //// Disconnect one more block and then reconnect multiple no transaction should be generated - disconnect_block(&nodes[0], &header, 101); - connect_blocks(&nodes[1], 15, 101, false, prev_header_100); + disconnect_block(&nodes[0], &header_101, CHAN_CONFIRM_DEPTH + 1); + connect_blocks(&nodes[1], 15, 101, false, block_hash_100); { let mut node_txn = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap(); assert_eq!(node_txn.len(), 0);