  The communities of blockchains and distributed ledgers have been stirred up
by the introduction of zero-knowledge proofs (ZKPs). Originally designed to
solve privacy issues, ZKPs have now evolved into an effective remedy for
scalability concerns and are applied in Zcash (internet money like Bitcoin). To
enable ZKPs, Rank-1 Constraint Systems (R1CS) offer a verifier for bi-linear
equations. To accurately and efficiently represent R1CS, several language tools
like Circom, Noir, and Snarky have been proposed to automate the compilation of
advanced programs into R1CS. However, due to the flexible nature of R1CS
representation, there can be significant differences in the compiled R1CS forms
generated from circuit language programs with the same underlying semantics. To
address this issue, this paper uses a data-flow-based R1CS paradigm algorithm,
which produces a standardized format for different R1CS instances with
identical semantics. By using the normalized R1CS format circuits, the
complexity of circuits' verification can be reduced. In addition, this paper
presents an R1CS normalization algorithm benchmark, and our experimental
evaluation demonstrates the effectiveness and correctness of our methods.
