Commitment Circuit
The commitment circuit (commitment.circom
) handles the creation and verification of commitments:
template CommitmentHasher() {
signal input value; // Value being committed
signal input label; // keccak256(pool_scope, nonce)
signal input nullifier; // Unique nullifier
signal input secret; // Secret value
signal output commitment; // Final commitment hash
signal output nullifierHash; // Hashed nullifier
}
Key operations:
- Nullifier hashing:
nullifierHash = Poseidon([nullifier])
- Precommitment:
precommitmentHash = Poseidon([nullifier, secret])
- Final commitment:
commitment = Poseidon([value, label, precommitmentHash])