@@ -285,36 +285,43 @@ pub fn reconstruct_data_columns<E: EthSpec>(
285
285
#[ cfg( test) ]
286
286
mod test {
287
287
use crate :: kzg_utils:: { blobs_to_data_column_sidecars, reconstruct_data_columns} ;
288
- use crate :: test_utils:: KZG ;
289
288
use bls:: Signature ;
290
- use kzg:: KzgCommitment ;
289
+ use eth2_network_config:: TRUSTED_SETUP_BYTES ;
290
+ use kzg:: { Kzg , KzgCommitment , TrustedSetup } ;
291
291
use types:: {
292
292
beacon_block_body:: KzgCommitments , BeaconBlock , BeaconBlockDeneb , Blob , BlobsList ,
293
293
ChainSpec , EmptyBlock , EthSpec , MainnetEthSpec , SignedBeaconBlock ,
294
294
} ;
295
295
296
+ type E = MainnetEthSpec ;
297
+
298
+ // Loading and initializing PeerDAS KZG is expensive and slow, so we group the tests together
299
+ // only load it once.
296
300
#[ test]
297
- fn test_build_sidecars_empty ( ) {
298
- type E = MainnetEthSpec ;
299
- let num_of_blobs = 0 ;
301
+ fn test_build_data_columns_sidecars ( ) {
300
302
let spec = E :: default_spec ( ) ;
301
- let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, & spec) ;
303
+ let kzg = get_kzg ( ) ;
304
+ test_build_data_columns_empty ( & kzg, & spec) ;
305
+ test_build_data_columns ( & kzg, & spec) ;
306
+ test_reconstruct_data_columns ( & kzg, & spec) ;
307
+ }
302
308
309
+ #[ track_caller]
310
+ fn test_build_data_columns_empty ( kzg : & Kzg , spec : & ChainSpec ) {
311
+ let num_of_blobs = 0 ;
312
+ let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, spec) ;
303
313
let column_sidecars =
304
- blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, & KZG , & spec) . unwrap ( ) ;
305
-
314
+ blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, kzg, spec) . unwrap ( ) ;
306
315
assert ! ( column_sidecars. is_empty( ) ) ;
307
316
}
308
317
309
- #[ test]
310
- fn test_build_sidecars ( ) {
311
- type E = MainnetEthSpec ;
318
+ #[ track_caller]
319
+ fn test_build_data_columns ( kzg : & Kzg , spec : & ChainSpec ) {
312
320
let num_of_blobs = 6 ;
313
- let spec = E :: default_spec ( ) ;
314
- let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, & spec) ;
321
+ let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, spec) ;
315
322
316
323
let column_sidecars =
317
- blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, & KZG , & spec) . unwrap ( ) ;
324
+ blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, kzg , spec) . unwrap ( ) ;
318
325
319
326
let block_kzg_commitments = signed_block
320
327
. message ( )
@@ -345,21 +352,18 @@ mod test {
345
352
}
346
353
}
347
354
348
- #[ test]
349
- fn build_and_reconstruct ( ) {
350
- type E = MainnetEthSpec ;
355
+ #[ track_caller]
356
+ fn test_reconstruct_data_columns ( kzg : & Kzg , spec : & ChainSpec ) {
351
357
let num_of_blobs = 6 ;
352
- let spec = E :: default_spec ( ) ;
353
- let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, & spec) ;
354
-
358
+ let ( signed_block, blob_sidecars) = create_test_block_and_blobs :: < E > ( num_of_blobs, spec) ;
355
359
let column_sidecars =
356
- blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, & KZG , & spec) . unwrap ( ) ;
360
+ blobs_to_data_column_sidecars ( & blob_sidecars, & signed_block, kzg , spec) . unwrap ( ) ;
357
361
358
362
// Now reconstruct
359
363
let reconstructed_columns = reconstruct_data_columns (
360
- & KZG ,
364
+ kzg ,
361
365
& column_sidecars. iter ( ) . as_slice ( ) [ 0 ..column_sidecars. len ( ) / 2 ] ,
362
- & spec,
366
+ spec,
363
367
)
364
368
. unwrap ( ) ;
365
369
@@ -368,6 +372,13 @@ mod test {
368
372
}
369
373
}
370
374
375
+ fn get_kzg ( ) -> Kzg {
376
+ let trusted_setup: TrustedSetup = serde_json:: from_reader ( TRUSTED_SETUP_BYTES )
377
+ . map_err ( |e| format ! ( "Unable to read trusted setup file: {}" , e) )
378
+ . expect ( "should have trusted setup" ) ;
379
+ Kzg :: new_from_trusted_setup_das_enabled ( trusted_setup) . expect ( "should create kzg" )
380
+ }
381
+
371
382
fn create_test_block_and_blobs < E : EthSpec > (
372
383
num_of_blobs : usize ,
373
384
spec : & ChainSpec ,
0 commit comments