Hello!
Despite, informally arithmetic circuits in this implementation are named "r1cs" they aren't actually true R1CS circuits in their canonical form
$A\mathbf{z} \circ B\mathbf{z} = C\mathbf{z}$. Current circuits representation is, without a doubt, a great and convenient one, but I'm wondering:
- why the current implementation calls arithmetic circuits "R1CS" while they are not actually in canonical "R1CS" form.
- if you have any plans for implementing true R1CS circuits compiler that could for example be compatible (in terms of circuit representation/encoding etc.) with other R1CS compilers, such as circom etc. Bunz in his thesis paper presented a bulletproofs variant for R1CS circuits with committed witness (into only one curve point, despite the original arithmetic circuits protocol where each witness scalar must be committed separately). After that Gil Segev revised a security proof that bridges a completness-soundness gap of the original Bunz work additionally achieving zero-knowledge with a zero-knowledge variant of the inner product argument.
@cathieyun
Hello!
$A\mathbf{z} \circ B\mathbf{z} = C\mathbf{z}$ . Current circuits representation is, without a doubt, a great and convenient one, but I'm wondering:
Despite, informally arithmetic circuits in this implementation are named "r1cs" they aren't actually true R1CS circuits in their canonical form
@cathieyun