@@ -9,6 +9,7 @@ use crate::fork_choice_signal::ForkChoiceSignalTx;
9
9
use crate :: fork_revert:: { reset_fork_choice_to_finalization, revert_to_fork_boundary} ;
10
10
use crate :: graffiti_calculator:: { GraffitiCalculator , GraffitiOrigin } ;
11
11
use crate :: head_tracker:: HeadTracker ;
12
+ use crate :: kzg_utils:: blobs_to_data_column_sidecars;
12
13
use crate :: light_client_server_cache:: LightClientServerCache ;
13
14
use crate :: migrate:: { BackgroundMigrator , MigratorConfig } ;
14
15
use crate :: observed_data_sidecars:: ObservedDataSidecars ;
@@ -562,9 +563,30 @@ where
562
563
. put_block ( & weak_subj_block_root, weak_subj_block. clone ( ) )
563
564
. map_err ( |e| format ! ( "Failed to store weak subjectivity block: {e:?}" ) ) ?;
564
565
if let Some ( blobs) = weak_subj_blobs {
565
- store
566
- . put_blobs ( & weak_subj_block_root, blobs)
567
- . map_err ( |e| format ! ( "Failed to store weak subjectivity blobs: {e:?}" ) ) ?;
566
+ if self
567
+ . spec
568
+ . is_peer_das_enabled_for_epoch ( weak_subj_block. epoch ( ) )
569
+ {
570
+ // After PeerDAS recompute columns from blobs to not force the checkpointz server
571
+ // into exposing another route.
572
+ let blobs = blobs
573
+ . iter ( )
574
+ . map ( |blob_sidecar| & blob_sidecar. blob )
575
+ . collect :: < Vec < _ > > ( ) ;
576
+ let data_columns =
577
+ blobs_to_data_column_sidecars ( & blobs, & weak_subj_block, & self . kzg , & self . spec )
578
+ . map_err ( |e| {
579
+ format ! ( "Failed to compute weak subjectivity data_columns: {e:?}" )
580
+ } ) ?;
581
+ // TODO(das): only persist the columns under custody
582
+ store
583
+ . put_data_columns ( & weak_subj_block_root, data_columns)
584
+ . map_err ( |e| format ! ( "Failed to store weak subjectivity data_column: {e:?}" ) ) ?;
585
+ } else {
586
+ store
587
+ . put_blobs ( & weak_subj_block_root, blobs)
588
+ . map_err ( |e| format ! ( "Failed to store weak subjectivity blobs: {e:?}" ) ) ?;
589
+ }
568
590
}
569
591
570
592
// Stage the database's metadata fields for atomic storage when `build` is called.
0 commit comments