@@ -109,18 +109,20 @@ pub fn connect_blocks<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, depth: u32) ->
109
109
} ;
110
110
assert ! ( depth >= 1 ) ;
111
111
for i in 1 ..depth {
112
- do_connect_block ( node, & block, skip_intermediaries) ;
112
+ let prev_blockhash = block. header . block_hash ( ) ;
113
+ do_connect_block ( node, block, skip_intermediaries) ;
113
114
block = Block {
114
- header : BlockHeader { version : 0x20000000 , prev_blockhash : block . header . block_hash ( ) , merkle_root : Default :: default ( ) , time : height + i, bits : 42 , nonce : 42 } ,
115
+ header : BlockHeader { version : 0x20000000 , prev_blockhash, merkle_root : Default :: default ( ) , time : height + i, bits : 42 , nonce : 42 } ,
115
116
txdata : vec ! [ ] ,
116
117
} ;
117
118
}
118
- connect_block ( node, & block) ;
119
- block. header . block_hash ( )
119
+ let hash = block. header . block_hash ( ) ;
120
+ do_connect_block ( node, block, false ) ;
121
+ hash
120
122
}
121
123
122
124
pub fn connect_block < ' a , ' b , ' c , ' d > ( node : & ' a Node < ' b , ' c , ' d > , block : & Block ) {
123
- do_connect_block ( node, block, false ) ;
125
+ do_connect_block ( node, block. clone ( ) , false ) ;
124
126
}
125
127
126
128
fn call_claimable_balances < ' a , ' b , ' c , ' d > ( node : & ' a Node < ' b , ' c , ' d > ) {
@@ -130,7 +132,7 @@ fn call_claimable_balances<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>) {
130
132
}
131
133
}
132
134
133
- fn do_connect_block < ' a , ' b , ' c , ' d > ( node : & ' a Node < ' b , ' c , ' d > , block : & Block , skip_intermediaries : bool ) {
135
+ fn do_connect_block < ' a , ' b , ' c , ' d > ( node : & ' a Node < ' b , ' c , ' d > , block : Block , skip_intermediaries : bool ) {
134
136
call_claimable_balances ( node) ;
135
137
let height = node. best_block_info ( ) . 1 + 1 ;
136
138
if !skip_intermediaries {
@@ -158,30 +160,30 @@ fn do_connect_block<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, block: &Block, s
158
160
}
159
161
call_claimable_balances ( node) ;
160
162
node. node . test_process_background_events ( ) ;
161
- node. blocks . lock ( ) . unwrap ( ) . push ( ( block. header , height) ) ;
163
+ node. blocks . lock ( ) . unwrap ( ) . push ( ( block, height) ) ;
162
164
}
163
165
164
166
pub fn disconnect_blocks < ' a , ' b , ' c , ' d > ( node : & ' a Node < ' b , ' c , ' d > , count : u32 ) {
165
167
call_claimable_balances ( node) ;
166
168
for i in 0 ..count {
167
- let orig_header = node. blocks . lock ( ) . unwrap ( ) . pop ( ) . unwrap ( ) ;
168
- assert ! ( orig_header . 1 > 0 ) ; // Cannot disconnect genesis
169
- let prev_header = node. blocks . lock ( ) . unwrap ( ) . last ( ) . unwrap ( ) . clone ( ) ;
169
+ let orig = node. blocks . lock ( ) . unwrap ( ) . pop ( ) . unwrap ( ) ;
170
+ assert ! ( orig . 1 > 0 ) ; // Cannot disconnect genesis
171
+ let prev = node. blocks . lock ( ) . unwrap ( ) . last ( ) . unwrap ( ) . clone ( ) ;
170
172
171
173
match * node. connect_style . borrow ( ) {
172
174
ConnectStyle :: FullBlockViaListen => {
173
- node. chain_monitor . chain_monitor . block_disconnected ( & orig_header . 0 , orig_header . 1 ) ;
174
- Listen :: block_disconnected ( node. node , & orig_header . 0 , orig_header . 1 ) ;
175
+ node. chain_monitor . chain_monitor . block_disconnected ( & orig . 0 . header , orig . 1 ) ;
176
+ Listen :: block_disconnected ( node. node , & orig . 0 . header , orig . 1 ) ;
175
177
} ,
176
178
ConnectStyle :: BestBlockFirstSkippingBlocks |ConnectStyle :: TransactionsFirstSkippingBlocks => {
177
179
if i == count - 1 {
178
- node. chain_monitor . chain_monitor . best_block_updated ( & prev_header . 0 , prev_header . 1 ) ;
179
- node. node . best_block_updated ( & prev_header . 0 , prev_header . 1 ) ;
180
+ node. chain_monitor . chain_monitor . best_block_updated ( & prev . 0 . header , prev . 1 ) ;
181
+ node. node . best_block_updated ( & prev . 0 . header , prev . 1 ) ;
180
182
}
181
183
} ,
182
184
_ => {
183
- node. chain_monitor . chain_monitor . best_block_updated ( & prev_header . 0 , prev_header . 1 ) ;
184
- node. node . best_block_updated ( & prev_header . 0 , prev_header . 1 ) ;
185
+ node. chain_monitor . chain_monitor . best_block_updated ( & prev . 0 . header , prev . 1 ) ;
186
+ node. node . best_block_updated ( & prev . 0 . header , prev . 1 ) ;
185
187
} ,
186
188
}
187
189
call_claimable_balances ( node) ;
@@ -227,7 +229,7 @@ pub struct Node<'a, 'b: 'a, 'c: 'b> {
227
229
pub network_payment_count : Rc < RefCell < u8 > > ,
228
230
pub network_chan_count : Rc < RefCell < u32 > > ,
229
231
pub logger : & ' c test_utils:: TestLogger ,
230
- pub blocks : Arc < Mutex < Vec < ( BlockHeader , u32 ) > > > ,
232
+ pub blocks : Arc < Mutex < Vec < ( Block , u32 ) > > > ,
231
233
pub connect_style : Rc < RefCell < ConnectStyle > > ,
232
234
}
233
235
impl < ' a , ' b , ' c > Node < ' a , ' b , ' c > {
@@ -238,7 +240,7 @@ impl<'a, 'b, 'c> Node<'a, 'b, 'c> {
238
240
self . blocks . lock ( ) . unwrap ( ) . last ( ) . map ( |( a, b) | ( a. block_hash ( ) , * b) ) . unwrap ( )
239
241
}
240
242
pub fn get_block_header ( & self , height : u32 ) -> BlockHeader {
241
- self . blocks . lock ( ) . unwrap ( ) [ height as usize ] . 0
243
+ self . blocks . lock ( ) . unwrap ( ) [ height as usize ] . 0 . header
242
244
}
243
245
}
244
246
@@ -1815,7 +1817,7 @@ pub fn create_chanmon_cfgs(node_count: usize) -> Vec<TestChanMonCfg> {
1815
1817
for i in 0 ..node_count {
1816
1818
let tx_broadcaster = test_utils:: TestBroadcaster {
1817
1819
txn_broadcasted : Mutex :: new ( Vec :: new ( ) ) ,
1818
- blocks : Arc :: new ( Mutex :: new ( vec ! [ ( genesis_block( Network :: Testnet ) . header , 0 ) ] ) ) ,
1820
+ blocks : Arc :: new ( Mutex :: new ( vec ! [ ( genesis_block( Network :: Testnet ) , 0 ) ] ) ) ,
1819
1821
} ;
1820
1822
let fee_estimator = test_utils:: TestFeeEstimator { sat_per_kw : Mutex :: new ( 253 ) } ;
1821
1823
let chain_source = test_utils:: TestChainSource :: new ( Network :: Testnet ) ;
0 commit comments