MCPcopy Create free account
hub / github.com/docknetwork/crypto / derive_commitment_keys

Method derive_commitment_keys

proof_system/src/proof_spec.rs:228–368  ·  view source on GitHub ↗

Derive commitment keys for Schnorr protocol from public params. This is done to avoid creating them if the same public params are used in multiple statements and is effectively a pre-processing step done for optimization.

(
        &self,
    )

Source from the content-addressed store, hash-verified

226 /// creating them if the same public params are used in multiple statements and is effectively a
227 /// pre-processing step done for optimization.
228 pub fn derive_commitment_keys(
229 &self,
230 ) -> Result<
231 (
232 StatementDerivedParams<Vec<E::G1Affine>>,
233 StatementDerivedParams<Vec<E::G1Affine>>,
234 StatementDerivedParams<(Vec<E::G1Affine>, Vec<E::G1Affine>)>,
235 StatementDerivedParams<Vec<E::G1Affine>>,
236 StatementDerivedParams<[E::G1Affine; 2]>,
237 StatementDerivedParams<[E::G1Affine; 2]>,
238 StatementDerivedParams<[E::G1Affine; 2]>,
239 ),
240 ProofSystemError,
241 > {
242 let mut derived_bound_check_lego_comm =
243 DerivedParamsTracker::<LegoVerifyingKey<E>, Vec<E::G1Affine>, E>::new();
244 let mut derived_ek_comm =
245 DerivedParamsTracker::<EncryptionKey<E>, Vec<E::G1Affine>, E>::new();
246 let mut derived_chunked_comm = DerivedParamsTracker::<
247 (&ChunkedCommitmentGens<E::G1Affine>, u8),
248 (Vec<E::G1Affine>, Vec<E::G1Affine>),
249 E,
250 >::new();
251 let mut derived_r1cs_comm =
252 DerivedParamsTracker::<LegoVerifyingKey<E>, Vec<E::G1Affine>, E>::new();
253 let mut derived_bound_check_bpp_comm =
254 DerivedParamsTracker::<(E::G1Affine, E::G1Affine), [E::G1Affine; 2], E>::new();
255 let mut derived_bound_check_smc_comm =
256 DerivedParamsTracker::<MemberCommitmentKey<E::G1Affine>, [E::G1Affine; 2], E>::new();
257 let mut derived_ineq_comm =
258 DerivedParamsTracker::<PedersenCommitmentKey<E::G1Affine>, [E::G1Affine; 2], E>::new();
259
260 // To avoid creating variable with short lifetime
261 let mut saver_comm_keys = BTreeMap::new();
262 let mut bpp_comm_keys = BTreeMap::new();
263
264 for (s_idx, statement) in self.statements.0.iter().enumerate() {
265 match statement {
266 Statement::SaverProver(_) | Statement::SaverVerifier(_) => {
267 let (comm_gens, chunk_bit_size) = match statement {
268 Statement::SaverProver(s) => (
269 s.get_chunked_commitment_gens(&self.setup_params, s_idx)?,
270 s.chunk_bit_size,
271 ),
272 Statement::SaverVerifier(s) => (
273 s.get_chunked_commitment_gens(&self.setup_params, s_idx)?,
274 s.chunk_bit_size,
275 ),
276 _ => unreachable!(),
277 };
278 saver_comm_keys.insert(s_idx, (comm_gens, chunk_bit_size));
279 }
280 Statement::BoundCheckBpp(s) => {
281 let ck = s
282 .get_setup_params(&self.setup_params, s_idx)?
283 .get_pedersen_commitment_key();
284 bpp_comm_keys.insert(s_idx, ck);
285 }

Callers 2

_verifyMethod · 0.80
newMethod · 0.80

Calls 11

get_setup_paramsMethod · 0.80
get_encryption_keyMethod · 0.80
on_new_statement_idxMethod · 0.80
getMethod · 0.80
iterMethod · 0.45
get_proving_keyMethod · 0.45
get_verifying_keyMethod · 0.45
get_comm_keyMethod · 0.45
finishMethod · 0.45

Tested by

no test coverage detected