Add hash public input methods (#1529)

* Add hash public input methods

* Change vecs to arrays

* ::

* Fix method name
This commit is contained in:
Hamy Ratoanina 2024-02-16 17:55:46 +01:00 committed by GitHub
parent 8753162b77
commit a7b985ce39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -337,10 +337,15 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
[0; N].map(|_| self.add_virtual_target()) [0; N].map(|_| self.add_virtual_target())
} }
/// Adds a new `HashOutTarget`. `NUM_HASH_OUT_ELTS` being hardcoded to 4, it internally /// Adds a new `HashOutTarget`.
/// adds 4 virtual targets in a vector fashion.
pub fn add_virtual_hash(&mut self) -> 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`. /// Adds a new `MerkleCapTarget`, consisting in `1 << cap_height` `HashOutTarget`.
@ -353,6 +358,13 @@ impl<F: RichField + Extendable<D>, const D: usize> CircuitBuilder<F, D> {
(0..n).map(|_i| self.add_virtual_hash()).collect() (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<HashOutTarget> {
(0..n)
.map(|_i| self.add_virtual_hash_public_input())
.collect()
}
pub(crate) fn add_virtual_merkle_proof(&mut self, len: usize) -> MerkleProofTarget { pub(crate) fn add_virtual_merkle_proof(&mut self, len: usize) -> MerkleProofTarget {
MerkleProofTarget { MerkleProofTarget {
siblings: self.add_virtual_hashes(len), siblings: self.add_virtual_hashes(len),