- header = BlockHeader { version: 0x20000000, prev_blockhash: header.bitcoin_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 };
- notifier.block_connected_checked(&header, height + i, &Vec::new(), &Vec::new());
+ block = Block {
+ header: BlockHeader { version: 0x20000000, prev_blockhash: block.header.block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42 },
+ txdata: vec![],
+ };
+ connect_block(node, &block, height + i);
+ }
+ block.header.block_hash()
+}
+
+pub fn connect_block<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, block: &Block, height: u32) {
+ use chain::WatchEventProvider;
+
+ let watch_events = node.chain_monitor.chain_monitor.release_pending_watch_events();
+ process_chain_watch_events(&watch_events);
+
+ let txdata: Vec<_> = block.txdata.iter().enumerate().collect();
+ loop {
+ node.chain_monitor.chain_monitor.block_connected(&block.header, &txdata, height);
+
+ let watch_events = node.chain_monitor.chain_monitor.release_pending_watch_events();
+ process_chain_watch_events(&watch_events);
+
+ if watch_events.is_empty() {
+ break;
+ }