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