You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here I have put together a simple example that just checks a SHA256 preimage in the inner snark, but using primary inputs. The proof is supposed to be checked in an outer snark. It fails during proof generation for the outer snark (full error below):
I have tried with a different inner snark that allows scaling the complexity more smoothly than SHA256. Specifically, I looked at the knapsack hash function, where it starts to fail at 16-bits of preimage combined with 32-bits of output hash (I was trying only with 1:2 ratio).
Well here is the failing SHA-256 snark at any rate:
* PK size in bits: 3527132826
* G1 elements in VK: 152615
* G2 elements in VK: 5
* VK size in bits: 55403891
(enter) Call to r1cs_ppzksnark_verifier_process_vk [ ] (441.5563s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.5563s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.1182s x1.00] (441.6745s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.6746s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.0025s x1.00] (441.6771s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G1 [ ] (441.6771s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G1 [0.0000s x1.04] (441.6771s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.6771s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.0025s x1.00] (441.6796s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.6796s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.0025s x1.00] (441.6821s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.6821s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.0025s x1.00] (441.6846s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G1 [ ] (441.6846s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G1 [0.0000s x1.03] (441.6846s x1.00 from start)
(enter) Call to mnt6_ate_precompute_G2 [ ] (441.6846s x1.00 from start)
(leave) Call to mnt6_ate_precompute_G2 [0.0032s x1.00] (441.6878s x1.00 from start)
(leave) Call to r1cs_ppzksnark_verifier_process_vk [0.1354s x1.00] (441.6917s x1.00 from start)
(enter) Call to r1cs_ppzksnark_prover [ ] (441.7043s x1.00 from start)
(enter) Compute the polynomial H [ ] (441.7044s x1.00 from start)
(enter) Call to r1cs_to_qap_witness_map [ ] (441.7044s x1.00 from start)
(enter) Compute evaluation of polynomials A, B on set S [ ] (441.7163s x1.00 from start)
(leave) Compute evaluation of polynomials A, B on set S [0.4858s x1.00] (442.2020s x1.00 from start)
(enter) Compute coefficients of polynomial A [ ] (442.2021s x1.00 from start)
terminate called after throwing an instance of 'std::invalid_argument'
what(): libff::get_root_of_unity: expected logn <= FieldT::s
line 32: 12 Aborted
The text was updated successfully, but these errors were encountered:
Update: By playing with it some more, I discovered that it works with the curves flipped around - mnt6 works in mnt4 but not vice versa (the way I have them above). Isn't it supposed to work either way though, and that's how recursive proofs are done?
Here I have put together a simple example that just checks a SHA256 preimage in the inner snark, but using primary inputs. The proof is supposed to be checked in an outer snark. It fails during proof generation for the outer snark (full error below):
I have tried with a different inner snark that allows scaling the complexity more smoothly than SHA256. Specifically, I looked at the knapsack hash function, where it starts to fail at 16-bits of preimage combined with 32-bits of output hash (I was trying only with 1:2 ratio).
Well here is the failing SHA-256 snark at any rate:
Result:
The text was updated successfully, but these errors were encountered: