Merge pull request #113 from vacp2p/comments_commitments

added comments related to commitments
This commit is contained in:
Sergio Chouhy 2025-09-05 22:40:53 -03:00 committed by GitHub
commit df2026f107
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View File

@ -8,6 +8,8 @@ use crate::{NullifierPublicKey, account::Account};
pub struct Commitment(pub(super) [u8; 32]);
impl Commitment {
/// Generates the commitment to a private account owned by user for npk:
/// SHA256(npk || program_owner || balance || nonce || data)
pub fn new(npk: &NullifierPublicKey, account: &Account) -> Self {
let mut bytes = Vec::new();
bytes.extend_from_slice(&npk.to_byte_array());
@ -34,6 +36,7 @@ pub type CommitmentSetDigest = [u8; 32];
pub type MembershipProof = (usize, Vec<[u8; 32]>);
/// Computes the resulting digest for the given membership proof and corresponding commitment
pub fn compute_digest_for_path(
commitment: &Commitment,
proof: &MembershipProof,

View File

@ -21,6 +21,7 @@ impl CommitmentSet {
self.merkle_tree.root()
}
/// Queries the `CommitmentSet` for a membership proof of commitment
pub fn get_proof_for(&self, commitment: &Commitment) -> Option<MembershipProof> {
let index = *self.commitments.get(commitment)?;
@ -29,6 +30,7 @@ impl CommitmentSet {
.map(|path| (index, path))
}
/// Inserts a list of commitments to the `CommitmentSet`.
pub(crate) fn extend(&mut self, commitments: &[Commitment]) {
for commitment in commitments.iter().cloned() {
let index = self.merkle_tree.insert(commitment.to_byte_array());
@ -41,6 +43,9 @@ impl CommitmentSet {
self.commitments.contains_key(commitment)
}
/// Initializes an empty `CommitmentSet` with a given capacity.
/// If the capacity is not a power_of_two, then capacity is taken
/// to be the next power_of_two.
pub(crate) fn with_capacity(capacity: usize) -> CommitmentSet {
Self {
merkle_tree: MerkleTree::with_capacity(capacity),