Skip to content

Commit 63a716e

Browse files
authored
Remove unnecessary mut in PodSigner trait (#340)
The PodSigner trait was taking `&mut self` in the `sign` method, but the signer doesn't need mutation in the Shcnorr implementation. Remove the `mut`. Previously the PodProver trait was also taking `&mut self` in the `prove` method, and we had many tests creating a `mut Prover/mut MockProver`. Remove all those `mut`. Breaking change: `PodSigner` trait method `sign` replaces `&mut self` by `&self`
1 parent b5e0d97 commit 63a716e

File tree

11 files changed

+136
-146
lines changed

11 files changed

+136
-146
lines changed

examples/main_pod_points.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,22 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
4646
let game_sk = SecretKey::new_rand();
4747
let game_pk = game_sk.public_key();
4848

49-
let mut game_signer = Signer(game_sk);
49+
let game_signer = Signer(game_sk);
5050

5151
// Build 2 signed pods where the game assigns points to a player that has completed a level.
5252
let mut builder = SignedPodBuilder::new(&params);
5353
builder.insert("player", "Alice");
5454
builder.insert("level", 1);
5555
builder.insert("points", 3512);
56-
let pod_points_lvl_1 = builder.sign(&mut game_signer)?;
56+
let pod_points_lvl_1 = builder.sign(&game_signer)?;
5757
pod_points_lvl_1.verify()?;
5858
println!("# pod_points_lvl_1:\n{}", pod_points_lvl_1);
5959

6060
let mut builder = SignedPodBuilder::new(&params);
6161
builder.insert("player", "Alice");
6262
builder.insert("level", 2);
6363
builder.insert("points", 5771);
64-
let pod_points_lvl_2 = builder.sign(&mut game_signer)?;
64+
let pod_points_lvl_2 = builder.sign(&game_signer)?;
6565
pod_points_lvl_2.verify()?;
6666
println!("# pod_points_lvl_2:\n{}", pod_points_lvl_2);
6767

examples/signed_pod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
1717
let pk = sk.public_key();
1818
println!("Public key: {}\n", pk);
1919

20-
let mut signer = Signer(sk);
20+
let signer = Signer(sk);
2121

2222
// Build the signed pod
2323
let mut builder = SignedPodBuilder::new(&params);
@@ -35,7 +35,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
3535
);
3636

3737
// Sign the pod and verify it
38-
let pod = builder.sign(&mut signer)?;
38+
let pod = builder.sign(&signer)?;
3939
pod.verify()?;
4040

4141
println!("{}", pod);

