4

Can one use zksnark to prove the knowledge of a discrete logarithm? In another word, can zksnark (R1CS) encode exponentiation?

Maarten Bodewes
  • 96,351
  • 14
  • 169
  • 323
Sean
  • 93
  • 3

2 Answers2

2

final_exp_gadget<>() of libsnark could be a practical example to tune for DLP. The idea is, "final exponentiation" is a part of Ate pairing, that is verified as a part of check_e_equals_e_gadget<>(), which stands for Groth16 verification equation.

Vadym Fedyukovych
  • 2,347
  • 14
  • 19
1

Yes, for sure! R1CS is an NP-complete language. It is basically a characterization of arithmetic circuits, hence every computation can be expressed as a R1CS.

There are compilers that reduce program executions to R1CS. One of my favourite tools is Zokrates.

István András Seres
  • 1,204
  • 1
  • 10
  • 23