Skip to content

Testing example apps #66

@aluex

Description

@aluex

Hi there,
Sorry to bother but I have been having troubles going through the tutorial with other example apps. The mm_pure_arith works for me but when I try the same steps on hello_world and ramput_micro, it outputs errors when I try to run the prover to prove things.

For hello_world, it shows

Building Prover ...
Makefile:1: A top-level warning

  • compiling common objs
    g++ -m64 -std=c++11 -DCURVE_BN128 -DBN_SUPPORT_SNARK -DBINARY_OUTPUT -DMONTGOMERY_OUTPUT -DNO_PROCPS -DUSE_ASM -DDB_NUM_ADDRESSES=1024 -DDB_HASH_NUM_BITS=1216 -DRAM_CELL_NUM_BITS=32 -DFAST_RAM_WORD_WIDTH=64 -DFAST_RAM_ADDRESS_WIDTH=32 -DFOLDER_TMP="/tmp/yuxia/tmp_state" -DNAME="hello_world" -I./include -I. -I/home/yuxia/pepper_deps/include -I../thirdparty/libsnark -I../thirdparty/libsnark/depends/libff -I../thirdparty/libsnark/depends/libfqfft pepper_prover.cpp -o bin/pepper_prover_hello_world obj/common/sha1.o obj/common/sha256.o obj/common/utility.o obj/common/measurement.o obj/common/mpnvector.o obj/common/mpnclass.o obj/common/mpnops.o obj/common/math.o obj/common/memory.o obj/common/waksman_router.o obj/storage/hasher.o obj/storage/ram_impl.o obj/storage/kyoto_block_store.o obj/storage/leveldb_block_store.o obj/storage/configurable_block_store.o obj/storage/null_hash.o obj/storage/ggh_hash.o obj/storage/exo.o obj/storage/db_util.o obj/storage/external_sort.o obj/storage/db_block_store.o obj/include/db.o obj/include/binary_tree.o obj/include/binary_tree_int_int.o obj/include/binary_tree_int_hash_t.o obj/include/fix_t.o obj/include/avl_tree.o obj/libv/computation_p.o obj/libv/exogenous_checker.o -L/home/yuxia/pepper_deps/lib -L../thirdparty/libsnark/build/libsnark -L../thirdparty/libsnark/build/depends/libff/libff -L../thirdparty/libsnark/build/depends -lsnark -lff -lzm -lgmp -lgmpxx -lpapi -lrt -lleveldb -lkyotocabinet -Wl,-rpath,/home/yuxia/pepper_deps/lib/
    NUMBER OF CONSTRAINTS: 3
    Generating Inputs ...
    Generating inputs, will write to ./prover_verifier_shared/hello_world.inputs
    Proving ...
    NUMBER OF CONSTRAINTS: 3
    reading proving key from file...
    Reset time counters for profiling
    (enter) Call to r1cs_gg_ppzksnark_prover [ ] (0.0000s x0.99 from start)
    (enter) Compute the polynomial H [ ] (0.0000s x0.97 from start)
    (enter) Call to r1cs_to_qap_witness_map [ ] (0.0000s x0.99 from start)
    (enter) Compute evaluation of polynomials A, B on set S [ ] (0.0001s x1.00 from start)
    (leave) Compute evaluation of polynomials A, B on set S [0.0000s x1.04] (0.0001s x1.00 from start)
    (enter) Compute coefficients of polynomial A [ ] (0.0001s x1.00 from start)
    (leave) Compute coefficients of polynomial A [0.0001s x1.00] (0.0002s x1.00 from start)
    (enter) Compute coefficients of polynomial B [ ] (0.0002s x1.00 from start)
    (leave) Compute coefficients of polynomial B [0.0000s x1.01] (0.0002s x1.00 from start)
    (enter) Compute ZK-patch [ ] (0.0002s x1.00 from start)
    (leave) Compute ZK-patch [0.0000s x1.08] (0.0002s x1.00 from start)
    (enter) Compute evaluation of polynomial A on set T [ ] (0.0003s x1.00 from start)
    (leave) Compute evaluation of polynomial A on set T [0.0000s x1.01] (0.0003s x1.00 from start)
    (enter) Compute evaluation of polynomial B on set T [ ] (0.0003s x1.00 from start)
    (leave) Compute evaluation of polynomial B on set T [0.0000s x1.01] (0.0003s x1.00 from start)
    (enter) Compute evaluation of polynomial H on set T [ ] (0.0003s x1.00 from start)
    (enter) Compute evaluation of polynomial C on set S [ ] (0.0003s x1.00 from start)
    (leave) Compute evaluation of polynomial C on set S [0.0000s x1.06] (0.0003s x1.00 from start)
    (enter) Compute coefficients of polynomial C [ ] (0.0004s x1.00 from start)
    (leave) Compute coefficients of polynomial C [0.0000s x1.01] (0.0004s x1.00 from start)
    (enter) Compute evaluation of polynomial C on set T [ ] (0.0004s x1.00 from start)
    (leave) Compute evaluation of polynomial C on set T [0.0000s x1.01] (0.0004s x1.00 from start)
    (enter) Divide by Z on set T [ ] (0.0004s x1.00 from start)
    (leave) Divide by Z on set T [0.0001s x1.00] (0.0005s x1.00 from start)
    (leave) Compute evaluation of polynomial H on set T [0.0002s x1.00] (0.0005s x1.00 from start)
    (enter) Compute coefficients of polynomial H [ ] (0.0005s x1.00 from start)
    (leave) Compute coefficients of polynomial H [0.0000s x1.01] (0.0005s x1.00 from start)
    (enter) Compute sum of H and ZK-patch [ ] (0.0005s x1.00 from start)
    (leave) Compute sum of H and ZK-patch [0.0000s x1.08] (0.0005s x1.00 from start)
    (leave) Call to r1cs_to_qap_witness_map [0.0005s x1.00] (0.0006s x1.00 from start)
    pepper_prover_hello_world: ../thirdparty/libsnark/libsnark/zk_proof_systems/ppzksnark/r1cs_gg_ppzksnark/r1cs_gg_ppzksnark.tcc:406: libsnark::r1cs_gg_ppzksnark_proof libsnark::r1cs_gg_ppzksnark_prover(const libsnark::r1cs_gg_ppzksnark_proving_key&, libsnark::r1cs_gg_ppzksnark_primary_input&, libsnark::r1cs_gg_ppzksnark_auxiliary_input&) [with ppT = libff::bn128_pp; libsnark::r1cs_gg_ppzksnark_primary_input = std::vector<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>, std::allocator<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))> > >; typename EC_ppT::Fp_type = libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>; libsnark::r1cs_gg_ppzksnark_auxiliary_input = std::vector<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>, std::allocator<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))> > >]: Assertion `!qap_wit.coefficients_for_H[qap_wit.degree()-2].is_zero()' failed.
    Aborted (core dumped)

And for the ramput_micro, it shows

Makefile:1: A top-level warning

  • compiling common objs
    g++ -m64 -std=c++11 -DCURVE_BN128 -DBN_SUPPORT_SNARK -DBINARY_OUTPUT -DMONTGOMERY_OUTPUT -DNO_PROCPS -DUSE_ASM -DDB_NUM_ADDRESSES=1024 -DDB_HASH_NUM_BITS=1216 -DRAM_CELL_NUM_BITS=32 -DFAST_RAM_WORD_WIDTH=64 -DFAST_RAM_ADDRESS_WIDTH=32 -DFOLDER_TMP="/tmp/yuxia/tmp_state" -DNAME="ramput_micro" -I./include -I. -I/home/yuxia/pepper_deps/include -I../thirdparty/libsnark -I../thirdparty/libsnark/depends/libff -I../thirdparty/libsnark/depends/libfqfft pepper_prover.cpp -o bin/pepper_prover_ramput_micro obj/common/sha1.o obj/common/sha256.o obj/common/utility.o obj/common/measurement.o obj/common/mpnvector.o obj/common/mpnclass.o obj/common/mpnops.o obj/common/math.o obj/common/memory.o obj/common/waksman_router.o obj/storage/hasher.o obj/storage/ram_impl.o obj/storage/kyoto_block_store.o obj/storage/leveldb_block_store.o obj/storage/configurable_block_store.o obj/storage/null_hash.o obj/storage/ggh_hash.o obj/storage/exo.o obj/storage/db_util.o obj/storage/external_sort.o obj/storage/db_block_store.o obj/include/db.o obj/include/binary_tree.o obj/include/binary_tree_int_int.o obj/include/binary_tree_int_hash_t.o obj/include/fix_t.o obj/include/avl_tree.o obj/libv/computation_p.o obj/libv/exogenous_checker.o -L/home/yuxia/pepper_deps/lib -L../thirdparty/libsnark/build/libsnark -L../thirdparty/libsnark/build/depends/libff/libff -L../thirdparty/libsnark/build/depends -lsnark -lff -lzm -lgmp -lgmpxx -lpapi -lrt -lleveldb -lkyotocabinet -Wl,-rpath,/home/yuxia/pepper_deps/lib/
    NUMBER OF CONSTRAINTS: 950705
    Generating Inputs ...
    Generating inputs, will write to ./prover_verifier_shared/ramput_micro.inputs
    Proving ...
    NUMBER OF CONSTRAINTS: 950705
    reading proving key from file...
    Reset time counters for profiling
    (enter) Call to r1cs_gg_ppzksnark_prover [ ] (0.0000s x1.00 from start)
    (enter) Compute the polynomial H [ ] (0.0000s x0.97 from start)
    (enter) Call to r1cs_to_qap_witness_map [ ] (0.0000s x0.99 from start)
    pepper_prover_ramput_micro: ../thirdparty/libsnark/libsnark/reductions/r1cs_to_qap/r1cs_to_qap.tcc:216: libsnark::qap_witness libsnark::r1cs_to_qap_witness_map(const libsnark::r1cs_constraint_system&, libsnark::r1cs_primary_input&, libsnark::r1cs_auxiliary_input&, const FieldT&, const FieldT&, const FieldT&) [with FieldT = libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>; libsnark::r1cs_primary_input = std::vector<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>, std::allocator<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))> > >; libsnark::r1cs_auxiliary_input = std::vector<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))>, std::allocator<libff::Fp_model<4, ((const libff::bigint<4>&)(& libff::bn128_modulus_r))> > >]: Assertion `cs.is_satisfied(primary_input, auxiliary_input)' failed.
    Aborted (core dumped)

The inputs are the generated by the default input generator.

void ramput_micro_input_gen (mpq_t * input_q, int num_inputs, char *argv[]) {

    for (int i = 0; i < num_inputs; i++) {
        mpq_set_ui(input_q[i], rand(), 1);
    }
}

It seems the QAP witness does not satisfy the constraints..?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions