Skip to content

Commit

Permalink
verify_blobs with both verify_blob_kzg_proof and verify_kzg_proof
Browse files Browse the repository at this point in the history
  • Loading branch information
pawanjay176 committed Aug 17, 2023
1 parent bdc6454 commit c559d06
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 8 deletions.
8 changes: 4 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 12 additions & 2 deletions beacon_node/beacon_chain/src/kzg_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,21 @@ pub fn validate_blob<T: EthSpec>(
kzg_commitment: KzgCommitment,
kzg_proof: KzgProof,
) -> Result<bool, KzgError> {
kzg.verify_blob_kzg_proof(
let res1 = kzg.verify_blob_kzg_proof(
ssz_blob_to_crypto_blob::<T>(blob.clone())?,
kzg_commitment,
kzg_proof,
)?;

let res2 = kzg.verify_blob_kzg_proof2(
ssz_blob_to_crypto_blob::<T>(blob)?,
kzg_commitment,
kzg_proof,
)
)?;

assert_eq!(res1, res2);
Ok(res1)

}

/// Validate a batch of blob-commitment-proof triplets from multiple `BlobSidecars`.
Expand Down
4 changes: 2 additions & 2 deletions crypto/kzg/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ serde_derive = "1.0.116"
ethereum_serde_utils = "0.5.0"
hex = "0.4.2"
ethereum_hashing = "1.0.0-beta.2"
c-kzg = { git = "https://github.com/pawanjay176/c-kzg-4844", branch = "boxed-blobs2" , features = ["mainnet-spec"]}
c_kzg_min = { package = "c-kzg", git = "https://github.com/pawanjay176//c-kzg-4844", branch = "boxed-blobs2", features = ["minimal-spec"], optional = true }
c-kzg = { git = "https://github.com/pawanjay176/c-kzg-4844", rev = "465edc3d3f26b8bfeaad5f4a87e21a70bf859278" , features = ["mainnet-spec"]}
c_kzg_min = { package = "c-kzg", git = "https://github.com/pawanjay176//c-kzg-4844", rev = "465edc3d3f26b8bfeaad5f4a87e21a70bf859278", features = ["minimal-spec"], optional = true }
arbitrary = { version = "1.0", features = ["derive"], optional = true }

[features]
Expand Down
33 changes: 33 additions & 0 deletions crypto/kzg/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@ pub trait KzgPreset:
trusted_setup: &Self::KzgSettings,
) -> Result<bool, CryptoError>;

fn verify_blob_kzg_proof2(
blob: Box<Self::Blob>,
kzg_commitment: KzgCommitment,
kzg_proof: KzgProof,
trusted_setup: &Self::KzgSettings,
) -> Result<bool, CryptoError>;

fn verify_blob_kzg_proof_batch(
blobs: &[Self::Blob],
commitments_bytes: &[Self::Bytes48],
Expand Down Expand Up @@ -182,6 +189,21 @@ macro_rules! implement_kzg_preset {
.map_err(CryptoError::from)
}

fn verify_blob_kzg_proof2(
blob: Box<Self::Blob>,
kzg_commitment: KzgCommitment,
kzg_proof: KzgProof,
trusted_setup: &Self::KzgSettings,
) -> Result<bool, CryptoError> {
$module_name::KzgProof::verify_blob_kzg_proof2(
blob,
kzg_commitment.into(),
kzg_proof.into(),
trusted_setup,
)
.map_err(CryptoError::from)
}

fn verify_blob_kzg_proof_batch(
blobs: &[Self::Blob],
commitments_bytes: &[Self::Bytes48],
Expand Down Expand Up @@ -292,6 +314,17 @@ impl<P: KzgPreset> Kzg<P> {
.map_err(Error::InvalidKzgProof)
}

/// Verify a kzg proof given the blob, kzg commitment and kzg proof.
pub fn verify_blob_kzg_proof2(
&self,
blob: Box<P::Blob>,
kzg_commitment: KzgCommitment,
kzg_proof: KzgProof,
) -> Result<bool, Error> {
P::verify_blob_kzg_proof2(blob, kzg_commitment, kzg_proof, &self.trusted_setup)
.map_err(Error::InvalidKzgProof)
}

/// Verify a batch of blob commitment proof triplets.
///
/// Note: This method is slightly faster than calling `Self::verify_blob_kzg_proof` in a loop sequentially.
Expand Down

0 comments on commit c559d06

Please sign in to comment.