@maci-protocol/circuits 0.0.0-ci.ec84efe → 0.0.0-ci.eea13a2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +2 -2
  3. package/build/ts/{genZkeys.d.ts → generateZkeys.d.ts} +1 -1
  4. package/build/ts/generateZkeys.d.ts.map +1 -0
  5. package/build/ts/{genZkeys.js → generateZkeys.js} +1 -1
  6. package/build/ts/generateZkeys.js.map +1 -0
  7. package/build/ts/types.d.ts +15 -16
  8. package/build/ts/types.d.ts.map +1 -1
  9. package/build/tsconfig.build.tsbuildinfo +1 -1
  10. package/circom/circuits.json +35 -19
  11. package/circom/coordinator/full/MessageProcessor.circom +253 -0
  12. package/circom/coordinator/full/SingleMessageProcessor.circom +203 -0
  13. package/circom/coordinator/non-qv/MessageProcessor.circom +252 -0
  14. package/circom/coordinator/non-qv/SingleMessageProcessor.circom +199 -0
  15. package/circom/coordinator/non-qv/VoteTally.circom +161 -0
  16. package/circom/coordinator/qv/MessageProcessor.circom +250 -0
  17. package/circom/coordinator/qv/SingleMessageProcessor.circom +207 -0
  18. package/circom/coordinator/qv/VoteTally.circom +179 -0
  19. package/circom/coordinator/qv/VoteTallyWithIndividualCounts.circom +226 -0
  20. package/circom/utils/{calculateTotal.circom → CalculateTotal.circom} +8 -6
  21. package/circom/utils/{verifySignature.circom → EdDSAPoseidonVerifier.circom} +40 -66
  22. package/circom/utils/MessageHasher.circom +57 -0
  23. package/circom/utils/MessageToCommand.circom +107 -0
  24. package/circom/utils/PoseidonHasher.circom +29 -0
  25. package/circom/utils/{privToPubKey.circom → PrivateToPublicKey.circom} +12 -10
  26. package/circom/utils/VerifySignature.circom +39 -0
  27. package/circom/utils/full/MessageValidator.circom +91 -0
  28. package/circom/utils/full/StateLeafAndBallotTransformer.circom +122 -0
  29. package/circom/utils/non-qv/{messageValidator.circom → MessageValidator.circom} +17 -15
  30. package/circom/utils/non-qv/ResultCommitmentVerifier.circom +84 -0
  31. package/circom/utils/non-qv/{stateLeafAndBallotTransformer.circom → StateLeafAndBallotTransformer.circom} +36 -36
  32. package/circom/utils/qv/{messageValidator.circom → MessageValidator.circom} +17 -15
  33. package/circom/utils/qv/ResultCommitmentVerifier.circom +107 -0
  34. package/circom/utils/qv/{stateLeafAndBallotTransformer.circom → StateLeafAndBallotTransformer.circom} +36 -36
  35. package/circom/utils/trees/BinaryMerkleRoot.circom +65 -0
  36. package/circom/utils/trees/CheckRoot.circom +49 -0
  37. package/circom/utils/trees/LeafExists.circom +27 -0
  38. package/circom/utils/trees/MerkleTreeInclusionProof.circom +50 -0
  39. package/circom/utils/trees/QuinaryCheckRoot.circom +54 -0
  40. package/circom/utils/trees/QuinaryGeneratePathIndices.circom +44 -0
  41. package/circom/utils/trees/QuinaryLeafExists.circom +30 -0
  42. package/circom/utils/trees/QuinarySelector.circom +42 -0
  43. package/circom/utils/trees/QuinaryTreeInclusionProof.circom +55 -0
  44. package/circom/utils/trees/Splicer.circom +76 -0
  45. package/circom/voter/PollJoined.circom +43 -0
  46. package/circom/voter/PollJoining.circom +54 -0
  47. package/package.json +20 -17
  48. package/build/ts/genZkeys.d.ts.map +0 -1
  49. package/build/ts/genZkeys.js.map +0 -1
  50. package/circom/coordinator/non-qv/processMessages.circom +0 -447
  51. package/circom/coordinator/non-qv/tallyVotes.circom +0 -232
  52. package/circom/coordinator/qv/processMessages.circom +0 -449
  53. package/circom/coordinator/qv/tallyVotes.circom +0 -277
  54. package/circom/utils/hashers.circom +0 -78
  55. package/circom/utils/messageToCommand.circom +0 -78
  56. package/circom/utils/trees/incrementalMerkleTree.circom +0 -198
  57. package/circom/utils/trees/incrementalQuinaryTree.circom +0 -287
  58. package/circom/voter/poll.circom +0 -93
package/LICENSE CHANGED
@@ -1,7 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2020 Barry WhiteHat, Kendrick Tan, Kobi Gurkan, Kirill Goncharov
4
- Cory Dickson, Han Jian, Chih-Cheng Liang, and Koh Wei Jie
3
+ Copyright (c) 2025 Ethereum Foundation
5
4
 
6
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -7,8 +7,8 @@ This package contains the zk-SNARK circuits written in Circom 2.0.
7
7
 
