11use beacon_chain:: blob_verification:: GossipVerifiedBlob ;
22use beacon_chain:: data_column_verification:: GossipVerifiedDataColumn ;
3- use beacon_chain:: test_utils:: { BeaconChainHarness , TEST_DATA_COLUMN_SIDECARS_SSZ } ;
3+ use beacon_chain:: test_utils:: { BeaconChainHarness , generate_data_column_sidecars_from_block } ;
44use eth2:: types:: { EventKind , SseBlobSidecar , SseDataColumnSidecar } ;
55use rand:: SeedableRng ;
66use rand:: rngs:: StdRng ;
77use std:: sync:: Arc ;
88use types:: blob_sidecar:: FixedBlobSidecarList ;
99use types:: test_utils:: TestRandom ;
10- use types:: {
11- BlobSidecar , DataColumnSidecar , EthSpec , ForkName , MinimalEthSpec , RuntimeVariableList , Slot ,
12- } ;
10+ use types:: { BlobSidecar , DataColumnSidecar , EthSpec , ForkName , MinimalEthSpec , Slot } ;
1311
1412type E = MinimalEthSpec ;
1513
@@ -108,19 +106,18 @@ async fn blob_sidecar_event_on_process_rpc_blobs() {
108106 let mut blob_event_receiver = event_handler. subscribe_blob_sidecar ( ) ;
109107
110108 // build and process multiple rpc blobs
111- let kzg = harness. chain . kzg . as_ref ( ) ;
112- let mut rng = StdRng :: seed_from_u64 ( 0xDEADBEEF0BAD5EEDu64 ) ;
109+ harness. execution_block_generator ( ) . set_min_blob_count ( 2 ) ;
113110
114- let mut blob_1 = BlobSidecar :: random_valid ( & mut rng , kzg ) . unwrap ( ) ;
115- let mut blob_2 = BlobSidecar {
116- index : 1 ,
117- .. BlobSidecar :: random_valid ( & mut rng , kzg ) . unwrap ( )
118- } ;
119- let parent_root = harness . chain . head ( ) . head_block_root ( ) ;
120- blob_1. signed_block_header . message . parent_root = parent_root ;
121- blob_2 . signed_block_header . message . parent_root = parent_root ;
122- let blob_1 = Arc :: new ( blob_1 ) ;
123- let blob_2 = Arc :: new ( blob_2 ) ;
111+ let head_state = harness . get_current_state ( ) ;
112+ let slot = head_state . slot ( ) + 1 ;
113+ let ( ( signed_block , opt_blobs ) , _ ) = harness . make_block ( head_state , slot ) . await ;
114+ let ( kzg_proofs , blobs ) = opt_blobs . unwrap ( ) ;
115+ assert ! ( blobs . len ( ) > 2 ) ;
116+
117+ let blob_1 =
118+ Arc :: new ( BlobSidecar :: new ( 0 , blobs [ 0 ] . clone ( ) , & signed_block , kzg_proofs [ 0 ] ) . unwrap ( ) ) ;
119+ let blob_2 =
120+ Arc :: new ( BlobSidecar :: new ( 1 , blobs [ 1 ] . clone ( ) , & signed_block , kzg_proofs [ 1 ] ) . unwrap ( ) ) ;
124121
125122 let blobs = FixedBlobSidecarList :: new ( vec ! [ Some ( blob_1. clone( ) ) , Some ( blob_2. clone( ) ) ] ) ;
126123 let expected_sse_blobs = vec ! [
@@ -130,7 +127,7 @@ async fn blob_sidecar_event_on_process_rpc_blobs() {
130127
131128 let _ = harness
132129 . chain
133- . process_rpc_blobs ( blob_1 . slot ( ) , blob_1. block_root ( ) , blobs)
130+ . process_rpc_blobs ( slot, blob_1. block_root ( ) , blobs)
134131 . await
135132 . unwrap ( ) ;
136133
@@ -159,20 +156,24 @@ async fn data_column_sidecar_event_on_process_rpc_columns() {
159156 let event_handler = harness. chain . event_handler . as_ref ( ) . unwrap ( ) ;
160157 let mut data_column_event_receiver = event_handler. subscribe_data_column_sidecar ( ) ;
161158
159+ // build a valid block
160+ harness. execution_block_generator ( ) . set_min_blob_count ( 1 ) ;
161+
162+ let head_state = harness. get_current_state ( ) ;
163+ let slot = head_state. slot ( ) + 1 ;
164+ let ( ( signed_block, opt_blobs) , _) = harness. make_block ( head_state, slot) . await ;
165+ let ( _, blobs) = opt_blobs. unwrap ( ) ;
166+ assert ! ( !blobs. is_empty( ) ) ;
167+
162168 // load the precomputed column sidecar to avoid computing them for every block in the tests.
163- let mut sidecar = RuntimeVariableList :: < DataColumnSidecar < E > > :: from_ssz_bytes (
164- TEST_DATA_COLUMN_SIDECARS_SSZ ,
165- E :: number_of_columns ( ) ,
166- )
167- . unwrap ( ) [ 0 ]
168- . clone ( ) ;
169- let parent_root = harness. chain . head ( ) . head_block_root ( ) ;
170- sidecar. signed_block_header . message . parent_root = parent_root;
169+ let data_column_sidecars =
170+ generate_data_column_sidecars_from_block ( & signed_block, & harness. chain . spec ) ;
171+ let sidecar = data_column_sidecars[ 0 ] . clone ( ) ;
171172 let expected_sse_data_column = SseDataColumnSidecar :: from_data_column_sidecar ( & sidecar) ;
172173
173174 let _ = harness
174175 . chain
175- . process_rpc_custody_columns ( vec ! [ Arc :: new ( sidecar) ] )
176+ . process_rpc_custody_columns ( vec ! [ sidecar] )
176177 . await
177178 . unwrap ( ) ;
178179
0 commit comments