@@ -511,7 +511,7 @@ where
511511
512512 pub fn mock_execution_layer_with_config ( mut self ) -> Self {
513513 let mock = mock_execution_layer_from_parts :: < E > (
514- self . spec . as_ref ( ) . expect ( "cannot build without spec" ) ,
514+ self . spec . clone ( ) . expect ( "cannot build without spec" ) ,
515515 self . runtime . task_executor . clone ( ) ,
516516 ) ;
517517 self . execution_layer = Some ( mock. el . clone ( ) ) ;
@@ -611,7 +611,7 @@ where
611611}
612612
613613pub fn mock_execution_layer_from_parts < E : EthSpec > (
614- spec : & ChainSpec ,
614+ spec : Arc < ChainSpec > ,
615615 task_executor : TaskExecutor ,
616616) -> MockExecutionLayer < E > {
617617 let shanghai_time = spec. capella_fork_epoch . map ( |epoch| {
@@ -624,7 +624,7 @@ pub fn mock_execution_layer_from_parts<E: EthSpec>(
624624 HARNESS_GENESIS_TIME + spec. seconds_per_slot * E :: slots_per_epoch ( ) * epoch. as_u64 ( )
625625 } ) ;
626626
627- let kzg = get_kzg ( spec) ;
627+ let kzg = get_kzg ( & spec) ;
628628
629629 MockExecutionLayer :: new (
630630 task_executor,
@@ -633,7 +633,7 @@ pub fn mock_execution_layer_from_parts<E: EthSpec>(
633633 cancun_time,
634634 prague_time,
635635 Some ( JwtKey :: from_slice ( & DEFAULT_JWT_SECRET ) . unwrap ( ) ) ,
636- spec. clone ( ) ,
636+ spec,
637637 Some ( kzg) ,
638638 )
639639}
@@ -2816,11 +2816,12 @@ pub fn generate_rand_block_and_blobs<E: EthSpec>(
28162816 fork_name : ForkName ,
28172817 num_blobs : NumBlobs ,
28182818 rng : & mut impl Rng ,
2819+ spec : & ChainSpec ,
28192820) -> ( SignedBeaconBlock < E , FullPayload < E > > , Vec < BlobSidecar < E > > ) {
28202821 let inner = map_fork_name ! ( fork_name, BeaconBlock , <_>:: random_for_test( rng) ) ;
28212822
28222823 let mut block = SignedBeaconBlock :: from_block ( inner, types:: Signature :: random_for_test ( rng) ) ;
2823-
2824+ let max_blobs = spec . max_blobs_per_block ( block . epoch ( ) ) as usize ;
28242825 let mut blob_sidecars = vec ! [ ] ;
28252826
28262827 let bundle = match block {
@@ -2830,8 +2831,7 @@ pub fn generate_rand_block_and_blobs<E: EthSpec>(
28302831 // Get either zero blobs or a random number of blobs between 1 and Max Blobs.
28312832 let payload: & mut FullPayloadDeneb < E > = & mut message. body . execution_payload ;
28322833 let num_blobs = match num_blobs {
2833- // TODO(pawan): thread the chainspec value here
2834- NumBlobs :: Random => rng. gen_range ( 1 ..=6 ) ,
2834+ NumBlobs :: Random => rng. gen_range ( 1 ..=max_blobs) ,
28352835 NumBlobs :: Number ( n) => n,
28362836 NumBlobs :: None => 0 ,
28372837 } ;
@@ -2851,8 +2851,7 @@ pub fn generate_rand_block_and_blobs<E: EthSpec>(
28512851 // Get either zero blobs or a random number of blobs between 1 and Max Blobs.
28522852 let payload: & mut FullPayloadElectra < E > = & mut message. body . execution_payload ;
28532853 let num_blobs = match num_blobs {
2854- // TODO(pawan): thread the chainspec value here
2855- NumBlobs :: Random => rng. gen_range ( 1 ..=6 ) ,
2854+ NumBlobs :: Random => rng. gen_range ( 1 ..=max_blobs) ,
28562855 NumBlobs :: Number ( n) => n,
28572856 NumBlobs :: None => 0 ,
28582857 } ;
@@ -2906,7 +2905,7 @@ pub fn generate_rand_block_and_data_columns<E: EthSpec>(
29062905 DataColumnSidecarList < E > ,
29072906) {
29082907 let kzg = get_kzg ( spec) ;
2909- let ( block, blobs) = generate_rand_block_and_blobs ( fork_name, num_blobs, rng) ;
2908+ let ( block, blobs) = generate_rand_block_and_blobs ( fork_name, num_blobs, rng, spec ) ;
29102909 let blob_refs = blobs. iter ( ) . map ( |b| & b. blob ) . collect :: < Vec < _ > > ( ) ;
29112910 let data_columns = blobs_to_data_column_sidecars ( & blob_refs, & block, & kzg, spec) . unwrap ( ) ;
29122911
0 commit comments