@@ -8,9 +8,9 @@ use std::sync::Arc;
8
8
use types:: beacon_block_body:: KzgCommitments ;
9
9
use types:: data_column_sidecar:: { Cell , DataColumn , DataColumnSidecarError } ;
10
10
use 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 ,
14
14
} ;
15
15
16
16
/// 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>(
79
79
where
80
80
I : Iterator < Item = & ' a Arc < DataColumnSidecar < E > > > + Clone ,
81
81
{
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 ( ) ;
86
86
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 ;
96
89
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
+ }
104
94
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
+ }
114
103
115
104
kzg. verify_cell_proof_batch ( & cells, & proofs, column_indices, & commitments)
116
105
}
0 commit comments