One thing I don't quite understand is how to naively handle division operation in rank-1 constraint systems (R1CS).
A.s * B.s - C.s = 0 allows you to perform any addition/subtraction/multiplication/division operations, but how do you actually perform division from multiplication gate in any of the SNARKs system? the only thing I can think of is to use multiplicative inverse of the value you want to divide as your input for
B in the
A*Bpart, so that
A*B^-1 which is same as performing
My question is how does the verifier know the input prover send to the division gate is the multiplicative inverse of
B? it seems that the verifier would need to either trust the prover sending the correct input (there is no way to check that the prover is sending
B^-1 or some other
B'^-1 ), did I miss something here?
My question is about how to build R1CS constraint on division. for example, how do I build a constraint matrix for
(a*b)/(c*d) where a,b,c,d are inputs to an arithmetic circuit.