Skip to content

Commit

Permalink
remove parameters from commitment merkle path
Browse files Browse the repository at this point in the history
  • Loading branch information
collinc97 committed Aug 13, 2020
1 parent 5c625ba commit 862271d
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 30 deletions.
15 changes: 2 additions & 13 deletions algorithms/src/commitment_tree/commitment_path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,15 @@ use std::io::{Read, Result as IoResult, Write};
pub struct CommitmentMerklePath<C: CommitmentScheme, H: CRH> {
pub leaves: (<C as CommitmentScheme>::Output, <C as CommitmentScheme>::Output),
pub inner_hashes: (<H as CRH>::Output, <H as CRH>::Output),
#[derivative(PartialEq = "ignore")]
pub parameters: Option<H>,
}

impl<C: CommitmentScheme, H: CRH> CommitmentMerklePath<C, H> {
pub fn verify(
&self,
parameters: &H,
root_hash: &<H as CRH>::Output,
leaf: &<C as CommitmentScheme>::Output,
) -> Result<bool, MerkleError> {
// Check that CRH parameters exist
let parameters = match self.parameters {
Some(ref crh_parameters) => crh_parameters,
None => return Err(MerkleError::MissingParameters),
};

// Check if the leaf is included in the path
if leaf != &self.leaves.0 && leaf != &self.leaves.1 {
return Ok(false);
Expand Down Expand Up @@ -73,10 +66,6 @@ impl<C: CommitmentScheme, H: CRH> FromBytes for CommitmentMerklePath<C, H> {
let leaves = (C::Output::read(&mut reader)?, C::Output::read(&mut reader)?);
let inner_hashes = (H::Output::read(&mut reader)?, H::Output::read(&mut reader)?);

Ok(Self {
leaves,
inner_hashes,
parameters: None,
})
Ok(Self { leaves, inner_hashes })
}
}
6 changes: 1 addition & 5 deletions algorithms/src/commitment_tree/commitment_tree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,7 @@ impl<C: CommitmentScheme, H: CRH> CommitmentMerkleTree<C, H> {

let inner_hashes = self.inner_hashes.clone();

Ok(CommitmentMerklePath {
leaves,
inner_hashes,
parameters: Some(self.parameters.clone()),
})
Ok(CommitmentMerklePath { leaves, inner_hashes })
}
}

Expand Down
10 changes: 4 additions & 6 deletions algorithms/src/commitment_tree/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ fn commitment_tree_good_root_test() {

for leaf in merkle_tree.leaves().iter() {
let proof = merkle_tree.generate_proof(&leaf).unwrap();
assert!(proof.verify(&merkle_tree.root(), &leaf).unwrap());
assert!(proof.verify(&crh, &merkle_tree.root(), &leaf).unwrap());
}
}

Expand All @@ -81,7 +81,7 @@ fn commitment_tree_bad_root_test() {

for leaf in merkle_tree.leaves().iter() {
let proof = merkle_tree.generate_proof(&leaf).unwrap();
assert!(proof.verify(&<H as CRH>::Output::default(), &leaf).unwrap());
assert!(proof.verify(&crh, &<H as CRH>::Output::default(), &leaf).unwrap());
}
}

Expand All @@ -98,12 +98,10 @@ fn test_serialize_commitment_path() {
let proof = merkle_tree.generate_proof(&leaf).unwrap();

let proof_bytes = to_bytes![proof].unwrap();
let mut recovered_proof = CM::read(&proof_bytes[..]).unwrap();

recovered_proof.parameters = Some(crh.clone());
let recovered_proof = CM::read(&proof_bytes[..]).unwrap();

assert!(proof == recovered_proof);

assert!(recovered_proof.verify(&merkle_tree.root(), &leaf).unwrap());
assert!(recovered_proof.verify(&crh, &merkle_tree.root(), &leaf).unwrap());
}
}
6 changes: 1 addition & 5 deletions dpc/src/base_dpc/program/dummy_circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,7 @@ impl<C: BaseDPCComponents> DummyCircuit<C> {
<C::LocalDataCRH as CRH>::Output::default(),
<C::LocalDataCRH as CRH>::Output::default(),
);
let local_data_merkle_path = CommitmentMerklePath {
leaves,
inner_hashes,
parameters: Some(system_parameters.local_data_crh.clone()),
};
let local_data_merkle_path = CommitmentMerklePath { leaves, inner_hashes };

let old_serial_numbers =
vec![<C::AccountSignature as SignatureScheme>::PublicKey::default(); C::NUM_INPUT_RECORDS];
Expand Down
2 changes: 1 addition & 1 deletion gadgets/src/algorithms/commitment_tree/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ fn commitment_tree_test<
let mut satisfied = true;
for (i, leaf) in merkle_tree.leaves().iter().enumerate() {
let proof = merkle_tree.generate_proof(&leaf).unwrap();
assert!(proof.verify(&merkle_tree.root(), &leaf).unwrap());
assert!(proof.verify(&crh, &merkle_tree.root(), &leaf).unwrap());

let mut num_constraints = 0;

Expand Down

0 comments on commit 862271d

Please sign in to comment.