Skip to content

Commit 337a511

Browse files
authored
make hash_verifier_data_gadget and dummy pub (#464)
These two functions are used by the VDF Pod (previously known as PoW Pod)
1 parent 48aa004 commit 337a511

File tree

1 file changed

+32
-32
lines changed

1 file changed

+32
-32
lines changed

src/backends/plonky2/recursion/circuit.rs

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ pub fn pad_circuit(builder: &mut CircuitBuilder<F, D>, common_data: &CommonCircu
586586
}
587587
}
588588

589-
fn hash_verifier_data_gadget(
589+
pub fn hash_verifier_data_gadget(
590590
builder: &mut CircuitBuilder<F, D>,
591591
verifier_data: &VerifierCircuitTarget,
592592
) -> HashOutTarget {
@@ -618,6 +618,37 @@ pub fn hash_verifier_data(verifier_only_data: &VerifierOnlyCircuitData<C, D>) ->
618618
PoseidonHash::hash_no_pad(&f)
619619
}
620620

621+
// Build an dummy empty circuit that uses common_data and make a proof from it.
622+
pub fn dummy(
623+
common_data: &CommonCircuitData<F, D>,
624+
num_public_inputs: usize,
625+
) -> Result<(
626+
VerifierOnlyCircuitData<C, D>,
627+
ProofWithPublicInputs<F, C, D>,
628+
)> {
629+
let config = common_data.config.clone();
630+
let mut builder = CircuitBuilder::new(config.clone());
631+
632+
let public_inputs = (0..num_public_inputs)
633+
.map(|_| {
634+
let target = builder.add_virtual_target();
635+
builder.register_public_input(target);
636+
target
637+
})
638+
.collect_vec();
639+
pad_circuit(&mut builder, common_data);
640+
641+
let circuit_data = builder.build::<C>();
642+
assert_eq!(*common_data, circuit_data.common);
643+
644+
let mut pw = PartialWitness::<F>::new();
645+
for target in &public_inputs {
646+
pw.set_target(*target, F::ZERO)?;
647+
}
648+
let proof = circuit_data.prove(pw)?;
649+
Ok((circuit_data.verifier_only, proof))
650+
}
651+
621652
#[cfg(test)]
622653
mod tests {
623654
use std::time::Instant;
@@ -800,37 +831,6 @@ mod tests {
800831
Ok(())
801832
}
802833

803-
// Build an dummy empty circuit that uses common_data and make a proof from it.
804-
fn dummy(
805-
common_data: &CommonCircuitData<F, D>,
806-
num_public_inputs: usize,
807-
) -> Result<(
808-
VerifierOnlyCircuitData<C, D>,
809-
ProofWithPublicInputs<F, C, D>,
810-
)> {
811-
let config = common_data.config.clone();
812-
let mut builder = CircuitBuilder::new(config.clone());
813-
814-
let public_inputs = (0..num_public_inputs)
815-
.map(|_| {
816-
let target = builder.add_virtual_target();
817-
builder.register_public_input(target);
818-
target
819-
})
820-
.collect_vec();
821-
pad_circuit(&mut builder, common_data);
822-
823-
let circuit_data = builder.build::<C>();
824-
assert_eq!(*common_data, circuit_data.common);
825-
826-
let mut pw = PartialWitness::<F>::new();
827-
for target in &public_inputs {
828-
pw.set_target(*target, F::ZERO)?;
829-
}
830-
let proof = circuit_data.prove(pw)?;
831-
Ok((circuit_data.verifier_only, proof))
832-
}
833-
834834
// test that recurses with arity=2, with the following shape:
835835
// proof_1d
836836
// ▲ ▲

0 commit comments

Comments
 (0)