Skip to content

Commit 4236dd8

Browse files
committed
[ledger] Remove get_srs and type alias Verifier{Index,SRS}
1 parent c90fc78 commit 4236dd8

File tree

20 files changed

+80
-80
lines changed

20 files changed

+80
-80
lines changed

cli/src/commands/node/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ impl Node {
152152

153153
let work_dir = shellexpand::full(&self.work_dir).unwrap().into_owned();
154154
let rng_seed = rng.next_u64();
155-
let srs: Arc<_> = get_srs().into();
155+
let srs: Arc<_> = get_srs();
156156
let config = Config {
157157
ledger: LedgerConfig {},
158158
snark: SnarkConfig {

cli/src/commands/snark/precalculate_block_verifier_index_and_srs.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ impl PrecalculateBlockVerifierIndexAndSrs {
2020
hasher.update(&verifier_index);
2121
let index_hash = hex::encode(hasher.finalize());
2222

23-
let srs = srs_to_bytes(&get_srs());
23+
let srs = {
24+
let srs = get_srs();
25+
let srs = srs.lock().expect("Failed to lock SRS");
26+
srs_to_bytes(&srs)
27+
};
2428
let mut hasher = Sha256::new();
2529
hasher.update(&srs);
2630
let srs_hash = hex::encode(hasher.finalize());

ledger/src/proofs/accumulator_check.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use std::array;
22

3-
use kimchi::curve::KimchiCurve;
4-
use mina_curves::pasta::{Fq, Pallas, Vesta};
3+
use mina_curves::pasta::{Fq, Vesta};
54
use mina_hasher::Fp;
65
use mina_p2p_messages::{bigint::BigInt, v2::PicklesProofProofsVerified2ReprStableV2};
76
use poly_commitment::{commitment::CommitmentCurve, srs::SRS};
@@ -10,15 +9,8 @@ use super::public_input::scalar_challenge::ScalarChallenge;
109
use super::transaction::endos;
1110
use super::urs_utils;
1211

13-
const OTHER_URS_LENGTH: usize = 65536;
14-
15-
pub fn get_srs() -> super::VerifierSRS {
16-
// We need an URS with 65536 points (should be in the other verfifier index - step?)
17-
SRS::<<Pallas as KimchiCurve>::OtherCurve>::create(OTHER_URS_LENGTH)
18-
}
19-
2012
pub fn accumulator_check(
21-
urs: &super::VerifierSRS,
13+
urs: &SRS<Vesta>,
2214
proof: &PicklesProofProofsVerified2ReprStableV2,
2315
) -> bool {
2416
// accumulator check

ledger/src/proofs/caching.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ use kimchi::{
1212
wires::{COLUMNS, PERMUTS},
1313
},
1414
mina_curves::pasta::Pallas,
15-
verifier_index::LookupVerifierIndex,
15+
verifier_index::{LookupVerifierIndex, VerifierIndex},
1616
};
1717
use mina_curves::pasta::Fq;
1818
use mina_p2p_messages::bigint::BigInt;
1919
use once_cell::sync::OnceCell;
2020
use poly_commitment::{commitment::CommitmentCurve, srs::SRS, PolyComm};
2121
use serde::{Deserialize, Serialize};
2222

23-
use super::VerifierIndex;
24-
2523
fn into<'a, U, T>(slice: &'a [U]) -> Vec<T>
2624
where
2725
T: From<&'a U>,
@@ -275,8 +273,8 @@ where
275273
}
276274
}
277275

278-
impl From<&VerifierIndex> for VerifierIndexCached {
279-
fn from(v: &VerifierIndex) -> Self {
276+
impl From<&VerifierIndex<Pallas>> for VerifierIndexCached {
277+
fn from(v: &VerifierIndex<Pallas>) -> Self {
280278
Self {
281279
domain: (&v.domain).into(),
282280
max_poly_size: v.max_poly_size,
@@ -303,7 +301,7 @@ impl From<&VerifierIndex> for VerifierIndexCached {
303301
}
304302
}
305303

306-
impl From<&VerifierIndexCached> for VerifierIndex {
304+
impl From<&VerifierIndexCached> for VerifierIndex<Pallas> {
307305
fn from(v: &VerifierIndexCached) -> Self {
308306
Self {
309307
domain: (&v.domain).into(),
@@ -349,7 +347,7 @@ impl From<&VerifierIndexCached> for VerifierIndex {
349347
}
350348
}
351349

352-
pub fn verifier_index_to_bytes(verifier: &VerifierIndex) -> Vec<u8> {
350+
pub fn verifier_index_to_bytes(verifier: &VerifierIndex<Pallas>) -> Vec<u8> {
353351
const NBYTES: usize = 5328359;
354352

355353
let verifier: VerifierIndexCached = verifier.into();
@@ -359,7 +357,7 @@ pub fn verifier_index_to_bytes(verifier: &VerifierIndex) -> Vec<u8> {
359357
bytes
360358
}
361359

362-
pub fn verifier_index_from_bytes(bytes: &[u8]) -> VerifierIndex {
360+
pub fn verifier_index_from_bytes(bytes: &[u8]) -> VerifierIndex<Pallas> {
363361
let verifier: VerifierIndexCached = bincode::deserialize(bytes).unwrap();
364362
(&verifier).into()
365363
}

ledger/src/proofs/mod.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use kimchi::mina_curves::pasta::{Pallas, Vesta};
2-
31
pub mod accumulator_check;
42
pub mod block;
53
pub mod caching;
@@ -24,9 +22,5 @@ pub mod witness;
2422
pub mod wrap;
2523
pub mod zkapp;
2624

27-
pub type VerifierIndex = kimchi::verifier_index::VerifierIndex<Pallas>;
28-
pub type ProverProof = kimchi::proof::ProverProof<Pallas>;
29-
pub type VerifierSRS = poly_commitment::srs::SRS<Vesta>;
30-
3125
pub const BACKEND_TICK_ROUNDS_N: usize = 16;
3226
pub const BACKEND_TOCK_ROUNDS_N: usize = 15;

ledger/src/proofs/prover.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ use std::{array, borrow::Cow, str::FromStr};
22

33
use kimchi::{
44
poly_commitment::PolyComm,
5-
proof::{PointEvaluations, ProofEvaluations, ProverCommitments, RecursionChallenge},
5+
proof::{
6+
PointEvaluations, ProofEvaluations, ProverCommitments, ProverProof, RecursionChallenge,
7+
},
68
};
79
use mina_curves::pasta::Pallas;
810
use mina_hasher::Fp;
@@ -15,8 +17,6 @@ use super::util::extract_bulletproof;
1517
use mina_curves::pasta::Fq;
1618
use mina_p2p_messages::{bigint::BigInt, v2::PicklesProofProofsVerified2ReprStableV2};
1719

18-
use super::ProverProof;
19-
2020
fn get_challenge_polynomial_commitments_padding() -> (BigInt, BigInt) {
2121
static PADDING: Lazy<(BigInt, BigInt)> = Lazy::new(|| {
2222
let first = Fp::from_str(
@@ -40,7 +40,7 @@ pub fn make_padded_proof_from_p2p(
4040
prev_evals: _, // unused
4141
proof,
4242
}: &PicklesProofProofsVerified2ReprStableV2,
43-
) -> ProverProof {
43+
) -> ProverProof<Pallas> {
4444
let of_coord = |(a, b): &(BigInt, BigInt)| Pallas::of_coordinates(a.to_field(), b.to_field());
4545

4646
let make_poly = |poly: &(BigInt, BigInt)| PolyComm {

ledger/src/proofs/public_input/messages.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ use std::str::FromStr;
33
use crate::proofs::to_field_elements::ToFieldElements;
44
use crate::proofs::transaction::{checked_hash2, InnerCurve, PlonkVerificationKeyEvals};
55
use crate::proofs::witness::Witness;
6-
use crate::proofs::VerifierIndex;
76
use ark_ec::short_weierstrass_jacobian::GroupAffine;
87
use ark_ff::{BigInteger256, PrimeField};
8+
use kimchi::verifier_index::VerifierIndex;
99
use mina_curves::{pasta::Fq, pasta::Pallas};
1010
use mina_hasher::Fp;
1111
use poly_commitment::PolyComm;
1212

1313
use crate::hash::hash_fields;
1414

15-
impl<'a> From<&'a VerifierIndex> for PlonkVerificationKeyEvals<Fp> {
16-
fn from(verifier_index: &'a VerifierIndex) -> Self {
15+
impl<'a> From<&'a VerifierIndex<Pallas>> for PlonkVerificationKeyEvals<Fp> {
16+
fn from(verifier_index: &'a VerifierIndex<Pallas>) -> Self {
1717
let to_curve = |v: &PolyComm<Pallas>| InnerCurve::of_affine(v.unshifted[0]);
1818

1919
Self {

ledger/src/proofs/verification.rs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::{array, rc::Rc};
22

33
use ark_poly::{EvaluationDomain, Radix2EvaluationDomain};
4+
use poly_commitment::srs::SRS;
45

56
use crate::{
67
proofs::{
@@ -27,15 +28,15 @@ use super::{
2728
to_field_elements::ToFieldElements,
2829
transaction::{InnerCurve, PlonkVerificationKeyEvals},
2930
util::{extract_bulletproof, extract_polynomial_commitment, u64_to_field},
30-
VerifierSRS,
3131
};
3232
use kimchi::{
3333
circuits::{polynomials::permutation::eval_zk_polynomial, wires::PERMUTS},
3434
error::VerifyError,
3535
mina_curves::pasta::Pallas,
36-
proof::{PointEvaluations, ProofEvaluations},
36+
proof::{PointEvaluations, ProofEvaluations, ProverProof},
37+
verifier_index::VerifierIndex,
3738
};
38-
use mina_curves::pasta::Fq;
39+
use mina_curves::pasta::{Fq, Vesta};
3940
use mina_hasher::Fp;
4041
use mina_p2p_messages::{
4142
bigint::BigInt,
@@ -50,7 +51,7 @@ use mina_p2p_messages::{
5051
},
5152
};
5253

53-
use super::{prover::make_padded_proof_from_p2p, ProverProof, VerifierIndex};
54+
use super::prover::make_padded_proof_from_p2p;
5455

5556
use super::public_input::{
5657
messages::{MessagesForNextStepProof, MessagesForNextWrapProof},
@@ -409,8 +410,8 @@ where
409410
}
410411

411412
fn verify_with(
412-
verifier_index: &VerifierIndex,
413-
proof: &ProverProof,
413+
verifier_index: &VerifierIndex<Pallas>,
414+
proof: &ProverProof<Pallas>,
414415
public_input: &[Fq],
415416
) -> Result<(), VerifyError> {
416417
use kimchi::groupmap::GroupMap;
@@ -433,7 +434,7 @@ fn verify_with(
433434

434435
fn run_checks(
435436
proof: &PicklesProofProofsVerified2ReprStableV2,
436-
verifier_index: &VerifierIndex,
437+
verifier_index: &VerifierIndex<Pallas>,
437438
) -> bool {
438439
let mut errors: Vec<String> = vec![];
439440
let mut checks = |condition: bool, s: &str| {
@@ -594,14 +595,14 @@ fn compute_deferred_values(proof: &PicklesProofProofsVerified2ReprStableV2) -> D
594595
/// https://github.com/MinaProtocol/mina/blob/4e0b324912017c3ff576704ee397ade3d9bda412/src/lib/pickles/verification_key.mli#L30
595596
pub struct VK<'a> {
596597
pub commitments: PlonkVerificationKeyEvals<Fp>,
597-
pub index: &'a VerifierIndex,
598+
pub index: &'a VerifierIndex<Pallas>,
598599
pub data: (), // Unused in proof verification
599600
}
600601

601602
pub fn verify_block(
602603
header: &MinaBlockHeaderStableV2,
603-
verifier_index: &VerifierIndex,
604-
srs: &VerifierSRS,
604+
verifier_index: &VerifierIndex<Pallas>,
605+
srs: &SRS<Vesta>,
605606
) -> bool {
606607
let MinaBlockHeaderStableV2 {
607608
protocol_state,
@@ -622,8 +623,8 @@ pub fn verify_block(
622623

623624
pub fn verify_transaction<'a>(
624625
proofs: impl IntoIterator<Item = (&'a Statement<SokDigest>, &'a TransactionSnarkProofStableV2)>,
625-
verifier_index: &VerifierIndex,
626-
srs: &VerifierSRS,
626+
verifier_index: &VerifierIndex<Pallas>,
627+
srs: &SRS<Vesta>,
627628
) -> bool {
628629
let vk = VK {
629630
commitments: PlonkVerificationKeyEvals::from(verifier_index),
@@ -643,7 +644,7 @@ pub fn verify_zkapp(
643644
verification_key: &VerificationKey,
644645
zkapp_statement: ZkappStatement,
645646
sideloaded_proof: &PicklesProofProofsVerified2ReprStableV2,
646-
srs: &VerifierSRS,
647+
srs: &SRS<Vesta>,
647648
) -> bool {
648649
let verifier_index = make_zkapp_verifier_index(verification_key);
649650
// https://github.com/MinaProtocol/mina/blob/4e0b324912017c3ff576704ee397ade3d9bda412/src/lib/pickles/pickles.ml#LL260C1-L274C18

ledger/src/proofs/verifier_index.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use kimchi::{
1212
},
1313
curve::KimchiCurve,
1414
linearization::expr_linearization,
15+
mina_curves::pasta::Pallas,
16+
verifier_index::VerifierIndex,
1517
};
1618
use mina_curves::pasta::Fq;
1719

@@ -24,11 +26,11 @@ use crate::{
2426
VerificationKey,
2527
};
2628

29+
use super::transaction::InnerCurve;
2730
use super::{
2831
transaction::endos,
2932
wrap::{Domain, Domains},
3033
};
31-
use super::{transaction::InnerCurve, VerifierIndex};
3234

3335
const PERMUTS: usize = 7;
3436
const COLUMNS: usize = 15;
@@ -38,7 +40,7 @@ pub enum VerifierKind {
3840
Transaction,
3941
}
4042

41-
pub fn get_verifier_index(kind: VerifierKind) -> VerifierIndex {
43+
pub fn get_verifier_index(kind: VerifierKind) -> VerifierIndex<Pallas> {
4244
let make = |data: &str| {
4345
let verifier_index: kimchi::verifier_index::VerifierIndex<GroupAffine<Fp>> =
4446
serde_json::from_str(data).unwrap();
@@ -47,12 +49,12 @@ pub fn get_verifier_index(kind: VerifierKind) -> VerifierIndex {
4749

4850
match kind {
4951
VerifierKind::Blockchain => {
50-
cache_one!(VerifierIndex, {
52+
cache_one!(VerifierIndex<Pallas>, {
5153
make(include_str!("data/blockchain_verifier_index.json"))
5254
})
5355
}
5456
VerifierKind::Transaction => {
55-
cache_one!(VerifierIndex, {
57+
cache_one!(VerifierIndex<Pallas>, {
5658
make(include_str!("data/transaction_verifier_index.json"))
5759
})
5860
}
@@ -61,7 +63,7 @@ pub fn get_verifier_index(kind: VerifierKind) -> VerifierIndex {
6163

6264
fn make_verifier_index(
6365
index: kimchi::verifier_index::VerifierIndex<GroupAffine<Fp>>,
64-
) -> VerifierIndex {
66+
) -> VerifierIndex<Pallas> {
6567
let domain = index.domain;
6668
let max_poly_size: usize = index.max_poly_size;
6769
let (endo, _) = endos::<Fq>();
@@ -147,7 +149,7 @@ pub fn wrap_domains(proofs_verified: usize) -> Domains {
147149
}
148150

149151
/// https://github.com/MinaProtocol/mina/blob/bfd1009abdbee78979ff0343cc73a3480e862f58/src/lib/pickles/side_loaded_verification_key.ml#L206
150-
pub fn make_zkapp_verifier_index(vk: &VerificationKey) -> VerifierIndex {
152+
pub fn make_zkapp_verifier_index(vk: &VerificationKey) -> VerifierIndex<Pallas> {
151153
let d = wrap_domains(vk.actual_wrap_domain_size.to_int());
152154
let log2_size = d.h.log2_size();
153155

ledger/src/verifier/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
use std::sync::{Arc, Mutex};
22

33
use crate::{
4-
proofs::{
5-
field::FieldWitness, verification, verifier_index::get_verifier_index, VerifierIndex,
6-
},
4+
proofs::{field::FieldWitness, verification, verifier_index::get_verifier_index},
75
scan_state::{
86
scan_state::transaction_snark::{
97
LedgerProof, LedgerProofWithSokMessage, SokMessage, TransactionSnark,
@@ -19,6 +17,7 @@ use self::common::CheckResult;
1917
#[derive(Debug, Clone)]
2018
pub struct Verifier;
2119

20+
use kimchi::{mina_curves::pasta::Pallas, verifier_index::VerifierIndex};
2221
use mina_hasher::Fp;
2322
use mina_p2p_messages::v2::{
2423
PicklesProofProofsVerified2ReprStableV2, PicklesProofProofsVerifiedMaxStableV2,
@@ -28,7 +27,7 @@ use once_cell::sync::Lazy;
2827
use poly_commitment::srs::SRS;
2928

3029
// TODO: Move this into `Verifier` struct above
31-
pub static VERIFIER_INDEX: Lazy<Arc<VerifierIndex>> = Lazy::new(|| {
30+
pub static VERIFIER_INDEX: Lazy<Arc<VerifierIndex<Pallas>>> = Lazy::new(|| {
3231
use crate::proofs::verifier_index::VerifierKind;
3332
Arc::new(get_verifier_index(VerifierKind::Transaction))
3433
});

0 commit comments

Comments
 (0)