1
- use std:: { format, fs:: File , io:: Read as _} ;
1
+ use std:: { format, fs:: File , io:: Read as _, mem } ;
2
2
3
3
use bitcoin:: consensus:: serialize;
4
4
use ckb_bitcoin_spv_verifier:: types:: { core, packed, prelude:: * } ;
@@ -47,6 +47,8 @@ fn test_spv_client(
47
47
48
48
// Update
49
49
let mut old_client: packed:: SpvClient = service. tip_client ( ) . pack ( ) ;
50
+ let mut headers = Vec :: new ( ) ;
51
+ let mut headers_group_size = 1 ;
50
52
for header_bin in header_bins_iter {
51
53
let header: core:: Header = utilities:: decode_from_bin_file ( & header_bin) . unwrap ( ) ;
52
54
let height: u32 = header_bin
@@ -58,7 +60,18 @@ fn test_spv_client(
58
60
. unwrap ( ) ;
59
61
log:: trace!( "process header-{height} from file {}" , header_bin. display( ) ) ;
60
62
61
- let update = service. update ( vec ! [ header] ) . unwrap ( ) ;
63
+ headers. push ( header) ;
64
+ if height + 1 != verify_tx_range. 0 && headers. len ( ) < headers_group_size {
65
+ continue ;
66
+ }
67
+
68
+ log:: trace!( "process {} headers at one time" , headers. len( ) ) ;
69
+ let update = service. update ( mem:: take ( & mut headers) ) . unwrap ( ) ;
70
+ if verify_tx_range. 0 <= height + 1 && height <= verify_tx_range. 1 {
71
+ headers_group_size = 1 ;
72
+ } else {
73
+ headers_group_size += 1 ;
74
+ }
62
75
let new_client: packed:: SpvClient = service. tip_client ( ) . pack ( ) ;
63
76
64
77
old_client
0 commit comments