src/backends/plonky2/circuits/signedpod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ pub mod tests {
219219
pod.insert("dateOfBirth", 1169909384);
220220
pod.insert("socialSecurityNumber", "G2121210");
221221
let sk = SecretKey::new_rand();
222-
let mut signer = Signer(sk);
223-
let pod = pod.sign(&mut signer).unwrap();
222+
let signer = Signer(sk);
223+
let pod = pod.sign(&signer).unwrap();
224224
let signed_pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
225225

226226
// use the pod in the circuit

src/backends/plonky2/mainpod/mod.rs

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -739,12 +739,12 @@ pub mod tests {
739739

740740
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
741741
zu_kyc_sign_pod_builders(&params);
742-
let mut signer = Signer(SecretKey(BigUint::one()));
743-
let gov_id_pod = gov_id_builder.sign(&mut signer)?;
744-
let mut signer = Signer(SecretKey(2u64.into()));
745-
let pay_stub_pod = pay_stub_builder.sign(&mut signer)?;
746-
let mut signer = Signer(SecretKey(3u64.into()));
747-
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
742+
let signer = Signer(SecretKey(BigUint::one()));
743+
let gov_id_pod = gov_id_builder.sign(&signer)?;
744+
let signer = Signer(SecretKey(2u64.into()));
745+
let pay_stub_pod = pay_stub_builder.sign(&signer)?;
746+
let signer = Signer(SecretKey(3u64.into()));
747+
let sanction_list_pod = sanction_list_builder.sign(&signer)?;
748748
let kyc_builder = zu_kyc_pod_builder(
749749
&params,
750750
&vd_set,
@@ -753,8 +753,8 @@ pub mod tests {
753753
&sanction_list_pod,
754754
)?;
755755

756-
let mut prover = Prover {};
757-
let kyc_pod = kyc_builder.prove(&mut prover, &params)?;
756+
let prover = Prover {};
757+
let kyc_pod = kyc_builder.prove(&prover, &params)?;
758758
crate::measure_gates_print!();
759759
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
760760

@@ -778,8 +778,8 @@ pub mod tests {
778778
gov_id_builder.insert("idNumber", "4242424242");
779779
gov_id_builder.insert("dateOfBirth", 1169909384);
780780
gov_id_builder.insert("socialSecurityNumber", "G2121210");
781-
let mut signer = Signer(SecretKey(42u64.into()));
782-
let gov_id = gov_id_builder.sign(&mut signer).unwrap();
781+
let signer = Signer(SecretKey(42u64.into()));
782+
let gov_id = gov_id_builder.sign(&signer).unwrap();
783783
let now_minus_18y: i64 = 1169909388;
784784
let mut kyc_builder = frontend::MainPodBuilder::new(&params, &vd_set);
785785
kyc_builder.add_signed_pod(&gov_id);
@@ -791,17 +791,17 @@ pub mod tests {
791791
println!();
792792

793793
// Mock
794-
let mut prover = MockProver {};
795-
let kyc_pod = kyc_builder.prove(&mut prover, &params).unwrap();
794+
let prover = MockProver {};
795+
let kyc_pod = kyc_builder.prove(&prover, &params).unwrap();
796796
let pod = (kyc_pod.pod as Box<dyn Any>)
797797
.downcast::<MockMainPod>()
798798
.unwrap();
799799
pod.verify().unwrap();
800800
println!("{:#}", pod);
801801

802802
// Real
803-
let mut prover = Prover {};
804-
let kyc_pod = kyc_builder.prove(&mut prover, &params).unwrap();
803+
let prover = Prover {};
804+
let kyc_pod = kyc_builder.prove(&prover, &params).unwrap();
805805
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
806806
pod.verify().unwrap()
807807
}
@@ -832,17 +832,17 @@ pub mod tests {
832832
let pod_builder = frontend::MainPodBuilder::new(&params, &vd_set);
833833

834834
// Mock
835-
let mut prover = MockProver {};
836-
let kyc_pod = pod_builder.prove(&mut prover, &params).unwrap();
835+
let prover = MockProver {};
836+
let kyc_pod = pod_builder.prove(&prover, &params).unwrap();
837837
let pod = (kyc_pod.pod as Box<dyn Any>)
838838
.downcast::<MockMainPod>()
839839
.unwrap();
840840
pod.verify().unwrap();
841841
println!("{:#}", pod);
842842

843843
// Real
844-
let mut prover = Prover {};
845-
let kyc_pod = pod_builder.prove(&mut prover, &params).unwrap();
844+
let prover = Prover {};
845+
let kyc_pod = pod_builder.prove(&prover, &params).unwrap();
846846
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
847847
pod.verify().unwrap()
848848
}
@@ -853,27 +853,23 @@ pub mod tests {
853853
println!("{:#?}", params);
854854
let vd_set = &*DEFAULT_VD_SET;
855855

856-
let mut alice = Signer(SecretKey(1u32.into()));
857-
let mut bob = Signer(SecretKey(2u32.into()));
856+
let alice = Signer(SecretKey(1u32.into()));
857+
let bob = Signer(SecretKey(2u32.into()));
858858
let charlie = Signer(SecretKey(3u32.into()));
859859

860860
// Alice attests that she is ETH friends with Bob and Bob
861861
// attests that he is ETH friends with Charlie.
862-
let alice_attestation =
863-
attest_eth_friend(&params, &mut alice, Value::from(bob.public_key()));
864-
let bob_attestation =
865-
attest_eth_friend(&params, &mut bob, Value::from(charlie.public_key()));
862+
let alice_attestation = attest_eth_friend(&params, &alice, Value::from(bob.public_key()));
863+
let bob_attestation = attest_eth_friend(&params, &bob, Value::from(charlie.public_key()));
866864

867865
let helper = EthDosHelper::new(&params, vd_set, false, Value::from(alice.public_key()))?;
868-
let mut prover = Prover {};
869-
let dist_1 = helper
870-
.dist_1(&alice_attestation)?
871-
.prove(&mut prover, &params)?;
866+
let prover = Prover {};
867+
let dist_1 = helper.dist_1(&alice_attestation)?.prove(&prover, &params)?;
872868
crate::measure_gates_print!();
873869
dist_1.pod.verify()?;
874870
let dist_2 = helper
875871
.dist_n_plus_1(&dist_1, &bob_attestation)?
876-
.prove(&mut prover, &params)?;
872+
.prove(&prover, &params)?;
877873
Ok(dist_2.pod.verify()?)
878874
}
879875

@@ -920,12 +916,12 @@ pub mod tests {
920916

921917
let _st3 = pod_builder.priv_op(op!(custom, cpb_and.clone(), st0, st2))?;
922918

923-
let mut prover = MockProver {};
924-
let pod = pod_builder.prove(&mut prover, &params)?;
919+
let prover = MockProver {};
920+
let pod = pod_builder.prove(&prover, &params)?;
925921
assert!(pod.pod.verify().is_ok());
926922

927-
let mut prover = Prover {};
928-
let pod = pod_builder.prove(&mut prover, &params)?;
923+
let prover = Prover {};
924+
let pod = pod_builder.prove(&prover, &params)?;
929925
crate::measure_gates_print!();
930926

931927
let pod = (pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
@@ -948,8 +944,8 @@ pub mod tests {
948944

949945
builder.pub_op(op!(set_contains, st, 1))?;
950946

951-
let mut prover = Prover {};
952-
let proof = builder.prove(&mut prover, &params).unwrap();
947+
let prover = Prover {};
948+
let proof = builder.prove(&prover, &params).unwrap();
953949
let pod = (proof.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
954950
Ok(pod.verify()?)
955951
}

src/backends/plonky2/mock/mainpod.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -441,12 +441,12 @@ pub mod tests {
441441
let vd_set = &*MOCK_VD_SET;
442442
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
443443
zu_kyc_sign_pod_builders(&params);
444-
let mut signer = Signer(SecretKey(1u32.into()));
445-
let gov_id_pod = gov_id_builder.sign(&mut signer)?;
446-
let mut signer = Signer(SecretKey(2u32.into()));
447-
let pay_stub_pod = pay_stub_builder.sign(&mut signer)?;
448-
let mut signer = Signer(SecretKey(3u32.into()));
449-
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
444+
let signer = Signer(SecretKey(1u32.into()));
445+
let gov_id_pod = gov_id_builder.sign(&signer)?;
446+
let signer = Signer(SecretKey(2u32.into()));
447+
let pay_stub_pod = pay_stub_builder.sign(&signer)?;
448+
let signer = Signer(SecretKey(3u32.into()));
449+
let sanction_list_pod = sanction_list_builder.sign(&signer)?;
450450
let kyc_builder = zu_kyc_pod_builder(
451451
&params,
452452
&vd_set,
@@ -455,8 +455,8 @@ pub mod tests {
455455
&sanction_list_pod,
456456
)?;
457457

458-
let mut prover = MockProver {};
459-
let kyc_pod = kyc_builder.prove(&mut prover, &params)?;
458+
let prover = MockProver {};
459+
let kyc_pod = kyc_builder.prove(&prover, &params)?;
460460
let pod = (kyc_pod.pod as Box<dyn Any>)
461461
.downcast::<MockMainPod>()
462462
.unwrap();
@@ -471,8 +471,8 @@ pub mod tests {
471471
fn test_mock_main_great_boy() -> frontend::Result<()> {
472472
let (params, great_boy_builder) = great_boy_pod_full_flow()?;
473473

474-
let mut prover = MockProver {};
475-
let great_boy_pod = great_boy_builder.prove(&mut prover, &params)?;
474+
let prover = MockProver {};
475+
let great_boy_pod = great_boy_builder.prove(&prover, &params)?;
476476
let pod = (great_boy_pod.pod as Box<dyn Any>)
477477
.downcast::<MockMainPod>()
478478
.unwrap();
@@ -488,8 +488,8 @@ pub mod tests {
488488
fn test_mock_main_tickets() -> frontend::Result<()> {
489489
let params = middleware::Params::default();
490490
let tickets_builder = tickets_pod_full_flow()?;
491-
let mut prover = MockProver {};
492-
let proof_pod = tickets_builder.prove(&mut prover, &params)?;
491+
let prover = MockProver {};
492+
let proof_pod = tickets_builder.prove(&prover, &params)?;
493493
let pod = (proof_pod.pod as Box<dyn Any>)
494494
.downcast::<MockMainPod>()
495495
.unwrap();

src/backends/plonky2/signedpod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pub struct Signer(pub SecretKey);
2727

2828
impl Signer {
2929
fn sign_with_nonce(
30-
&mut self,
30+
&self,
3131
params: &Params,
3232
nonce: BigUint,
3333
kvs: &HashMap<Key, Value>,
@@ -48,7 +48,7 @@ impl Signer {
4848
dict,
4949
})
5050
}
51-
fn _sign(&mut self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<SignedPod> {
51+
fn _sign(&self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<SignedPod> {
5252
let nonce = OsRng.gen_biguint_below(&GROUP_ORDER);
5353
self.sign_with_nonce(params, nonce, kvs)
5454
}
@@ -59,7 +59,7 @@ impl Signer {
5959
}
6060

6161
impl PodSigner for Signer {
62-
fn sign(&mut self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<Box<dyn Pod>> {
62+
fn sign(&self, params: &Params, kvs: &HashMap<Key, Value>) -> Result<Box<dyn Pod>> {
6363
Ok(self._sign(params, kvs).map(Box::new)?)
6464
}
6565
}
@@ -200,8 +200,8 @@ pub mod tests {
200200
pod.insert("socialSecurityNumber", "G2121210");
201201

202202
let sk = SecretKey(123u64.into());
203-
let mut signer = Signer(sk);
204-
let pod = pod.sign(&mut signer).unwrap();
203+
let signer = Signer(sk);
204+
let pod = pod.sign(&signer).unwrap();
205205
let pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
206206

207207
pod.verify()?;

src/examples/mod.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub fn zu_kyc_pod_builder(
7373

7474
// ETHDoS
7575

76-
pub fn attest_eth_friend(params: &Params, src: &mut impl PodSigner, dst: Value) -> SignedPod {
76+
pub fn attest_eth_friend(params: &Params, src: &impl PodSigner, dst: Value) -> SignedPod {
7777
let mut attestation = SignedPodBuilder::new(params);
7878
attestation.insert("attestation", dst);
7979
attestation.sign(src).unwrap()
@@ -334,13 +334,13 @@ pub fn great_boy_pod_full_flow() -> Result<(Params, MainPodBuilder)> {
334334
};
335335
let vd_set = &*MOCK_VD_SET;
336336

337-
let mut giggles_signer = Signer(SecretKey(1u32.into()));
338-
let mut macrosoft_signer = Signer(SecretKey(2u32.into()));
339-
let mut faebook_signer = Signer(SecretKey(3u32.into()));
337+
let giggles_signer = Signer(SecretKey(1u32.into()));
338+
let macrosoft_signer = Signer(SecretKey(2u32.into()));
339+
let faebook_signer = Signer(SecretKey(3u32.into()));
340340
let good_boy_issuers =
341341
[&giggles_signer, &macrosoft_signer, &faebook_signer].map(|s| s.0.public_key());
342-
let mut bob_signer = Signer(SecretKey(11u32.into()));
343-
let mut charlie_signer = Signer(SecretKey(12u32.into()));
342+
let bob_signer = Signer(SecretKey(11u32.into()));
343+
let charlie_signer = Signer(SecretKey(12u32.into()));
344344
let alice_signer = Signer(SecretKey(13u32.into()));
345345
let bob = bob_signer.public_key();
346346
let charlie = charlie_signer.public_key();
@@ -351,23 +351,23 @@ pub fn great_boy_pod_full_flow() -> Result<(Params, MainPodBuilder)> {
351351
let mut bob_good_boys = Vec::new();
352352

353353
let good_boy = good_boy_sign_pod_builder(&params, &bob, 36);
354-
bob_good_boys.push(good_boy.sign(&mut giggles_signer).unwrap());
355-
bob_good_boys.push(good_boy.sign(&mut macrosoft_signer).unwrap());
354+
bob_good_boys.push(good_boy.sign(&giggles_signer).unwrap());
355+
bob_good_boys.push(good_boy.sign(&macrosoft_signer).unwrap());
356356

357357
// Charlie receives two good_boy pods from Macrosoft and Faebook
358358

359359
let mut charlie_good_boys = Vec::new();
360360

361361
let good_boy = good_boy_sign_pod_builder(&params, &charlie, 27);
362-
charlie_good_boys.push(good_boy.sign(&mut macrosoft_signer).unwrap());
363-
charlie_good_boys.push(good_boy.sign(&mut faebook_signer).unwrap());
362+
charlie_good_boys.push(good_boy.sign(&macrosoft_signer).unwrap());
363+
charlie_good_boys.push(good_boy.sign(&faebook_signer).unwrap());
364364

365365
// Bob and Charlie send Alice a Friend POD
366366

367367
let mut alice_friend_pods = Vec::new();
368368
let friend = friend_sign_pod_builder(&params, &alice);
369-
alice_friend_pods.push(friend.sign(&mut bob_signer).unwrap());
370-
alice_friend_pods.push(friend.sign(&mut charlie_signer).unwrap());
369+
alice_friend_pods.push(friend.sign(&bob_signer).unwrap());
370+
alice_friend_pods.push(friend.sign(&charlie_signer).unwrap());
371371

372372
let good_boy_issuers = Value::from(Set::new(
373373
params.max_depth_mt_containers,
@@ -433,7 +433,7 @@ pub fn tickets_pod_full_flow() -> Result<MainPodBuilder> {
433433
let vd_set = &*MOCK_VD_SET;
434434
let builder = tickets_sign_pod_builder(&params);
435435

436-
let signed_pod = builder.sign(&mut Signer(SecretKey(1u32.into()))).unwrap();
436+
let signed_pod = builder.sign(&Signer(SecretKey(1u32.into()))).unwrap();
437437
tickets_pod_builder(
438438
&params,
439439
vd_set,

src/frontend/custom.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,8 @@ mod tests {
311311
mp_builder.pub_op(op!(custom, gt_custom_pred, desugared_gt))?;
312312

313313
// Check that the POD builds
314-
let mut prover = MockProver {};
315-
let proof = mp_builder.prove(&mut prover, &params)?;
314+
let prover = MockProver {};
315+
let proof = mp_builder.prove(&prover, &params)?;
316316

317317
Ok(())
318318
}
@@ -360,8 +360,8 @@ mod tests {
360360
let set_contains_custom_pred = CustomPredicateRef::new(batch, 0);
361361
mp_builder.pub_op(op!(custom, set_contains_custom_pred, set_contains))?;
362362

363-
let mut prover = MockProver {};
364-
let proof = mp_builder.prove(&mut prover, &params)?;
363+
let prover = MockProver {};
364+
let proof = mp_builder.prove(&prover, &params)?;
365365

366366
Ok(())
367367
}

0 commit comments

Comments
 (0)