diff --git a/libsnark/jsnark_interface/CircuitReader.cpp b/libsnark/jsnark_interface/CircuitReader.cpp index 4a649897..1ad2f472 100644 --- a/libsnark/jsnark_interface/CircuitReader.cpp +++ b/libsnark/jsnark_interface/CircuitReader.cpp @@ -345,6 +345,10 @@ void CircuitReader::parseAndEval(char* arithFilepath, char* inputsFilepath) { } else if (opcode == MULCONST_OPCODE) { wireValues[outWires[0]] = constant * inValues[0]; } + for(int i = 0; i < outWires.size(); i++) { + std::cout << "main.go:449 " << outWires[i] << " "; + wireValues[outWires[i]].print(); + } //end = libff::get_nsec_time(); //evalTime += (end - begin); } else { diff --git a/libsnark/jsnark_interface/CircuitReader.hpp b/libsnark/jsnark_interface/CircuitReader.hpp index 247e3a0e..a915b0dc 100644 --- a/libsnark/jsnark_interface/CircuitReader.hpp +++ b/libsnark/jsnark_interface/CircuitReader.hpp @@ -61,6 +61,8 @@ class CircuitReader { int getNumOutputs() { return numOutputs;} std::vector getInputWireIds() const { return inputWireIds; } std::vector getOutputWireIds() const { return outputWireIds; } + unsigned int numWires; + unsigned int numInputs, numNizkInputs, numOutputs; private: ProtoboardPtr pb; @@ -81,9 +83,6 @@ class CircuitReader { std::vector nizkWireIds; std::vector outputWireIds; - unsigned int numWires; - unsigned int numInputs, numNizkInputs, numOutputs; - unsigned int currentVariableIdx, currentLinearCombinationIdx; void parseAndEval(char* arithFilepath, char* inputsFilepath); diff --git a/libsnark/jsnark_interface/run_ppzksnark.cpp b/libsnark/jsnark_interface/run_ppzksnark.cpp index 09516512..465547da 100644 --- a/libsnark/jsnark_interface/run_ppzksnark.cpp +++ b/libsnark/jsnark_interface/run_ppzksnark.cpp @@ -64,13 +64,28 @@ int main(int argc, char **argv) { char *output_auxiliary_input_filename = argv[6]; cout << "Translate Circuit and Input" << endl; CircuitReader reader(arith_filename, in_filename, pb); - r1cs_constraint_system cs = get_constraint_system_from_gadgetlib2(*pb); + cout << "num inputs: " << reader.getNumInputs() << endl; + cout << "num outputs: " << reader.getNumOutputs() << endl; + cout << "num wires: " << reader.numWires << endl; + cout << "num nizkinputs: " << reader.numNizkInputs << endl; + + r1cs_constraint_system cs = get_constraint_system_from_gadgetlib2(*pb); + // 10688740 const r1cs_variable_assignment full_assignment = get_variable_assignment_from_gadgetlib2(*pb); cs.primary_input_size = reader.getNumInputs() + reader.getNumOutputs(); cs.auxiliary_input_size = full_assignment.size() - cs.num_inputs(); - std::cout << cs.primary_input_size << std::endl; - const r1cs_primary_input primary_input(full_assignment.begin(), + cs.secret_input_size = reader.numNizkInputs; + std::cout << "primary_input_size: " << cs.primary_input_size << std::endl; + std::cout << "auxiliary_input_size (private input + internal var): " << cs.auxiliary_input_size << std::endl; + + cout << "num variables: " << cs.num_variables() << endl; + cout << "num inputs from cs: " << cs.num_inputs() << endl; + cout << "num constraints: " << cs.num_constraints() << endl; + cout << "constraint system: " << endl; + cs.print(); + + const r1cs_primary_input primary_input(full_assignment.begin(), full_assignment.begin() + cs.num_inputs()); const r1cs_auxiliary_input auxiliary_input( full_assignment.begin() + cs.num_inputs(), full_assignment.end()); @@ -138,7 +153,9 @@ int main(int argc, char **argv) { char *output_proof_filename = argv[6]; r1cs_constraint_system cs; std::ifstream ci(circuit_filename, ios::binary | ios::in); - ci >> cs; + libff::enter_block("Loading constraint system"); + ci >> cs; + libff::leave_block("Leaving constraint system"); ci.close(); libsnark::prove(cs, proof_key_filename, primary_input_filename, aux_input_filename, output_proof_filename); break; diff --git a/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp b/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp index 2d247161..03e72fc3 100644 --- a/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp +++ b/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.hpp @@ -67,6 +67,7 @@ class r1cs_constraint { friend std::ostream& operator<< (std::ostream &out, const r1cs_constraint &c); friend std::istream& operator>> (std::istream &in, r1cs_constraint &c); + void print() const; }; /************************* R1CS variable assignment **************************/ @@ -114,6 +115,7 @@ class r1cs_constraint_system { public: size_t primary_input_size; size_t auxiliary_input_size; + size_t secret_input_size; std::vector > constraints; @@ -143,6 +145,7 @@ class r1cs_constraint_system { friend std::istream& operator>> (std::istream &in, r1cs_constraint_system &cs); void report_linear_constraint_statistics() const; + void print(); }; diff --git a/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.tcc b/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.tcc index 23b89fb7..fb0ced98 100644 --- a/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.tcc +++ b/libsnark/relations/constraint_satisfaction_problems/r1cs/r1cs.tcc @@ -230,6 +230,14 @@ void r1cs_constraint_system::swap_AB_if_beneficial() libff::leave_block("Call to r1cs_constraint_system::swap_AB_if_beneficial"); } +template +void r1cs_constraint_system::print() { + for (const r1cs_constraint& c : this->constraints) + { + c.print(); + } +} + template bool r1cs_constraint_system::operator==(const r1cs_constraint_system &other) const { @@ -243,6 +251,7 @@ std::ostream& operator<<(std::ostream &out, const r1cs_constraint_system { out << cs.primary_input_size << "\n"; out << cs.auxiliary_input_size << "\n"; + out << cs.secret_input_size << "\n"; out << cs.num_constraints() << "\n"; for (const r1cs_constraint& c : cs.constraints) @@ -258,6 +267,7 @@ std::istream& operator>>(std::istream &in, r1cs_constraint_system &cs) { in >> cs.primary_input_size; in >> cs.auxiliary_input_size; + in >> cs.secret_input_size; cs.constraints.clear(); @@ -307,5 +317,14 @@ void r1cs_constraint_system::report_linear_constraint_statistics() const #endif } +template +void r1cs_constraint::print() const { + std::cout << "constraint: " << std::endl; + this->a.print(); + this->b.print(); + this->c.print(); + std::cout << std::endl; +} + } // libsnark #endif // R1CS_TCC_ diff --git a/libsnark/zk_proof_systems/ppzksnark/r1cs_gg_ppzksnark/examples/run_r1cs_gg_ppzksnark.tcc b/libsnark/zk_proof_systems/ppzksnark/r1cs_gg_ppzksnark/examples/run_r1cs_gg_ppzksnark.tcc index 0183ee27..07095034 100644 --- a/libsnark/zk_proof_systems/ppzksnark/r1cs_gg_ppzksnark/examples/run_r1cs_gg_ppzksnark.tcc +++ b/libsnark/zk_proof_systems/ppzksnark/r1cs_gg_ppzksnark/examples/run_r1cs_gg_ppzksnark.tcc @@ -127,9 +127,10 @@ void prove(const r1cs_constraint_system > &cs, char *proof_key_fi std::cout << "enter prove" << std::endl; r1cs_gg_ppzksnark_proving_key pk; std::ifstream pki(proof_key_filename, ios::in); + libff::enter_block("Loading pk"); pki >> pk; pki.close(); - std::cout << "finish loading pk" << std::endl; + libff::leave_block("Loading pk"); r1cs_primary_input primary_input, aux_input; std::ifstream pi(primary_input_filename, ios::binary | ios::in);