@@ -35,8 +35,8 @@ use crate::queue_adapter::MessageQueueAdapter;
35
35
use crate :: tracing_targets;
36
36
use crate :: types:: processed_upto:: { ProcessedUptoInfoExtension , ProcessedUptoInfoStuff } ;
37
37
use crate :: types:: {
38
- BlockCandidate , CollationSessionInfo , CollatorConfig , McData , ShardDescriptionShortExt ,
39
- ShardHashesExt ,
38
+ BlockCandidate , CollationSessionInfo , CollatorConfig , McData , McDataStuff ,
39
+ ShardDescriptionShortExt , ShardHashesExt ,
40
40
} ;
41
41
use crate :: utils:: block:: detect_top_processed_to_anchor;
42
42
@@ -92,7 +92,8 @@ impl Phase<FinalizeState> {
92
92
} else {
93
93
let mut top_other_updated_shard_blocks_ids: Vec < BlockId > = self
94
94
. state
95
- . mc_data
95
+ . mc_data_stuff
96
+ . current
96
97
. shards
97
98
. iter ( )
98
99
. filter ( |( shard, descr) | {
@@ -101,7 +102,7 @@ impl Phase<FinalizeState> {
101
102
. map ( |( shard_ident, descr) | descr. get_block_id ( * shard_ident) )
102
103
. collect ( ) ;
103
104
104
- top_other_updated_shard_blocks_ids. push ( self . state . mc_data . block_id ) ;
105
+ top_other_updated_shard_blocks_ids. push ( self . state . mc_data_stuff . current . block_id ) ;
105
106
106
107
top_other_updated_shard_blocks_ids
107
108
} ;
@@ -288,15 +289,15 @@ impl Phase<FinalizeState> {
288
289
let mut public_libraries = executor. executor_params ( ) . libraries . clone ( ) ;
289
290
290
291
let is_masterchain = shard. is_masterchain ( ) ;
291
- let config_address = & self . state . mc_data . config . address ;
292
+ let config_address = & self . state . mc_data_stuff . current . config . address ;
292
293
293
294
// Compute a masterchain block seqno which will reference this block.
294
295
let ref_by_mc_seqno = if is_masterchain {
295
296
// The block itself for the masterchain
296
297
collation_data. block_id_short . seqno
297
298
} else {
298
299
// And the next masterchain block for shards
299
- self . state . mc_data . block_id . seqno + 1
300
+ self . state . mc_data_stuff . current . block_id . seqno + 1
300
301
} ;
301
302
302
303
let mut processed_accounts_res = Ok ( Default :: default ( ) ) ;
@@ -357,15 +358,15 @@ impl Phase<FinalizeState> {
357
358
& processed_accounts. shard_accounts ,
358
359
& in_msgs,
359
360
& out_msgs,
360
- & self . state . mc_data . config ,
361
+ & self . state . mc_data_stuff . current . config ,
361
362
) ?;
362
363
363
364
// Validate value flow with simple rules.
364
365
if collator_config. check_value_flow {
365
366
Self :: check_value_flow (
366
367
& value_flow,
367
368
& self . state . collation_data ,
368
- & self . state . mc_data . config ,
369
+ & self . state . mc_data_stuff . current . config ,
369
370
& self . state . prev_shard_data ,
370
371
& in_msgs,
371
372
& out_msgs,
@@ -412,7 +413,10 @@ impl Phase<FinalizeState> {
412
413
( Some ( extra) , None )
413
414
} else {
414
415
build_mc_state_extra_elapsed = Duration :: ZERO ;
415
- ( None , Some ( self . state . mc_data . make_block_ref ( ) ) )
416
+ (
417
+ None ,
418
+ Some ( self . state . mc_data_stuff . current . make_block_ref ( ) ) ,
419
+ )
416
420
} ;
417
421
418
422
// HACK: make every 3-d block incorrect on debug if env variable defined
@@ -438,7 +442,7 @@ impl Phase<FinalizeState> {
438
442
gen_validator_list_hash_short : collation_session. collators ( ) . short_hash ,
439
443
gen_catchain_seqno : collation_session. seqno ( ) ,
440
444
min_ref_mc_seqno : self . state . collation_data . min_ref_mc_seqno ,
441
- prev_key_block_seqno : self . state . mc_data . prev_key_block_seqno ,
445
+ prev_key_block_seqno : self . state . mc_data_stuff . current . prev_key_block_seqno ,
442
446
master_ref : master_ref. as_ref ( ) . map ( Lazy :: new) . transpose ( ) ?,
443
447
..Default :: default ( )
444
448
} ;
@@ -452,7 +456,12 @@ impl Phase<FinalizeState> {
452
456
// info.want_split = false;
453
457
// info.want_merge = false;
454
458
455
- let bc_global_version = self . state . mc_data . config . get_global_version ( ) ?;
459
+ let bc_global_version = self
460
+ . state
461
+ . mc_data_stuff
462
+ . current
463
+ . config
464
+ . get_global_version ( ) ?;
456
465
if bc_global_version
457
466
. capabilities
458
467
. contains ( GlobalCapability :: CapReportVersion )
@@ -500,7 +509,8 @@ impl Phase<FinalizeState> {
500
509
// because mempool will not produce more anchors
501
510
let max_consensus_lag_rounds = self
502
511
. state
503
- . mc_data
512
+ . mc_data_stuff
513
+ . current
504
514
. config
505
515
. get_consensus_config ( ) ?
506
516
. max_consensus_lag_rounds as u64 ;
@@ -525,7 +535,7 @@ impl Phase<FinalizeState> {
525
535
526
536
// build new state
527
537
let mut new_observable_state = Box :: new ( ShardStateUnsplit {
528
- global_id : self . state . mc_data . global_id ,
538
+ global_id : self . state . mc_data_stuff . current . global_id ,
529
539
shard_ident : new_block_info. shard ,
530
540
seqno : new_block_info. seqno ,
531
541
vert_seqno : 0 ,
@@ -629,7 +639,7 @@ impl Phase<FinalizeState> {
629
639
630
640
// construct block
631
641
let block = Block {
632
- global_id : self . state . mc_data . global_id ,
642
+ global_id : self . state . mc_data_stuff . current . global_id ,
633
643
info : Lazy :: new ( & new_block_info) ?,
634
644
value_flow : Lazy :: new ( & value_flow) ?,
635
645
state_update : Lazy :: new ( & state_update) ?,
@@ -702,7 +712,7 @@ impl Phase<FinalizeState> {
702
712
703
713
let processed_to_anchor_id = processed_upto. get_min_externals_processed_to ( ) ?. 0 ;
704
714
705
- let new_mc_data = match mc_state_extra {
715
+ let mc_data_stuff = match mc_state_extra {
706
716
None => None ,
707
717
Some ( extra) => {
708
718
let prev_key_block_seqno = if extra. after_key_block {
@@ -720,7 +730,7 @@ impl Phase<FinalizeState> {
720
730
processed_to_anchor_id,
721
731
) ;
722
732
723
- Some ( Arc :: new ( McData {
733
+ let current_mc_data = Arc :: new ( McData {
724
734
global_id : new_block. as_ref ( ) . global_id ,
725
735
block_id : * new_block. id ( ) ,
726
736
@@ -744,8 +754,15 @@ impl Phase<FinalizeState> {
744
754
. collation_data
745
755
. mc_shards_processed_to_by_partitions
746
756
. clone ( ) ,
747
- prev_mc_block_id : Some ( self . state . mc_data . block_id ) ,
748
- } ) )
757
+ prev_mc_block_id : Some ( self . state . mc_data_stuff . current . block_id ) ,
758
+ } ) ;
759
+
760
+ let mc_data_stuff = McDataStuff {
761
+ current : current_mc_data,
762
+ previous : Some ( self . state . mc_data_stuff . current . clone ( ) ) ,
763
+ } ;
764
+
765
+ Some ( mc_data_stuff)
749
766
}
750
767
} ;
751
768
@@ -772,9 +789,9 @@ impl Phase<FinalizeState> {
772
789
value_flow,
773
790
created_by : self . state . collation_data . created_by ,
774
791
queue_diff_aug : queue_diff. build ( & new_block_id) ,
775
- consensus_info : new_mc_data . as_ref ( ) . map_or_else (
776
- || self . state . mc_data . consensus_info ,
777
- |mcd| mcd. consensus_info ,
792
+ consensus_info : mc_data_stuff . as_ref ( ) . map_or_else (
793
+ || self . state . mc_data_stuff . current . consensus_info ,
794
+ |mcd| mcd. current . consensus_info ,
778
795
) ,
779
796
processed_upto,
780
797
} ) ;
@@ -798,11 +815,11 @@ impl Phase<FinalizeState> {
798
815
FinalizeBlockResult {
799
816
collation_data : self . state . collation_data ,
800
817
block_candidate,
801
- mc_data : new_mc_data,
818
+ mc_data_stuff,
819
+ old_mc_data_stuff : self . state . mc_data_stuff ,
802
820
new_state_root,
803
821
new_observable_state,
804
822
finalize_wu_total,
805
- old_mc_data : self . state . mc_data ,
806
823
collation_config : self . state . collation_config ,
807
824
} ,
808
825
self . extra . execute_result ,
0 commit comments