Skip to content

Commit

Permalink
Implement more idiomatic return types for functions.
Browse files Browse the repository at this point in the history
  • Loading branch information
EchoAlice committed Oct 7, 2023
1 parent 9f38397 commit c63cb00
Showing 1 changed file with 28 additions and 15 deletions.
43 changes: 28 additions & 15 deletions ethereum-consensus/src/deneb/polynomial_commitments.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ pub struct ProofAndEvaluation {
pub evaluation: Bytes32,
}

// TODO: Map error
pub fn blob_to_kzg_commitment<const BYTES_PER_BLOB: usize>(
blob: &Blob<BYTES_PER_BLOB>,
kzg_settings: &KzgSettings,
Expand All @@ -32,7 +31,6 @@ pub fn blob_to_kzg_commitment<const BYTES_PER_BLOB: usize>(
Ok(inner)
}

// TODO: Map error
pub fn compute_kzg_proof<const BYTES_PER_BLOB: usize>(
blob: &Blob<BYTES_PER_BLOB>,
evaluation_point: &FieldElement,
Expand All @@ -50,7 +48,6 @@ pub fn compute_kzg_proof<const BYTES_PER_BLOB: usize>(
Ok(result)
}

// TODO: Map error
pub fn compute_blob_kzg_proof<const BYTES_PER_BLOB: usize>(
blob: &Blob<BYTES_PER_BLOB>,
commitment: &KzgCommitment,
Expand All @@ -66,50 +63,60 @@ pub fn compute_blob_kzg_proof<const BYTES_PER_BLOB: usize>(
Ok(proof)
}

// TODO: Map error
pub fn verify_kzg_proof(
commitment: &KzgCommitment,
evaluation_point: &FieldElement,
result_point: &FieldElement,
proof: &KzgProof,
kzg_settings: &KzgSettings,
) -> Result<bool, Error> {
) -> Result<(), Error> {
let evaluation_point = c_kzg::Bytes32::from_bytes(evaluation_point.as_ref())?;
let result_point = c_kzg::Bytes32::from_bytes(result_point.as_ref())?;
let commitment = c_kzg::Bytes48::from_bytes(commitment.as_ref()).unwrap();
let proof = c_kzg::Bytes48::from_bytes(proof.as_ref()).unwrap();

let out = c_kzg::KzgProof::verify_kzg_proof(
let res = c_kzg::KzgProof::verify_kzg_proof(
&commitment,
&evaluation_point,
&result_point,
&proof,
kzg_settings,
)?;
Ok(out)
)
.map_err(Into::into);

if res? == true {
Ok(())
} else {
Err(Error::InvalidKzgProof(String::from("Invalid Proof")))
}
}

// TODO: Map error
pub fn verify_blob_kzg_proof<const BYTES_PER_BLOB: usize>(
blob: &Blob<BYTES_PER_BLOB>,
commitment: &KzgCommitment,
proof: &KzgProof,
kzg_settings: &KzgSettings,
) -> Result<bool, Error> {
) -> Result<(), Error> {
let blob = c_kzg::Blob::from_bytes(blob.as_ref()).unwrap();
let commitment = c_kzg::Bytes48::from_bytes(commitment.as_ref()).unwrap();
let proof = c_kzg::Bytes48::from_bytes(proof.as_ref()).unwrap();

let out = c_kzg::KzgProof::verify_blob_kzg_proof(&blob, &commitment, &proof, kzg_settings)?;
Ok(out)
let res = c_kzg::KzgProof::verify_blob_kzg_proof(&blob, &commitment, &proof, kzg_settings)
.map_err(Into::into);

if res? == true {
Ok(())
} else {
Err(Error::InvalidKzgProof(String::from("Invalid Blob")))
}
}

pub fn verify_blob_kzg_proof_batch<const BYTES_PER_BLOB: usize>(
blobs: &[Blob<BYTES_PER_BLOB>],
commitments: &[KzgCommitment],
proofs: &[KzgProof],
kzg_settings: &KzgSettings,
) -> Result<bool, Error> {
) -> Result<(), Error> {
let mut c_kzg_blobs = Vec::with_capacity(blobs.len());
let mut c_kzg_commitments = Vec::with_capacity(commitments.len());
let mut c_kzg_proofs = Vec::with_capacity(proofs.len());
Expand All @@ -129,11 +136,17 @@ pub fn verify_blob_kzg_proof_batch<const BYTES_PER_BLOB: usize>(
c_kzg_proofs.push(proof);
}

c_kzg::KzgProof::verify_blob_kzg_proof_batch(
let res = c_kzg::KzgProof::verify_blob_kzg_proof_batch(
&c_kzg_blobs,
&c_kzg_commitments,
&c_kzg_proofs,
kzg_settings,
)
.map_err(Into::into)
.map_err(Into::into);

if res? == true {
Ok(())
} else {
Err(Error::InvalidKzgProof(String::from("Invalid Proof Batch")))
}
}

0 comments on commit c63cb00

Please sign in to comment.