mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-16 20:39:10 +00:00
Add more kzg validations
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use kzg::Kzg;
|
||||
use kzg::{Error as KzgError, Kzg};
|
||||
use types::{Blob, BlobsSidecar, EthSpec, Hash256, KzgCommitment, KzgProof, Slot};
|
||||
|
||||
// TODO(pawan): make this generic over blob size
|
||||
@@ -18,7 +18,7 @@ pub fn validate_blobs_sidecar<T: EthSpec>(
|
||||
beacon_block_root: Hash256,
|
||||
expected_kzg_commitments: &[KzgCommitment],
|
||||
blobs_sidecar: &BlobsSidecar<T>,
|
||||
) -> Result<bool, String> {
|
||||
) -> Result<bool, KzgError> {
|
||||
if slot != blobs_sidecar.beacon_block_slot
|
||||
|| beacon_block_root != blobs_sidecar.beacon_block_root
|
||||
|| blobs_sidecar.blobs.len() != expected_kzg_commitments.len()
|
||||
@@ -31,27 +31,26 @@ pub fn validate_blobs_sidecar<T: EthSpec>(
|
||||
.into_iter()
|
||||
.map(|blob| ssz_blob_to_crypto_blob::<T>(blob.clone())) // TODO(pawan): avoid this clone
|
||||
.collect::<Option<Vec<_>>>()
|
||||
.ok_or_else(|| "Invalid blobs in sidecar".to_string())?;
|
||||
.ok_or_else(|| KzgError::InvalidBlob("Invalid blobs in sidecar".to_string()))?;
|
||||
|
||||
kzg.verify_aggregate_kzg_proof(
|
||||
&blobs,
|
||||
expected_kzg_commitments,
|
||||
blobs_sidecar.kzg_aggregated_proof,
|
||||
)
|
||||
.map_err(|e| format!("Failed to verify kzg proof: {:?}", e))
|
||||
}
|
||||
|
||||
pub fn compute_aggregate_kzg_proof<T: EthSpec>(
|
||||
kzg: &Kzg,
|
||||
blobs: &[Blob<T>],
|
||||
) -> Result<KzgProof, String> {
|
||||
) -> Result<KzgProof, KzgError> {
|
||||
let blobs = blobs
|
||||
.into_iter()
|
||||
.map(|blob| ssz_blob_to_crypto_blob::<T>(blob.clone())) // TODO(pawan): avoid this clone
|
||||
.collect::<Option<Vec<_>>>()
|
||||
.ok_or_else(|| "Invalid blobs in sidecar".to_string())?;
|
||||
.ok_or_else(|| KzgError::InvalidBlob("Invalid blobs".to_string()))?;
|
||||
|
||||
kzg.compute_aggregate_kzg_proof(&blobs)
|
||||
.map_err(|e| format!("Failed to compute kzg proof: {:?}", e))
|
||||
}
|
||||
|
||||
pub fn blob_to_kzg_commitment<T: EthSpec>(kzg: &Kzg, blob: Blob<T>) -> Option<KzgCommitment> {
|
||||
|
||||
Reference in New Issue
Block a user