dory_pcs/backends/arkworks/
ark_setup.rs1use crate::setup::{ProverSetup, VerifierSetup};
8use std::ops::{Deref, DerefMut};
9
10use super::BN254;
11
12#[derive(Clone, Debug)]
18#[repr(transparent)]
19pub struct ArkworksProverSetup(pub ProverSetup<BN254>);
20
21#[derive(Clone, Debug)]
27#[repr(transparent)]
28pub struct ArkworksVerifierSetup(pub VerifierSetup<BN254>);
29
30impl ArkworksProverSetup {
31 pub fn new(max_log_n: usize) -> Self {
39 #[cfg(feature = "cache")]
40 super::invalidate_cache();
41
42 Self(ProverSetup::new(max_log_n))
43 }
44
45 #[cfg(all(feature = "disk-persistence", not(target_arch = "wasm32")))]
47 pub fn new_from_urs(max_log_n: usize) -> Self {
48 let (prover_setup, _) = crate::setup::<BN254>(max_log_n);
49 Self(prover_setup)
50 }
51
52 pub fn to_verifier_setup(&self) -> ArkworksVerifierSetup {
54 ArkworksVerifierSetup(self.0.to_verifier_setup())
55 }
56
57 pub fn into_inner(self) -> ProverSetup<BN254> {
59 self.0
60 }
61}
62
63impl ArkworksVerifierSetup {
64 pub fn into_inner(self) -> VerifierSetup<BN254> {
66 self.0
67 }
68}
69
70impl From<ProverSetup<BN254>> for ArkworksProverSetup {
71 fn from(setup: ProverSetup<BN254>) -> Self {
72 Self(setup)
73 }
74}
75
76impl From<ArkworksProverSetup> for ProverSetup<BN254> {
77 fn from(setup: ArkworksProverSetup) -> Self {
78 setup.0
79 }
80}
81
82impl From<VerifierSetup<BN254>> for ArkworksVerifierSetup {
83 fn from(setup: VerifierSetup<BN254>) -> Self {
84 Self(setup)
85 }
86}
87
88impl From<ArkworksVerifierSetup> for VerifierSetup<BN254> {
89 fn from(setup: ArkworksVerifierSetup) -> Self {
90 setup.0
91 }
92}
93
94impl Deref for ArkworksProverSetup {
95 type Target = ProverSetup<BN254>;
96
97 fn deref(&self) -> &Self::Target {
98 &self.0
99 }
100}
101
102impl DerefMut for ArkworksProverSetup {
103 fn deref_mut(&mut self) -> &mut Self::Target {
104 &mut self.0
105 }
106}
107
108impl Deref for ArkworksVerifierSetup {
109 type Target = VerifierSetup<BN254>;
110
111 fn deref(&self) -> &Self::Target {
112 &self.0
113 }
114}
115
116impl DerefMut for ArkworksVerifierSetup {
117 fn deref_mut(&mut self) -> &mut Self::Target {
118 &mut self.0
119 }
120}