@@ -8,9 +8,9 @@ use std::sync::Arc;
88use types:: beacon_block_body:: KzgCommitments ;
99use types:: data_column_sidecar:: { Cell , DataColumn , DataColumnSidecarError } ;
1010use types:: {
11- Blob , BlobSidecar , BlobSidecarList , ChainSpec , ColumnIndex , DataColumnSidecar ,
12- DataColumnSidecarList , EthSpec , Hash256 , KzgCommitment , KzgProof , SignedBeaconBlock ,
13- SignedBeaconBlockHeader , SignedBlindedBeaconBlock ,
11+ Blob , BlobSidecar , BlobSidecarList , ChainSpec , DataColumnSidecar , DataColumnSidecarList ,
12+ EthSpec , Hash256 , KzgCommitment , KzgProof , SignedBeaconBlock , SignedBeaconBlockHeader ,
13+ SignedBlindedBeaconBlock ,
1414} ;
1515
1616/// Converts a blob ssz List object to an array to be used with the kzg
@@ -79,38 +79,27 @@ pub fn validate_data_columns<'a, E: EthSpec, I>(
7979where
8080 I : Iterator < Item = & ' a Arc < DataColumnSidecar < E > > > + Clone ,
8181{
82- let cells = data_column_iter
83- . clone ( )
84- . flat_map ( |data_column| data_column . column . iter ( ) . map ( ssz_cell_to_crypto_cell :: < E > ) )
85- . collect :: < Result < Vec < _ > , KzgError > > ( ) ? ;
82+ let mut cells = Vec :: new ( ) ;
83+ let mut proofs = Vec :: new ( ) ;
84+ let mut column_indices = Vec :: new ( ) ;
85+ let mut commitments = Vec :: new ( ) ;
8686
87- let proofs = data_column_iter
88- . clone ( )
89- . flat_map ( |data_column| {
90- data_column
91- . kzg_proofs
92- . iter ( )
93- . map ( |& proof| Bytes48 :: from ( proof) )
94- } )
95- . collect :: < Vec < _ > > ( ) ;
87+ for data_column in data_column_iter {
88+ let col_index = data_column. index ;
9689
97- let column_indices = data_column_iter
98- . clone ( )
99- . flat_map ( |data_column| {
100- let col_index = data_column. index ;
101- data_column. column . iter ( ) . map ( move |_| col_index)
102- } )
103- . collect :: < Vec < ColumnIndex > > ( ) ;
90+ for cell in & data_column. column {
91+ cells. push ( ssz_cell_to_crypto_cell :: < E > ( cell) ?) ;
92+ column_indices. push ( col_index) ;
93+ }
10494
105- let commitments = data_column_iter
106- . clone ( )
107- . flat_map ( |data_column| {
108- data_column
109- . kzg_commitments
110- . iter ( )
111- . map ( |& commitment| Bytes48 :: from ( commitment) )
112- } )
113- . collect :: < Vec < _ > > ( ) ;
95+ for & proof in & data_column. kzg_proofs {
96+ proofs. push ( Bytes48 :: from ( proof) ) ;
97+ }
98+
99+ for & commitment in & data_column. kzg_commitments {
100+ commitments. push ( Bytes48 :: from ( commitment) ) ;
101+ }
102+ }
114103
115104 kzg. verify_cell_proof_batch ( & cells, & proofs, column_indices, & commitments)
116105}
0 commit comments