Skip to content

Commit

Permalink
fix instance (#68)
Browse files Browse the repository at this point in the history
when no instance column exists, we should not pass empty instances
  • Loading branch information
nanne007 authored Jan 24, 2024
1 parent f85a185 commit 859cc3a
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 26 deletions.
14 changes: 6 additions & 8 deletions crates/vk-gen-examples/src/examples/circuit_layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -271,19 +271,17 @@ impl<F: Field> Circuit<F> for MyCircuit<F> {
}
}

pub fn get_example_circuit<F: PrimeField>() -> (MyCircuit<F>, Vec<F>) {
pub fn get_example_circuit<F: PrimeField>() -> MyCircuit<F> {
// Prepare the circuit you want to render.
// You don't need to include any witness variables.
let a = F::random(OsRng);
let instance = F::ONE + F::ONE;
let lookup_table = vec![instance, a, a, F::ZERO];
(
MyCircuit {
a: Value::unknown(),
lookup_table,
},
vec![],
)

MyCircuit {
a: Value::unknown(),
lookup_table,
}
}

// // ANCHOR: dev-graph
Expand Down
4 changes: 2 additions & 2 deletions crates/vk-gen-examples/src/examples/shuffle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,8 +321,8 @@ fn test_prover<C: CurveAffine, const W: usize, const H: usize>(
assert_eq!(accepted, expected);
}

pub fn get_example_circuit<F: PrimeField>() -> (MyCircuit<F, 4, 32>, Vec<F>) {
(MyCircuit::<F, 4, 32>::rand(&mut OsRng), vec![])
pub fn get_example_circuit<F: PrimeField>() -> MyCircuit<F, 4, 32> {
MyCircuit::<F, 4, 32>::rand(&mut OsRng)
}

// fn main() {
Expand Down
36 changes: 20 additions & 16 deletions crates/vk-gen-examples/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,15 +139,15 @@ fn main() -> anyhow::Result<()> {
Examples::CircuitLayout => {
let circuit = circuit_layout::get_example_circuit::<Fr>();

generate_circuit_info(&params, &circuit.0)?
generate_circuit_info(&params, &circuit)?
}
Examples::Serialization => {
let circuit = serialization::get_example_circuit();
generate_circuit_info(&params, &circuit.0)?
}
Examples::Shuffle => {
let circuit = shuffle::get_example_circuit();
generate_circuit_info(&params, &circuit.0)?
generate_circuit_info(&params, &circuit)?
}
Examples::SimpleExample => {
let circuit = simple_example::get_example_circuit();
Expand Down Expand Up @@ -206,49 +206,49 @@ fn main() -> anyhow::Result<()> {
};
let (proof, instances) = match example {
Examples::CircuitLayout => {
let (circuit, instances) = circuit_layout::get_example_circuit::<Fr>();
let circuit = circuit_layout::get_example_circuit::<Fr>();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
let proof = prove_with_keccak256(circuit, &[], &params, pk, kzg);
(proof, vec![])
}
Examples::Serialization => {
let (circuit, instances) = serialization::get_example_circuit();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
(proof, vec![instances])
}
Examples::Shuffle => {
let (circuit, instances) = shuffle::get_example_circuit::<Fr>();
let circuit = shuffle::get_example_circuit::<Fr>();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
let proof = prove_with_keccak256(circuit, &[], &params, pk, kzg);
(proof, vec![])
}
Examples::SimpleExample => {
let (circuit, instances) = simple_example::get_example_circuit::<Fr>();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
(proof, vec![instances])
}
Examples::TwoChip => {
let (circuit, instances) = two_chip::get_example_circuit::<Fr>();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
(proof, vec![instances])
}
Examples::VectorMul => {
let (circuit, instances) = vector_mul::get_example_circuit::<Fr>();
let vk = keygen_vk(&params, &circuit).unwrap();
let pk = keygen_pk(&params, vk, &circuit).unwrap();
let proof = prove_with_keccak256(circuit, &[&instances], &params, pk, kzg);
(proof, instances)
(proof, vec![instances])
}
};
let instances: Vec<_> = instances.iter().map(|fr| fr.to_bytes().to_vec()).collect();
//let instances: Vec<_> = instances.iter().map(|fr| fr.to_bytes().to_vec()).collect();
let json = EntryFunctionArgumentsJSON {
function_id: format!(
"{}::{}::{}",
Expand All @@ -266,10 +266,14 @@ fn main() -> anyhow::Result<()> {
},
ArgWithTypeJSON {
arg_type: "hex".to_string(),
value: json!(vec![instances
value: json!(instances
.into_iter()
.map(|i| HexEncodedBytes(i).to_string())
.collect::<Vec<_>>()]),
.map(|is| is
.iter()
.map(|fr| fr.to_bytes().to_vec())
.map(|d| HexEncodedBytes(d).to_string())
.collect::<Vec<_>>())
.collect::<Vec<_>>()),
},
ArgWithTypeJSON {
arg_type: "hex".to_string(),
Expand Down

0 comments on commit 859cc3a

Please sign in to comment.