diff --git a/plonky2/src/plonk/circuit_builder.rs b/plonky2/src/plonk/circuit_builder.rs index 6df692fb..b9c13f81 100644 --- a/plonky2/src/plonk/circuit_builder.rs +++ b/plonky2/src/plonk/circuit_builder.rs @@ -337,10 +337,15 @@ impl, const D: usize> CircuitBuilder { [0; N].map(|_| self.add_virtual_target()) } - /// Adds a new `HashOutTarget`. `NUM_HASH_OUT_ELTS` being hardcoded to 4, it internally - /// adds 4 virtual targets in a vector fashion. + /// Adds a new `HashOutTarget`. pub fn add_virtual_hash(&mut self) -> HashOutTarget { - HashOutTarget::from_vec(self.add_virtual_targets(4)) + HashOutTarget::from(self.add_virtual_target_arr::<4>()) + } + + /// Registers a new `HashOutTarget` as a public input, adding + /// internally `NUM_HASH_OUT_ELTS` virtual targets. + pub fn add_virtual_hash_public_input(&mut self) -> HashOutTarget { + HashOutTarget::from(self.add_virtual_public_input_arr::<4>()) } /// Adds a new `MerkleCapTarget`, consisting in `1 << cap_height` `HashOutTarget`. @@ -353,6 +358,13 @@ impl, const D: usize> CircuitBuilder { (0..n).map(|_i| self.add_virtual_hash()).collect() } + /// Registers `n` new `HashOutTarget` as public inputs, in a vector fashion. + pub fn add_virtual_hashes_public_input(&mut self, n: usize) -> Vec { + (0..n) + .map(|_i| self.add_virtual_hash_public_input()) + .collect() + } + pub(crate) fn add_virtual_merkle_proof(&mut self, len: usize) -> MerkleProofTarget { MerkleProofTarget { siblings: self.add_virtual_hashes(len),