8
8
  The main circuits are:
9
9
 
10
- - `processMessages.circom`
11
- - `tallyVotes.circom`
10
+ - `MessageProcessor.circom`
11
+ - `VoteTally.circom`
12
12
 
13
13
  The rest of the circuits are utilities templates that are required for the main circuits to work correctly. These include utilities such as float math, conversion of private keys, and Poseidon hashing/encryption.
14
14
 
@@ -6,4 +6,4 @@
6
6
  * @param outPath - the path to the output folder
7
7
  */
8
8
  export declare const generateZkeys: (outputPath?: string) => Promise<void>;
9
- //# sourceMappingURL=genZkeys.d.ts.map
9
+ //# sourceMappingURL=generateZkeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateZkeys.d.ts","sourceRoot":"","sources":["../../ts/generateZkeys.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CA2CrE,CAAC"}
@@ -64,4 +64,4 @@ if (require.main === module) {
64
64
  }
65
65
  })();
66
66
  }
67
- //# sourceMappingURL=genZkeys.js.map
67
+ //# sourceMappingURL=generateZkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateZkeys.js","sourceRoot":"","sources":["../../ts/generateZkeys.ts"],"names":[],"mappings":"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"}
@@ -18,11 +18,11 @@ export interface ISnarkJSVerificationKey {
18
18
  * Inputs for circuit PollJoining
19
19
  */
20
20
  export interface IPollJoiningInputs {
21
- privKey: bigint;
22
- pollPubKey: bigint[][];
21
+ privateKey: bigint;
22
+ pollPublicKey: bigint[][];
23
23
  stateLeaf: bigint[];
24
24
  siblings: bigint[][];
25
- indices: bigint[];
25
+ index: bigint;
26
26
  nullifier: bigint;
27
27
  credits: bigint;
28
28
  stateRoot: bigint;
@@ -33,12 +33,11 @@ export interface IPollJoiningInputs {
33
33
  * Inputs for circuit PollJoined
34
34
  */
35
35
  export interface IPollJoinedInputs {
36
- privKey: bigint;
36
+ privateKey: bigint;
37
37
  voiceCreditsBalance: bigint;
38
- joinTimestamp: bigint;
39
38
  stateLeaf: bigint[];
40
39
  pathElements: bigint[][];
41
- pathIndices: bigint[];
40
+ index: bigint;
42
41
  credits: bigint;
43
42
  stateRoot: bigint;
44
43
  actualStateTreeDepth: bigint;
@@ -48,15 +47,15 @@ export interface IPollJoinedInputs {
48
47
  */
49
48
  export interface IProcessMessagesInputs {
50
49
  actualStateTreeDepth: bigint;
51
- numSignUps: bigint;
50
+ totalSignups: bigint;
52
51
  batchEndIndex: bigint;
53
52
  index: bigint;
54
53
  inputBatchHash: bigint;
55
54
  outputBatchHash: bigint;
56
- msgs: bigint[];
57
- coordPrivKey: bigint;
55
+ messages: bigint[];
56
+ coordinatorPrivateKey: bigint;
58
57
  coordinatorPublicKeyHash: bigint;
59
- encPubKeys: bigint[];
58
+ encryptionPublicKeys: bigint[];
60
59
  currentStateRoot: bigint;
61
60
  currentStateLeaves: bigint[];
62
61
  currentStateLeavesPathElements: bigint[][];
@@ -72,14 +71,14 @@ export interface IProcessMessagesInputs {
72
71
  voteOptions: bigint;
73
72
  }
74
73
  /**
75
- * Inputs for circuit TallyVotes
74
+ * Inputs for circuit VoteTally
76
75
  */
77
- export interface ITallyVotesInputs {
76
+ export interface IVoteTallyInputs {
78
77
  stateRoot: bigint;
79
78
  ballotRoot: bigint;
80
79
  sbSalt: bigint;
81
80
  index: bigint;
82
- numSignUps: bigint;
81
+ totalSignups: bigint;
83
82
  sbCommitment: bigint;
84
83
  currentTallyCommitment: bigint;
85
84
  newTallyCommitment: bigint;
@@ -90,10 +89,10 @@ export interface ITallyVotesInputs {
90
89
  currentResultsRootSalt: bigint;
91
90
  currentSpentVoiceCreditSubtotal: bigint;
92
91
  currentSpentVoiceCreditSubtotalSalt: bigint;
93
- currentPerVOSpentVoiceCredits: bigint[];
94
- currentPerVOSpentVoiceCreditsRootSalt: bigint;
92
+ currentPerVoteOptionSpentVoiceCredits: bigint[];
93
+ currentPerVoteOptionSpentVoiceCreditsRootSalt: bigint;
95
94
  newResultsRootSalt: bigint;
96
- newPerVOSpentVoiceCreditsRootSalt: bigint;
95
+ newPerVoteOptionSpentVoiceCreditsRootSalt: bigint;
97
96
  newSpentVoiceCreditSubtotalSalt: bigint;
98
97
  }
99
98
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../ts/types.ts"],"names":[],"mappings":"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"}