Skip to content

Commit

Permalink
Make rust deterministic
Browse files Browse the repository at this point in the history
  • Loading branch information
Bisht13 committed Feb 15, 2024
1 parent e5db5b6 commit c377bd4
Show file tree
Hide file tree
Showing 16 changed files with 1,612 additions and 1,983 deletions.
518 changes: 236 additions & 282 deletions packages/circom/circuits/common/body_hash_regex.circom

Large diffs are not rendered by default.

139 changes: 62 additions & 77 deletions packages/circom/circuits/common/email_addr_regex.circom
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ template EmailAddrRegex(msg_bytes) {
component eq[24][num_bytes];
component lt[8][num_bytes];
component and[9][num_bytes];
component multi_or[6][num_bytes];
component multi_or[5][num_bytes];
signal states[num_bytes+1][4];
component state_changed[num_bytes];

Expand Down Expand Up @@ -48,70 +48,70 @@ template EmailAddrRegex(msg_bytes) {
and[1][i].b <== lt[3][i].out;
eq[0][i] = IsEqual();
eq[0][i].in[0] <== in[i];
eq[0][i].in[1] <== 49;
eq[0][i].in[1] <== 33;
eq[1][i] = IsEqual();
eq[1][i].in[0] <== in[i];
eq[1][i].in[1] <== 56;
eq[1][i].in[1] <== 35;
eq[2][i] = IsEqual();
eq[2][i].in[0] <== in[i];
eq[2][i].in[1] <== 61;
eq[2][i].in[1] <== 36;
eq[3][i] = IsEqual();
eq[3][i].in[0] <== in[i];
eq[3][i].in[1] <== 36;
eq[3][i].in[1] <== 37;
eq[4][i] = IsEqual();
eq[4][i].in[0] <== in[i];
eq[4][i].in[1] <== 55;
eq[4][i].in[1] <== 38;
eq[5][i] = IsEqual();
eq[5][i].in[0] <== in[i];
eq[5][i].in[1] <== 50;
eq[5][i].in[1] <== 39;
eq[6][i] = IsEqual();
eq[6][i].in[0] <== in[i];
eq[6][i].in[1] <== 52;
eq[6][i].in[1] <== 42;
eq[7][i] = IsEqual();
eq[7][i].in[0] <== in[i];
eq[7][i].in[1] <== 35;
eq[7][i].in[1] <== 43;
eq[8][i] = IsEqual();
eq[8][i].in[0] <== in[i];
eq[8][i].in[1] <== 57;
eq[8][i].in[1] <== 46;
eq[9][i] = IsEqual();
eq[9][i].in[0] <== in[i];
eq[9][i].in[1] <== 48;
eq[10][i] = IsEqual();
eq[10][i].in[0] <== in[i];
eq[10][i].in[1] <== 42;
eq[10][i].in[1] <== 49;
eq[11][i] = IsEqual();
eq[11][i].in[0] <== in[i];
eq[11][i].in[1] <== 63;
eq[11][i].in[1] <== 50;
eq[12][i] = IsEqual();
eq[12][i].in[0] <== in[i];
eq[12][i].in[1] <== 255;
eq[12][i].in[1] <== 51;
eq[13][i] = IsEqual();
eq[13][i].in[0] <== in[i];
eq[13][i].in[1] <== 38;
eq[13][i].in[1] <== 52;
eq[14][i] = IsEqual();
eq[14][i].in[0] <== in[i];
eq[14][i].in[1] <== 46;
eq[14][i].in[1] <== 53;
eq[15][i] = IsEqual();
eq[15][i].in[0] <== in[i];
eq[15][i].in[1] <== 51;
eq[15][i].in[1] <== 54;
eq[16][i] = IsEqual();
eq[16][i].in[0] <== in[i];
eq[16][i].in[1] <== 37;
eq[16][i].in[1] <== 55;
eq[17][i] = IsEqual();
eq[17][i].in[0] <== in[i];
eq[17][i].in[1] <== 54;
eq[17][i].in[1] <== 56;
eq[18][i] = IsEqual();
eq[18][i].in[0] <== in[i];
eq[18][i].in[1] <== 43;
eq[18][i].in[1] <== 57;
eq[19][i] = IsEqual();
eq[19][i].in[0] <== in[i];
eq[19][i].in[1] <== 33;
eq[19][i].in[1] <== 61;
eq[20][i] = IsEqual();
eq[20][i].in[0] <== in[i];
eq[20][i].in[1] <== 39;
eq[20][i].in[1] <== 63;
eq[21][i] = IsEqual();
eq[21][i].in[0] <== in[i];
eq[21][i].in[1] <== 53;
eq[21][i].in[1] <== 255;
and[2][i] = AND();
and[2][i].a <== states[i][0];
multi_or[0][i] = MultiOR(24);
Expand Down Expand Up @@ -154,27 +154,27 @@ template EmailAddrRegex(msg_bytes) {
multi_or[1][i] = MultiOR(23);
multi_or[1][i].in[0] <== and[0][i].out;
multi_or[1][i].in[1] <== and[3][i].out;
multi_or[1][i].in[2] <== eq[9][i].out;
multi_or[1][i].in[3] <== eq[21][i].out;
multi_or[1][i].in[4] <== eq[18][i].out;
multi_or[1][i].in[5] <== eq[2][i].out;
multi_or[1][i].in[6] <== eq[16][i].out;
multi_or[1][i].in[7] <== eq[0][i].out;
multi_or[1][i].in[8] <== eq[13][i].out;
multi_or[1][i].in[9] <== eq[10][i].out;
multi_or[1][i].in[10] <== eq[5][i].out;
multi_or[1][i].in[11] <== eq[14][i].out;
multi_or[1][i].in[12] <== eq[4][i].out;
multi_or[1][i].in[13] <== eq[1][i].out;
multi_or[1][i].in[14] <== eq[19][i].out;
multi_or[1][i].in[15] <== eq[7][i].out;
multi_or[1][i].in[16] <== eq[6][i].out;
multi_or[1][i].in[17] <== eq[3][i].out;
multi_or[1][i].in[18] <== eq[11][i].out;
multi_or[1][i].in[19] <== eq[8][i].out;
multi_or[1][i].in[20] <== eq[17][i].out;
multi_or[1][i].in[21] <== eq[20][i].out;
multi_or[1][i].in[22] <== eq[15][i].out;
multi_or[1][i].in[2] <== eq[0][i].out;
multi_or[1][i].in[3] <== eq[1][i].out;
multi_or[1][i].in[4] <== eq[2][i].out;
multi_or[1][i].in[5] <== eq[3][i].out;
multi_or[1][i].in[6] <== eq[4][i].out;
multi_or[1][i].in[7] <== eq[5][i].out;
multi_or[1][i].in[8] <== eq[6][i].out;
multi_or[1][i].in[9] <== eq[7][i].out;
multi_or[1][i].in[10] <== eq[8][i].out;
multi_or[1][i].in[11] <== eq[9][i].out;
multi_or[1][i].in[12] <== eq[10][i].out;
multi_or[1][i].in[13] <== eq[11][i].out;
multi_or[1][i].in[14] <== eq[12][i].out;
multi_or[1][i].in[15] <== eq[13][i].out;
multi_or[1][i].in[16] <== eq[14][i].out;
multi_or[1][i].in[17] <== eq[15][i].out;
multi_or[1][i].in[18] <== eq[16][i].out;
multi_or[1][i].in[19] <== eq[17][i].out;
multi_or[1][i].in[20] <== eq[18][i].out;
multi_or[1][i].in[21] <== eq[19][i].out;
multi_or[1][i].in[22] <== eq[20][i].out;
and[4][i].b <== multi_or[1][i].out;
multi_or[2][i] = MultiOR(2);
multi_or[2][i].in[0] <== and[2][i].out;
Expand Down Expand Up @@ -202,45 +202,30 @@ template EmailAddrRegex(msg_bytes) {
eq[23][i].in[0] <== in[i];
eq[23][i].in[1] <== 45;
and[7][i] = AND();
and[7][i].a <== states[i][3];
and[7][i].a <== states[i][2];
multi_or[3][i] = MultiOR(14);
multi_or[3][i].in[0] <== and[0][i].out;
multi_or[3][i].in[1] <== and[6][i].out;
multi_or[3][i].in[2] <== eq[21][i].out;
multi_or[3][i].in[3] <== eq[9][i].out;
multi_or[3][i].in[4] <== eq[17][i].out;
multi_or[3][i].in[5] <== eq[14][i].out;
multi_or[3][i].in[6] <== eq[8][i].out;
multi_or[3][i].in[7] <== eq[23][i].out;
multi_or[3][i].in[8] <== eq[1][i].out;
multi_or[3][i].in[9] <== eq[6][i].out;
multi_or[3][i].in[2] <== eq[23][i].out;
multi_or[3][i].in[3] <== eq[8][i].out;
multi_or[3][i].in[4] <== eq[9][i].out;
multi_or[3][i].in[5] <== eq[10][i].out;
multi_or[3][i].in[6] <== eq[11][i].out;
multi_or[3][i].in[7] <== eq[12][i].out;
multi_or[3][i].in[8] <== eq[13][i].out;
multi_or[3][i].in[9] <== eq[14][i].out;
multi_or[3][i].in[10] <== eq[15][i].out;
multi_or[3][i].in[11] <== eq[4][i].out;
multi_or[3][i].in[12] <== eq[0][i].out;
multi_or[3][i].in[13] <== eq[5][i].out;
multi_or[3][i].in[11] <== eq[16][i].out;
multi_or[3][i].in[12] <== eq[17][i].out;
multi_or[3][i].in[13] <== eq[18][i].out;
and[7][i].b <== multi_or[3][i].out;
and[8][i] = AND();
and[8][i].a <== states[i][2];
multi_or[4][i] = MultiOR(14);
multi_or[4][i].in[0] <== and[0][i].out;
multi_or[4][i].in[1] <== and[6][i].out;
multi_or[4][i].in[2] <== eq[5][i].out;
multi_or[4][i].in[3] <== eq[9][i].out;
multi_or[4][i].in[4] <== eq[1][i].out;
multi_or[4][i].in[5] <== eq[6][i].out;
multi_or[4][i].in[6] <== eq[17][i].out;
multi_or[4][i].in[7] <== eq[21][i].out;
multi_or[4][i].in[8] <== eq[8][i].out;
multi_or[4][i].in[9] <== eq[14][i].out;
multi_or[4][i].in[10] <== eq[0][i].out;
multi_or[4][i].in[11] <== eq[4][i].out;
multi_or[4][i].in[12] <== eq[23][i].out;
multi_or[4][i].in[13] <== eq[15][i].out;
and[8][i].b <== multi_or[4][i].out;
multi_or[5][i] = MultiOR(2);
multi_or[5][i].in[0] <== and[7][i].out;
multi_or[5][i].in[1] <== and[8][i].out;
states[i+1][3] <== multi_or[5][i].out;
and[8][i].a <== states[i][3];
and[8][i].b <== multi_or[3][i].out;
multi_or[4][i] = MultiOR(2);
multi_or[4][i].in[0] <== and[7][i].out;
multi_or[4][i].in[1] <== and[8][i].out;
states[i+1][3] <== multi_or[4][i].out;
state_changed[i].in[2] <== states[i+1][3];
states[i+1][0] <== 1 - state_changed[i].out;
}
Expand All @@ -256,7 +241,7 @@ template EmailAddrRegex(msg_bytes) {
is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][3] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1];
is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0];
}
// substrings calculated: [{(1, 1), (0, 1), (2, 3), (3, 3), (1, 2)}]
// substrings calculated: [{(0, 1), (1, 1), (1, 2), (2, 3), (3, 3)}]
signal is_substr0[msg_bytes][6];
signal is_reveal0[msg_bytes];
signal output reveal0[msg_bytes];
Expand Down
Loading

0 comments on commit c377bd4

Please sign in to comment.