From 11c53a81b915eef3b0a73cec657c5bc177f6db6c Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Wed, 7 Aug 2024 22:50:14 +1000 Subject: [PATCH] Copy existing trusted setup into `PeerDASTrustedSetup` for consistency and maintain `--trusted-setup` functionality. --- crypto/kzg/benches/benchmark.rs | 6 +++++- crypto/kzg/src/lib.rs | 2 +- crypto/kzg/src/trusted_setup.rs | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/crypto/kzg/benches/benchmark.rs b/crypto/kzg/benches/benchmark.rs index 742de46452..69ec94c0b1 100644 --- a/crypto/kzg/benches/benchmark.rs +++ b/crypto/kzg/benches/benchmark.rs @@ -5,10 +5,14 @@ use kzg::TrustedSetup; use rust_eth_kzg::{DASContext, TrustedSetup as PeerDASTrustedSetup}; pub fn bench_init_context(c: &mut Criterion) { + let trusted_setup: TrustedSetup = serde_json::from_reader(TRUSTED_SETUP_BYTES) + .map_err(|e| format!("Unable to read trusted setup file: {}", e)) + .expect("should have trusted setup"); + c.bench_function(&format!("Initialize context rust_eth_kzg"), |b| { b.iter(|| { const NUM_THREADS: usize = 1; - let trusted_setup = PeerDASTrustedSetup::default(); + let trusted_setup = PeerDASTrustedSetup::from(&trusted_setup); DASContext::with_threads(&trusted_setup, NUM_THREADS) }) }); diff --git a/crypto/kzg/src/lib.rs b/crypto/kzg/src/lib.rs index 4b7b6fbefb..865c46c200 100644 --- a/crypto/kzg/src/lib.rs +++ b/crypto/kzg/src/lib.rs @@ -59,7 +59,7 @@ impl Kzg { // // Note: One can also use `from_json` to initialize it from the consensus-specs // json string. - let peerdas_trusted_setup = PeerDASTrustedSetup::default(); + let peerdas_trusted_setup = PeerDASTrustedSetup::from(&trusted_setup); // Set the number of threads to be used // // we set it to 1 to match the c-kzg performance diff --git a/crypto/kzg/src/trusted_setup.rs b/crypto/kzg/src/trusted_setup.rs index d930eabe22..6ddc33df5a 100644 --- a/crypto/kzg/src/trusted_setup.rs +++ b/crypto/kzg/src/trusted_setup.rs @@ -1,3 +1,4 @@ +use crate::PeerDASTrustedSetup; use c_kzg::{BYTES_PER_G1_POINT, BYTES_PER_G2_POINT}; use serde::{ de::{self, Deserializer, Visitor}, @@ -43,6 +44,28 @@ impl TrustedSetup { } } +impl From<&TrustedSetup> for PeerDASTrustedSetup { + fn from(trusted_setup: &TrustedSetup) -> Self { + Self { + g1_monomial: trusted_setup + .g1_monomial_points + .iter() + .map(|g1_point| format!("0x{}", hex::encode(g1_point.0))) + .collect::>(), + g1_lagrange: trusted_setup + .g1_points + .iter() + .map(|g1_point| format!("0x{}", hex::encode(g1_point.0))) + .collect::>(), + g2_monomial: trusted_setup + .g2_points + .iter() + .map(|g2_point| format!("0x{}", hex::encode(g2_point.0))) + .collect::>(), + } + } +} + impl Serialize for G1Point { fn serialize(&self, serializer: S) -> Result where