@@ -837,7 +837,8 @@ mod test {
837
837
info ! ( log, "done printing kzg commitments" ) ;
838
838
839
839
let gossip_verified_blobs = if let Some ( ( kzg_proofs, blobs) ) = maybe_blobs {
840
- let sidecars = BlobSidecar :: build_sidecars ( blobs, & block, kzg_proofs) . unwrap ( ) ;
840
+ let sidecars =
841
+ BlobSidecar :: build_sidecars ( blobs, & block, kzg_proofs, & chain. spec ) . unwrap ( ) ;
841
842
Vec :: from ( sidecars)
842
843
. into_iter ( )
843
844
. map ( |sidecar| {
@@ -1152,7 +1153,7 @@ mod pending_components_tests {
1152
1153
use super :: * ;
1153
1154
use crate :: block_verification_types:: BlockImportData ;
1154
1155
use crate :: eth1_finalization_cache:: Eth1FinalizationData ;
1155
- use crate :: test_utils:: { generate_rand_block_and_blobs, NumBlobs } ;
1156
+ use crate :: test_utils:: { generate_rand_block_and_blobs, test_spec , NumBlobs } ;
1156
1157
use crate :: PayloadVerificationOutcome ;
1157
1158
use fork_choice:: PayloadVerificationStatus ;
1158
1159
use kzg:: KzgCommitment ;
@@ -1168,26 +1169,28 @@ mod pending_components_tests {
1168
1169
1169
1170
type Setup < E > = (
1170
1171
SignedBeaconBlock < E > ,
1171
- FixedVector < Option < Arc < BlobSidecar < E > > > , <E as EthSpec >:: MaxBlobsPerBlock > ,
1172
- FixedVector < Option < Arc < BlobSidecar < E > > > , <E as EthSpec >:: MaxBlobsPerBlock > ,
1172
+ RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > ,
1173
+ RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > ,
1174
+ usize ,
1173
1175
) ;
1174
1176
1175
1177
pub fn pre_setup ( ) -> Setup < E > {
1176
1178
let mut rng = StdRng :: seed_from_u64 ( 0xDEADBEEF0BAD5EEDu64 ) ;
1179
+ let spec = test_spec :: < E > ( ) ;
1177
1180
let ( block, blobs_vec) =
1178
1181
generate_rand_block_and_blobs :: < E > ( ForkName :: Deneb , NumBlobs :: Random , & mut rng) ;
1179
- let mut blobs: FixedVector < _ , <E as EthSpec >:: MaxBlobsPerBlock > = FixedVector :: default ( ) ;
1182
+ let max_len = spec. max_blobs_per_block ( block. epoch ( ) ) as usize ;
1183
+ let mut blobs: RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > =
1184
+ RuntimeFixedList :: default ( max_len) ;
1180
1185
1181
1186
for blob in blobs_vec {
1182
1187
if let Some ( b) = blobs. get_mut ( blob. index as usize ) {
1183
1188
* b = Some ( Arc :: new ( blob) ) ;
1184
1189
}
1185
1190
}
1186
1191
1187
- let mut invalid_blobs: FixedVector <
1188
- Option < Arc < BlobSidecar < E > > > ,
1189
- <E as EthSpec >:: MaxBlobsPerBlock ,
1190
- > = FixedVector :: default ( ) ;
1192
+ let mut invalid_blobs: RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > =
1193
+ RuntimeFixedList :: default ( max_len) ;
1191
1194
for ( index, blob) in blobs. iter ( ) . enumerate ( ) {
1192
1195
if let Some ( invalid_blob) = blob {
1193
1196
let mut blob_copy = invalid_blob. as_ref ( ) . clone ( ) ;
@@ -1196,21 +1199,21 @@ mod pending_components_tests {
1196
1199
}
1197
1200
}
1198
1201
1199
- ( block, blobs, invalid_blobs)
1202
+ ( block, blobs, invalid_blobs, max_len )
1200
1203
}
1201
1204
1202
1205
type PendingComponentsSetup < E > = (
1203
1206
DietAvailabilityPendingExecutedBlock < E > ,
1204
- FixedVector < Option < KzgVerifiedBlob < E > > , < E as EthSpec > :: MaxBlobsPerBlock > ,
1205
- FixedVector < Option < KzgVerifiedBlob < E > > , < E as EthSpec > :: MaxBlobsPerBlock > ,
1207
+ RuntimeFixedList < Option < KzgVerifiedBlob < E > > > ,
1208
+ RuntimeFixedList < Option < KzgVerifiedBlob < E > > > ,
1206
1209
) ;
1207
1210
1208
1211
pub fn setup_pending_components (
1209
1212
block : SignedBeaconBlock < E > ,
1210
- valid_blobs : FixedVector < Option < Arc < BlobSidecar < E > > > , < E as EthSpec > :: MaxBlobsPerBlock > ,
1211
- invalid_blobs : FixedVector < Option < Arc < BlobSidecar < E > > > , < E as EthSpec > :: MaxBlobsPerBlock > ,
1213
+ valid_blobs : RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > ,
1214
+ invalid_blobs : RuntimeFixedList < Option < Arc < BlobSidecar < E > > > > ,
1212
1215
) -> PendingComponentsSetup < E > {
1213
- let blobs = FixedVector :: from (
1216
+ let blobs = RuntimeFixedList :: new (
1214
1217
valid_blobs
1215
1218
. iter ( )
1216
1219
. map ( |blob_opt| {
@@ -1220,7 +1223,7 @@ mod pending_components_tests {
1220
1223
} )
1221
1224
. collect :: < Vec < _ > > ( ) ,
1222
1225
) ;
1223
- let invalid_blobs = FixedVector :: from (
1226
+ let invalid_blobs = RuntimeFixedList :: new (
1224
1227
invalid_blobs
1225
1228
. iter ( )
1226
1229
. map ( |blob_opt| {
@@ -1252,10 +1255,10 @@ mod pending_components_tests {
1252
1255
( block. into ( ) , blobs, invalid_blobs)
1253
1256
}
1254
1257
1255
- pub fn assert_cache_consistent ( cache : PendingComponents < E > ) {
1258
+ pub fn assert_cache_consistent ( cache : PendingComponents < E > , max_len : usize ) {
1256
1259
if let Some ( cached_block) = cache. get_cached_block ( ) {
1257
1260
let cached_block_commitments = cached_block. get_commitments ( ) ;
1258
- for index in 0 ..E :: max_blobs_per_block ( ) {
1261
+ for index in 0 ..max_len {
1259
1262
let block_commitment = cached_block_commitments. get ( index) . copied ( ) ;
1260
1263
let blob_commitment_opt = cache. get_cached_blobs ( ) . get ( index) . unwrap ( ) ;
1261
1264
let blob_commitment = blob_commitment_opt. as_ref ( ) . map ( |b| * b. get_commitment ( ) ) ;
@@ -1274,40 +1277,40 @@ mod pending_components_tests {
1274
1277
1275
1278
#[ test]
1276
1279
fn valid_block_invalid_blobs_valid_blobs ( ) {
1277
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1280
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1278
1281
let ( block_commitments, blobs, random_blobs) =
1279
1282
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1280
1283
let block_root = Hash256 :: zero ( ) ;
1281
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1284
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1282
1285
cache. merge_block ( block_commitments) ;
1283
1286
cache. merge_blobs ( random_blobs) ;
1284
1287
cache. merge_blobs ( blobs) ;
1285
1288
1286
- assert_cache_consistent ( cache) ;
1289
+ assert_cache_consistent ( cache, max_len ) ;
1287
1290
}
1288
1291
1289
1292
#[ test]
1290
1293
fn invalid_blobs_block_valid_blobs ( ) {
1291
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1294
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1292
1295
let ( block_commitments, blobs, random_blobs) =
1293
1296
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1294
1297
let block_root = Hash256 :: zero ( ) ;
1295
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1298
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1296
1299
cache. merge_blobs ( random_blobs) ;
1297
1300
cache. merge_block ( block_commitments) ;
1298
1301
cache. merge_blobs ( blobs) ;
1299
1302
1300
- assert_cache_consistent ( cache) ;
1303
+ assert_cache_consistent ( cache, max_len ) ;
1301
1304
}
1302
1305
1303
1306
#[ test]
1304
1307
fn invalid_blobs_valid_blobs_block ( ) {
1305
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1308
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1306
1309
let ( block_commitments, blobs, random_blobs) =
1307
1310
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1308
1311
1309
1312
let block_root = Hash256 :: zero ( ) ;
1310
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1313
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1311
1314
cache. merge_blobs ( random_blobs) ;
1312
1315
cache. merge_blobs ( blobs) ;
1313
1316
cache. merge_block ( block_commitments) ;
@@ -1317,46 +1320,46 @@ mod pending_components_tests {
1317
1320
1318
1321
#[ test]
1319
1322
fn block_valid_blobs_invalid_blobs ( ) {
1320
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1323
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1321
1324
let ( block_commitments, blobs, random_blobs) =
1322
1325
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1323
1326
1324
1327
let block_root = Hash256 :: zero ( ) ;
1325
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1328
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1326
1329
cache. merge_block ( block_commitments) ;
1327
1330
cache. merge_blobs ( blobs) ;
1328
1331
cache. merge_blobs ( random_blobs) ;
1329
1332
1330
- assert_cache_consistent ( cache) ;
1333
+ assert_cache_consistent ( cache, max_len ) ;
1331
1334
}
1332
1335
1333
1336
#[ test]
1334
1337
fn valid_blobs_block_invalid_blobs ( ) {
1335
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1338
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1336
1339
let ( block_commitments, blobs, random_blobs) =
1337
1340
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1338
1341
1339
1342
let block_root = Hash256 :: zero ( ) ;
1340
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1343
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1341
1344
cache. merge_blobs ( blobs) ;
1342
1345
cache. merge_block ( block_commitments) ;
1343
1346
cache. merge_blobs ( random_blobs) ;
1344
1347
1345
- assert_cache_consistent ( cache) ;
1348
+ assert_cache_consistent ( cache, max_len ) ;
1346
1349
}
1347
1350
1348
1351
#[ test]
1349
1352
fn valid_blobs_invalid_blobs_block ( ) {
1350
- let ( block_commitments, blobs, random_blobs) = pre_setup ( ) ;
1353
+ let ( block_commitments, blobs, random_blobs, max_len ) = pre_setup ( ) ;
1351
1354
let ( block_commitments, blobs, random_blobs) =
1352
1355
setup_pending_components ( block_commitments, blobs, random_blobs) ;
1353
1356
1354
1357
let block_root = Hash256 :: zero ( ) ;
1355
- let mut cache = <PendingComponents < E > >:: empty ( block_root) ;
1358
+ let mut cache = <PendingComponents < E > >:: empty ( block_root, max_len ) ;
1356
1359
cache. merge_blobs ( blobs) ;
1357
1360
cache. merge_blobs ( random_blobs) ;
1358
1361
cache. merge_block ( block_commitments) ;
1359
1362
1360
- assert_cache_consistent ( cache) ;
1363
+ assert_cache_consistent ( cache, max_len ) ;
1361
1364
}
1362
1365
}
0 commit comments