@@ -2,7 +2,8 @@ use crate::block_verification::{
2
2
cheap_state_advance_to_obtain_committees, get_validator_pubkey_cache, process_block_slash_info,
3
3
BlockSlashInfo ,
4
4
} ;
5
- use crate :: { BeaconChain , BeaconChainError , BeaconChainTypes } ;
5
+ use crate :: kzg_utils:: validate_data_columns;
6
+ use crate :: { metrics, BeaconChain , BeaconChainError , BeaconChainTypes } ;
6
7
use derivative:: Derivative ;
7
8
use fork_choice:: ProtoBlock ;
8
9
use kzg:: { Error as KzgError , Kzg } ;
@@ -11,6 +12,7 @@ use slasher::test_utils::E;
11
12
use slog:: debug;
12
13
use slot_clock:: SlotClock ;
13
14
use ssz_derive:: { Decode , Encode } ;
15
+ use std:: iter;
14
16
use std:: sync:: Arc ;
15
17
use types:: data_column_sidecar:: { ColumnIndex , DataColumnIdentifier } ;
16
18
use types:: {
@@ -236,9 +238,10 @@ impl<E: EthSpec> KzgVerifiedCustodyDataColumn<E> {
236
238
/// Returns an error if the kzg verification check fails.
237
239
pub fn verify_kzg_for_data_column < E : EthSpec > (
238
240
data_column : Arc < DataColumnSidecar < E > > ,
239
- _kzg : & Kzg ,
241
+ kzg : & Kzg ,
240
242
) -> Result < KzgVerifiedDataColumn < E > , KzgError > {
241
- // TODO(das): KZG verification to be implemented
243
+ let _timer = metrics:: start_timer ( & metrics:: KZG_VERIFICATION_DATA_COLUMN_SINGLE_TIMES ) ;
244
+ validate_data_columns ( kzg, iter:: once ( & data_column) ) ?;
242
245
Ok ( KzgVerifiedDataColumn { data : data_column } )
243
246
}
244
247
@@ -248,13 +251,14 @@ pub fn verify_kzg_for_data_column<E: EthSpec>(
248
251
/// Note: This function should be preferred over calling `verify_kzg_for_data_column`
249
252
/// in a loop since this function kzg verifies a list of data columns more efficiently.
250
253
pub fn verify_kzg_for_data_column_list < ' a , E : EthSpec , I > (
251
- _data_column_iter : I ,
252
- _kzg : & ' a Kzg ,
254
+ data_column_iter : I ,
255
+ kzg : & ' a Kzg ,
253
256
) -> Result < ( ) , KzgError >
254
257
where
255
258
I : Iterator < Item = & ' a Arc < DataColumnSidecar < E > > > + Clone ,
256
259
{
257
- // TODO(das): implement KZG verification
260
+ let _timer = metrics:: start_timer ( & metrics:: KZG_VERIFICATION_DATA_COLUMN_BATCH_TIMES ) ;
261
+ validate_data_columns ( kzg, data_column_iter) ?;
258
262
Ok ( ( ) )
259
263
}
260
264
0 commit comments