Skip to content

Commit

Permalink
circuits: Roll back value-commitment recomputation
Browse files Browse the repository at this point in the history
  • Loading branch information
moCello committed Jun 12, 2024
1 parent 9ef7151 commit bf018bb
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 15 deletions.
14 changes: 8 additions & 6 deletions circuits/src/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ use rand::{CryptoRng, RngCore, SeedableRng};
extern crate alloc;
use alloc::vec::Vec;

use phoenix_core::{
value_commitment, Error as PhoenixError, Note, Ownable, SecretKey, ViewKey,
};
use phoenix_core::{Error as PhoenixError, Note, Ownable, SecretKey, ViewKey};

use crate::{recipient, recipient::RecipientParameters};

Expand Down Expand Up @@ -142,11 +140,15 @@ struct WitnessTxOutputNote {
}

impl TxOutputNote {
/// Crate a new `TxOutputNote`.
pub fn new(value: u64, blinding_factor: JubJubScalar) -> Self {
/// Create a new `TxOutputNote`.
pub fn new(
value: u64,
value_commitment: JubJubAffine,
blinding_factor: JubJubScalar,
) -> Self {
Self {
value,
value_commitment: value_commitment(value, blinding_factor),
value_commitment,
blinding_factor,
}
}
Expand Down
46 changes: 37 additions & 9 deletions circuits/tests/transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use phoenix_circuits::{
transaction::{TxCircuit, TxInputNote, TxOutputNote},
RecipientParameters,
};
use phoenix_core::{Note, PublicKey, SecretKey};
use phoenix_core::{value_commitment, Note, PublicKey, SecretKey};

#[macro_use]
extern crate lazy_static;
Expand Down Expand Up @@ -141,10 +141,20 @@ fn test_transfer_circuit_1_2() {
let input_notes = [TP.tx_input_notes[0].clone()];

// create 2 testing tx output notes
let value1 = 10;
let blinder1 = JubJubScalar::random(&mut rng);
let commitment1 = value_commitment(value1, blinder1);
let value2 = 5;
let blinder2 = JubJubScalar::random(&mut rng);
let commitment2 = value_commitment(value2, blinder2);
let tx_output_notes = [
TxOutputNote::new(10, JubJubScalar::random(&mut rng)),
TxOutputNote::new(5, JubJubScalar::random(&mut rng)),
TxOutputNote::new(value1, commitment1, blinder1),
TxOutputNote::new(value2, commitment2, blinder2),
];
// let tx_output_notes = [
// TxOutputNote::new(10, JubJubScalar::random(&mut rng)),
// TxOutputNote::new(5, JubJubScalar::random(&mut rng)),
// ];

let (proof, public_inputs) = prover
.prove(
Expand Down Expand Up @@ -178,9 +188,15 @@ fn test_transfer_circuit_2_2() {
[TP.tx_input_notes[0].clone(), TP.tx_input_notes[1].clone()];

// create 2 testing tx output notes
let value1 = 35;
let blinder1 = JubJubScalar::random(&mut rng);
let commitment1 = value_commitment(value1, blinder1);
let value2 = 5;
let blinder2 = JubJubScalar::random(&mut rng);
let commitment2 = value_commitment(value2, blinder2);
let tx_output_notes = [
TxOutputNote::new(35, JubJubScalar::random(&mut rng)),
TxOutputNote::new(5, JubJubScalar::random(&mut rng)),
TxOutputNote::new(value1, commitment1, blinder1),
TxOutputNote::new(value2, commitment2, blinder2),
];

let (proof, public_inputs) = prover
Expand Down Expand Up @@ -218,9 +234,15 @@ fn test_transfer_circuit_3_2() {
];

// create 2 testing tx output notes
let value1 = 35;
let blinder1 = JubJubScalar::random(&mut rng);
let commitment1 = value_commitment(value1, blinder1);
let value2 = 30;
let blinder2 = JubJubScalar::random(&mut rng);
let commitment2 = value_commitment(value2, blinder2);
let tx_output_notes = [
TxOutputNote::new(35, JubJubScalar::random(&mut rng)),
TxOutputNote::new(30, JubJubScalar::random(&mut rng)),
TxOutputNote::new(value1, commitment1, blinder1),
TxOutputNote::new(value2, commitment2, blinder2),
];

let (proof, public_inputs) = prover
Expand Down Expand Up @@ -252,9 +274,15 @@ fn test_transfer_circuit_4_2() {
.expect("failed to compile circuit");

// create 2 testing tx output notes
let value1 = 60;
let blinder1 = JubJubScalar::random(&mut rng);
let commitment1 = value_commitment(value1, blinder1);
let value2 = 30;
let blinder2 = JubJubScalar::random(&mut rng);
let commitment2 = value_commitment(value2, blinder2);
let tx_output_notes = [
TxOutputNote::new(60, JubJubScalar::random(&mut rng)),
TxOutputNote::new(30, JubJubScalar::random(&mut rng)),
TxOutputNote::new(value1, commitment1, blinder1),
TxOutputNote::new(value2, commitment2, blinder2),
];

let (proof, public_inputs) = prover
Expand Down

0 comments on commit bf018bb

Please sign in to comment.