@maci-protocol/testing 0.0.0-ci.00107eb

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 (93) hide show
  1. package/CHANGELOG.md +262 -0
  2. package/LICENSE +21 -0
  3. package/README.md +16 -0
  4. package/build/hardhat.config.d.ts +5 -0
  5. package/build/hardhat.config.d.ts.map +1 -0
  6. package/build/hardhat.config.js +37 -0
  7. package/build/hardhat.config.js.map +1 -0
  8. package/build/ts/__tests__/e2e.full.test.d.ts +2 -0
  9. package/build/ts/__tests__/e2e.full.test.d.ts.map +1 -0
  10. package/build/ts/__tests__/e2e.full.test.js +839 -0
  11. package/build/ts/__tests__/e2e.full.test.js.map +1 -0
  12. package/build/ts/__tests__/e2e.nonQv.test.d.ts +2 -0
  13. package/build/ts/__tests__/e2e.nonQv.test.d.ts.map +1 -0
  14. package/build/ts/__tests__/e2e.nonQv.test.js +605 -0
  15. package/build/ts/__tests__/e2e.nonQv.test.js.map +1 -0
  16. package/build/ts/__tests__/e2e.test.d.ts +2 -0
  17. package/build/ts/__tests__/e2e.test.d.ts.map +1 -0
  18. package/build/ts/__tests__/e2e.test.js +1596 -0
  19. package/build/ts/__tests__/e2e.test.js.map +1 -0
  20. package/build/ts/__tests__/integration.test.d.ts +2 -0
  21. package/build/ts/__tests__/integration.test.d.ts.map +1 -0
  22. package/build/ts/__tests__/integration.test.js +288 -0
  23. package/build/ts/__tests__/integration.test.js.map +1 -0
  24. package/build/ts/__tests__/keyChange.test.d.ts +2 -0
  25. package/build/ts/__tests__/keyChange.test.d.ts.map +1 -0
  26. package/build/ts/__tests__/keyChange.test.js +455 -0
  27. package/build/ts/__tests__/keyChange.test.js.map +1 -0
  28. package/build/ts/__tests__/maciKeys.test.d.ts +2 -0
  29. package/build/ts/__tests__/maciKeys.test.d.ts.map +1 -0
  30. package/build/ts/__tests__/maciKeys.test.js +78 -0
  31. package/build/ts/__tests__/maciKeys.test.js.map +1 -0
  32. package/build/ts/__tests__/stress/stress.full.test.d.ts +2 -0
  33. package/build/ts/__tests__/stress/stress.full.test.d.ts.map +1 -0
  34. package/build/ts/__tests__/stress/stress.full.test.js +186 -0
  35. package/build/ts/__tests__/stress/stress.full.test.js.map +1 -0
  36. package/build/ts/__tests__/unit/fundWallet.test.d.ts +2 -0
  37. package/build/ts/__tests__/unit/fundWallet.test.d.ts.map +1 -0
  38. package/build/ts/__tests__/unit/fundWallet.test.js +15 -0
  39. package/build/ts/__tests__/unit/fundWallet.test.js.map +1 -0
  40. package/build/ts/__tests__/unit/joinPoll.test.d.ts +2 -0
  41. package/build/ts/__tests__/unit/joinPoll.test.d.ts.map +1 -0
  42. package/build/ts/__tests__/unit/joinPoll.test.js +160 -0
  43. package/build/ts/__tests__/unit/joinPoll.test.js.map +1 -0
  44. package/build/ts/__tests__/unit/poll.test.d.ts +2 -0
  45. package/build/ts/__tests__/unit/poll.test.d.ts.map +1 -0
  46. package/build/ts/__tests__/unit/poll.test.js +87 -0
  47. package/build/ts/__tests__/unit/poll.test.js.map +1 -0
  48. package/build/ts/__tests__/unit/publish.test.d.ts +2 -0
  49. package/build/ts/__tests__/unit/publish.test.d.ts.map +1 -0
  50. package/build/ts/__tests__/unit/publish.test.js +130 -0
  51. package/build/ts/__tests__/unit/publish.test.js.map +1 -0
  52. package/build/ts/__tests__/unit/setVerifyingKeys.test.d.ts +2 -0
  53. package/build/ts/__tests__/unit/setVerifyingKeys.test.d.ts.map +1 -0
  54. package/build/ts/__tests__/unit/setVerifyingKeys.test.js +52 -0
  55. package/build/ts/__tests__/unit/setVerifyingKeys.test.js.map +1 -0
  56. package/build/ts/__tests__/unit/signup.test.d.ts +2 -0
  57. package/build/ts/__tests__/unit/signup.test.d.ts.map +1 -0
  58. package/build/ts/__tests__/unit/signup.test.js +65 -0
  59. package/build/ts/__tests__/unit/signup.test.js.map +1 -0
  60. package/build/ts/__tests__/unit/timeTravel.test.d.ts +2 -0
  61. package/build/ts/__tests__/unit/timeTravel.test.d.ts.map +1 -0
  62. package/build/ts/__tests__/unit/timeTravel.test.js +14 -0
  63. package/build/ts/__tests__/unit/timeTravel.test.js.map +1 -0
  64. package/build/ts/__tests__/unit/utils.test.d.ts +2 -0
  65. package/build/ts/__tests__/unit/utils.test.d.ts.map +1 -0
  66. package/build/ts/__tests__/unit/utils.test.js +36 -0
  67. package/build/ts/__tests__/unit/utils.test.js.map +1 -0
  68. package/build/ts/constants.d.ts +82 -0
  69. package/build/ts/constants.d.ts.map +1 -0
  70. package/build/ts/constants.js +198 -0
  71. package/build/ts/constants.js.map +1 -0
  72. package/build/ts/index.d.ts +4 -0
  73. package/build/ts/index.d.ts.map +1 -0
  74. package/build/ts/index.js +23 -0
  75. package/build/ts/index.js.map +1 -0
  76. package/build/ts/testingClass.d.ts +43 -0
  77. package/build/ts/testingClass.d.ts.map +1 -0
  78. package/build/ts/testingClass.js +145 -0
  79. package/build/ts/testingClass.js.map +1 -0
  80. package/build/ts/types.d.ts +99 -0
  81. package/build/ts/types.d.ts.map +1 -0
  82. package/build/ts/types.js +3 -0
  83. package/build/ts/types.js.map +1 -0
  84. package/build/ts/user.d.ts +27 -0
  85. package/build/ts/user.d.ts.map +1 -0
  86. package/build/ts/user.js +36 -0
  87. package/build/ts/user.js.map +1 -0
  88. package/build/ts/utils.d.ts +70 -0
  89. package/build/ts/utils.d.ts.map +1 -0
  90. package/build/ts/utils.js +192 -0
  91. package/build/ts/utils.js.map +1 -0
  92. package/build/tsconfig.tsbuildinfo +1 -0
  93. package/package.json +54 -0
@@ -0,0 +1,455 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_1 = require("@maci-protocol/core");
7
+ const crypto_1 = require("@maci-protocol/crypto");
8
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
9
+ const sdk_1 = require("@maci-protocol/sdk");
10
+ const chai_1 = require("chai");
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const constants_1 = require("../constants");
13
+ const utils_1 = require("../utils");
14
+ describe("keyChange tests", function test() {
15
+ const useWasm = (0, sdk_1.isArm)();
16
+ this.timeout(900000);
17
+ let maciAddresses;
18
+ let initialVoiceCreditProxyContractAddress;
19
+ let signer;
20
+ const generateProofsArgs = {
21
+ outputDir: constants_1.testProofsDirPath,
22
+ tallyFile: constants_1.testTallyFilePath,
23
+ voteTallyZkey: constants_1.testTallyVotesZkeyPath,
24
+ messageProcessorZkey: constants_1.testProcessMessageZkeyPath,
25
+ pollId: 0n,
26
+ rapidsnark: constants_1.testRapidsnarkPath,
27
+ messageProcessorWitnessGenerator: constants_1.testProcessMessagesWitnessPath,
28
+ messageProcessorWitnessDatFile: constants_1.testProcessMessagesWitnessDatPath,
29
+ voteTallyWitnessGenerator: constants_1.testTallyVotesWitnessPath,
30
+ voteTallyWitnessDatFile: constants_1.testTallyVotesWitnessDatPath,
31
+ coordinatorPrivateKey: constants_1.coordinatorPrivateKey,
32
+ messageProcessorWasm: constants_1.testProcessMessagesWasmPath,
33
+ voteTallyWasm: constants_1.testTallyVotesWasmPath,
34
+ useWasm,
35
+ mode: core_1.EMode.QV,
36
+ };
37
+ // before all tests we deploy the verifying keys registry contract and set the verifying keys
38
+ before(async () => {
39
+ signer = await (0, sdk_1.getDefaultSigner)();
40
+ const constantInitialVoiceCreditProxyFactory = await (0, sdk_1.deployConstantInitialVoiceCreditProxyFactory)(signer, true);
41
+ const initialVoiceCreditProxy = await (0, sdk_1.deployConstantInitialVoiceCreditProxy)({ amount: constants_1.DEFAULT_INITIAL_VOICE_CREDITS }, constantInitialVoiceCreditProxyFactory, signer);
42
+ initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();
43
+ });
44
+ describe("keyChange and new vote (new vote has same nonce)", () => {
45
+ after(async () => {
46
+ await (0, utils_1.clean)();
47
+ });
48
+ const user1Keypair = new domainobjs_1.Keypair();
49
+ const { privateKey: pollPrivateKey, publicKey: pollPublicKey1 } = user1Keypair;
50
+ const { publicKey: pollPublicKey2 } = new domainobjs_1.Keypair();
51
+ const initialNonce = 1n;
52
+ const initialVoteOption = 0n;
53
+ const initialVoteAmount = 9n;
54
+ const pollId = 0n;
55
+ let stateIndex = 0n;
56
+ const expectedTally = initialVoteAmount - 1n;
57
+ const expectedPerVoteOptionTally = (initialVoteAmount - 1n) ** 2n;
58
+ before(async () => {
59
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
60
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
61
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({
62
+ policy: signupPolicyFactory,
63
+ checker: signupCheckerFactory,
64
+ }, signer, true);
65
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
66
+ // deploy the smart contracts
67
+ maciAddresses = await (0, sdk_1.deployMaci)({
68
+ ...constants_1.deployArgs,
69
+ signer,
70
+ signupPolicyAddress: signupPolicyContractAddress,
71
+ });
72
+ // we set the verifying keys
73
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
74
+ await (0, sdk_1.setVerifyingKeys)({
75
+ ...(await (0, constants_1.verifyingKeysArgs)(signer)),
76
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
77
+ });
78
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
79
+ // deploy a poll contract
80
+ await (0, sdk_1.deployPoll)({
81
+ ...constants_1.deployPollArgs,
82
+ signer,
83
+ pollStartTimestamp: startDate,
84
+ pollEndTimestamp: startDate + constants_1.pollDuration,
85
+ relayers: [await signer.getAddress()],
86
+ maciAddress: maciAddresses.maciContractAddress,
87
+ policyContractAddress: pollPolicyContractAddress,
88
+ initialVoiceCreditProxyContractAddress,
89
+ });
90
+ stateIndex = BigInt(await (0, sdk_1.signup)({
91
+ maciAddress: maciAddresses.maciContractAddress,
92
+ maciPublicKey: user1Keypair.publicKey.serialize(),
93
+ sgData: constants_1.DEFAULT_SG_DATA,
94
+ signer,
95
+ }).then((result) => result.stateIndex));
96
+ await (0, sdk_1.joinPoll)({
97
+ maciAddress: maciAddresses.maciContractAddress,
98
+ privateKey: user1Keypair.privateKey.serialize(),
99
+ pollId,
100
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
101
+ useWasm,
102
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
103
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
104
+ rapidsnark: constants_1.testRapidsnarkPath,
105
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
106
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
107
+ signer,
108
+ });
109
+ await (0, sdk_1.publish)({
110
+ publicKey: pollPublicKey1.serialize(),
111
+ stateIndex,
112
+ voteOptionIndex: initialVoteOption,
113
+ nonce: initialNonce,
114
+ pollId,
115
+ newVoteWeight: initialVoteAmount,
116
+ maciAddress: maciAddresses.maciContractAddress,
117
+ salt: (0, crypto_1.generateRandomSalt)(),
118
+ privateKey: pollPrivateKey.serialize(),
119
+ signer,
120
+ });
121
+ });
122
+ it("should publish relay a message to change the poll key and cast a new vote", async () => {
123
+ const votes = [
124
+ {
125
+ pollId,
126
+ voteOptionIndex: initialVoteOption,
127
+ salt: (0, crypto_1.generateRandomSalt)(),
128
+ nonce: initialNonce,
129
+ privateKey: pollPrivateKey,
130
+ stateIndex,
131
+ voteWeight: initialVoteAmount - 2n,
132
+ coordinatorPublicKey: constants_1.coordinatorKeypair.publicKey,
133
+ maxVoteOption: BigInt(core_1.VOTE_OPTION_TREE_ARITY ** constants_1.deployPollArgs.voteOptionTreeDepth),
134
+ newPublicKey: pollPublicKey2,
135
+ },
136
+ ];
137
+ const messages = votes
138
+ .map((vote) => (0, sdk_1.generateVote)(vote))
139
+ .map(({ message, ephemeralKeypair }) => ({
140
+ maciAddress: maciAddresses.maciContractAddress,
141
+ poll: Number(pollId),
142
+ data: message.data.map(String),
143
+ publicKey: ephemeralKeypair.publicKey.asArray().map(String),
144
+ hash: message.hash(ephemeralKeypair.publicKey).toString(),
145
+ }));
146
+ await (0, utils_1.relayTestMessages)({
147
+ messages,
148
+ signer,
149
+ pollId: Number(pollId),
150
+ maciAddress: maciAddresses.maciContractAddress,
151
+ });
152
+ });
153
+ it("should publish a message to change the poll key and cast a new vote", async () => {
154
+ await (0, sdk_1.publish)({
155
+ publicKey: pollPublicKey2.serialize(),
156
+ stateIndex,
157
+ voteOptionIndex: initialVoteOption,
158
+ nonce: initialNonce,
159
+ pollId,
160
+ newVoteWeight: initialVoteAmount - 1n,
161
+ maciAddress: maciAddresses.maciContractAddress,
162
+ salt: (0, crypto_1.generateRandomSalt)(),
163
+ privateKey: pollPrivateKey.serialize(),
164
+ signer,
165
+ });
166
+ });
167
+ it("should generate zk-SNARK proofs and verify them", async () => {
168
+ const ipfsMessageBackupFiles = await (0, utils_1.getBackupFilenames)();
169
+ await (0, sdk_1.timeTravel)({ ...constants_1.timeTravelArgs, signer });
170
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
171
+ await (0, sdk_1.generateProofs)({
172
+ ...generateProofsArgs,
173
+ maciAddress: maciAddresses.maciContractAddress,
174
+ signer,
175
+ ipfsMessageBackupFiles,
176
+ });
177
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
178
+ await (0, sdk_1.verify)({ ...(await (0, constants_1.verifyArgs)(signer)) });
179
+ });
180
+ it("should confirm the tally is correct", async () => {
181
+ const tallyData = JSON.parse(await fs_1.default.promises.readFile(constants_1.testTallyFilePath).then((res) => res.toString()));
182
+ (0, chai_1.expect)(tallyData.results.tally[0]).to.equal(expectedTally.toString());
183
+ (0, chai_1.expect)(tallyData.perVoteOptionSpentVoiceCredits?.tally[0]).to.equal(expectedPerVoteOptionTally.toString());
184
+ });
185
+ });
186
+ describe("keyChange and new vote (new vote has greater nonce and different vote option)", () => {
187
+ after(async () => {
188
+ await (0, utils_1.clean)();
189
+ });
190
+ const user1Keypair = new domainobjs_1.Keypair();
191
+ const { publicKey: pollPublicKey2 } = new domainobjs_1.Keypair();
192
+ const initialNonce = 1n;
193
+ const initialVoteOption = 0n;
194
+ const initialVoteAmount = 9n;
195
+ const pollId = 0n;
196
+ let stateIndex = 0n;
197
+ const expectedTally = initialVoteAmount;
198
+ const expectedPerVoteOptionTally = initialVoteAmount ** 2n;
199
+ before(async () => {
200
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
201
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
202
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({
203
+ policy: signupPolicyFactory,
204
+ checker: signupCheckerFactory,
205
+ }, signer, true);
206
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
207
+ // deploy the smart contracts
208
+ maciAddresses = await (0, sdk_1.deployMaci)({
209
+ ...constants_1.deployArgs,
210
+ signer,
211
+ signupPolicyAddress: signupPolicyContractAddress,
212
+ });
213
+ // we set the verifying keys
214
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
215
+ await (0, sdk_1.setVerifyingKeys)({
216
+ ...(await (0, constants_1.verifyingKeysArgs)(signer)),
217
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
218
+ });
219
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
220
+ // deploy a poll contract
221
+ await (0, sdk_1.deployPoll)({
222
+ ...constants_1.deployPollArgs,
223
+ signer,
224
+ pollStartTimestamp: startDate,
225
+ pollEndTimestamp: startDate + constants_1.pollDuration,
226
+ relayers: [await signer.getAddress()],
227
+ maciAddress: maciAddresses.maciContractAddress,
228
+ policyContractAddress: pollPolicyContractAddress,
229
+ initialVoiceCreditProxyContractAddress,
230
+ });
231
+ stateIndex = BigInt(await (0, sdk_1.signup)({
232
+ maciAddress: maciAddresses.maciContractAddress,
233
+ maciPublicKey: user1Keypair.publicKey.serialize(),
234
+ sgData: constants_1.DEFAULT_SG_DATA,
235
+ signer,
236
+ }).then((result) => result.stateIndex));
237
+ await (0, sdk_1.joinPoll)({
238
+ maciAddress: maciAddresses.maciContractAddress,
239
+ privateKey: user1Keypair.privateKey.serialize(),
240
+ pollId,
241
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
242
+ useWasm,
243
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
244
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
245
+ rapidsnark: constants_1.testRapidsnarkPath,
246
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
247
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
248
+ signer,
249
+ });
250
+ const votes = [
251
+ {
252
+ pollId,
253
+ voteOptionIndex: initialVoteOption,
254
+ salt: (0, crypto_1.generateRandomSalt)(),
255
+ nonce: initialNonce,
256
+ privateKey: user1Keypair.privateKey,
257
+ stateIndex,
258
+ voteWeight: initialVoteAmount,
259
+ coordinatorPublicKey: constants_1.coordinatorKeypair.publicKey,
260
+ maxVoteOption: BigInt(core_1.VOTE_OPTION_TREE_ARITY ** constants_1.deployPollArgs.voteOptionTreeDepth),
261
+ newPublicKey: user1Keypair.publicKey,
262
+ },
263
+ ];
264
+ const messages = votes
265
+ .map((vote) => (0, sdk_1.generateVote)(vote))
266
+ .map(({ message, ephemeralKeypair }) => ({
267
+ maciAddress: maciAddresses.maciContractAddress,
268
+ poll: Number(pollId),
269
+ data: message.data.map(String),
270
+ publicKey: ephemeralKeypair.publicKey.asArray().map(String),
271
+ hash: message.hash(ephemeralKeypair.publicKey).toString(),
272
+ }));
273
+ await (0, utils_1.relayTestMessages)({
274
+ messages,
275
+ signer,
276
+ pollId: Number(pollId),
277
+ maciAddress: maciAddresses.maciContractAddress,
278
+ });
279
+ });
280
+ it("should publish a message to change the key and cast a new vote", async () => {
281
+ await (0, sdk_1.publish)({
282
+ publicKey: pollPublicKey2.serialize(),
283
+ stateIndex,
284
+ voteOptionIndex: initialVoteOption + 1n,
285
+ nonce: initialNonce + 1n,
286
+ pollId,
287
+ newVoteWeight: initialVoteAmount - 1n,
288
+ maciAddress: maciAddresses.maciContractAddress,
289
+ salt: (0, crypto_1.generateRandomSalt)(),
290
+ privateKey: user1Keypair.privateKey.serialize(),
291
+ signer,
292
+ });
293
+ });
294
+ it("should generate zk-SNARK proofs and verify them", async () => {
295
+ const ipfsMessageBackupFiles = await (0, utils_1.getBackupFilenames)();
296
+ await (0, sdk_1.timeTravel)({ ...constants_1.timeTravelArgs, signer });
297
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
298
+ await (0, sdk_1.generateProofs)({
299
+ ...generateProofsArgs,
300
+ maciAddress: maciAddresses.maciContractAddress,
301
+ signer,
302
+ ipfsMessageBackupFiles,
303
+ });
304
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
305
+ await (0, sdk_1.verify)({ ...(await (0, constants_1.verifyArgs)(signer)) });
306
+ });
307
+ it("should confirm the tally is correct", async () => {
308
+ const tallyData = JSON.parse(await fs_1.default.promises.readFile(constants_1.testTallyFilePath).then((res) => res.toString()));
309
+ (0, chai_1.expect)(tallyData.results.tally[0]).to.equal(expectedTally.toString());
310
+ (0, chai_1.expect)(tallyData.perVoteOptionSpentVoiceCredits?.tally[0]).to.equal(expectedPerVoteOptionTally.toString());
311
+ });
312
+ });
313
+ describe("keyChange and new vote (new vote has same nonce and different vote option)", () => {
314
+ after(async () => {
315
+ await (0, utils_1.clean)();
316
+ });
317
+ const user1Keypair = new domainobjs_1.Keypair();
318
+ const secondKeypair = new domainobjs_1.Keypair();
319
+ const initialNonce = 1n;
320
+ const initialVoteOption = 0n;
321
+ const initialVoteAmount = 9n;
322
+ const pollId = 0n;
323
+ let stateIndex = 0n;
324
+ const expectedTally = initialVoteAmount - 3n;
325
+ const expectedPerVoteOptionTally = (initialVoteAmount - 3n) ** 2n;
326
+ before(async () => {
327
+ const [signupPolicy, , signupPolicyFactory, signupCheckerFactory] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({}, signer, true);
328
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
329
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({
330
+ policy: signupPolicyFactory,
331
+ checker: signupCheckerFactory,
332
+ }, signer, true);
333
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
334
+ // deploy the smart contracts
335
+ maciAddresses = await (0, sdk_1.deployMaci)({
336
+ ...constants_1.deployArgs,
337
+ signer,
338
+ signupPolicyAddress: signupPolicyContractAddress,
339
+ });
340
+ // we set the verifying keys
341
+ const { verifyingKeysRegistryContractAddress } = maciAddresses;
342
+ await (0, sdk_1.setVerifyingKeys)({
343
+ ...(await (0, constants_1.verifyingKeysArgs)(signer)),
344
+ verifyingKeysRegistryAddress: verifyingKeysRegistryContractAddress,
345
+ });
346
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
347
+ // deploy a poll contract
348
+ await (0, sdk_1.deployPoll)({
349
+ ...constants_1.deployPollArgs,
350
+ signer,
351
+ pollStartTimestamp: startDate,
352
+ pollEndTimestamp: startDate + constants_1.pollDuration,
353
+ relayers: [await signer.getAddress()],
354
+ maciAddress: maciAddresses.maciContractAddress,
355
+ policyContractAddress: pollPolicyContractAddress,
356
+ initialVoiceCreditProxyContractAddress,
357
+ });
358
+ stateIndex = BigInt(await (0, sdk_1.signup)({
359
+ maciAddress: maciAddresses.maciContractAddress,
360
+ maciPublicKey: user1Keypair.publicKey.serialize(),
361
+ sgData: constants_1.DEFAULT_SG_DATA,
362
+ signer,
363
+ }).then((result) => result.stateIndex));
364
+ await (0, sdk_1.joinPoll)({
365
+ maciAddress: maciAddresses.maciContractAddress,
366
+ privateKey: user1Keypair.privateKey.serialize(),
367
+ pollId,
368
+ pollJoiningZkey: constants_1.testPollJoiningZkeyPath,
369
+ useWasm,
370
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
371
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
372
+ rapidsnark: constants_1.testRapidsnarkPath,
373
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
374
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
375
+ signer,
376
+ });
377
+ await (0, sdk_1.publish)({
378
+ publicKey: user1Keypair.publicKey.serialize(),
379
+ stateIndex,
380
+ voteOptionIndex: initialVoteOption,
381
+ nonce: initialNonce,
382
+ pollId,
383
+ newVoteWeight: initialVoteAmount,
384
+ maciAddress: maciAddresses.maciContractAddress,
385
+ salt: (0, crypto_1.generateRandomSalt)(),
386
+ privateKey: user1Keypair.privateKey.serialize(),
387
+ signer,
388
+ });
389
+ });
390
+ it("should relay a message to change the poll key, and a new vote", async () => {
391
+ const votes = [
392
+ {
393
+ pollId,
394
+ voteOptionIndex: initialVoteOption + 2n,
395
+ salt: (0, crypto_1.generateRandomSalt)(),
396
+ nonce: initialNonce,
397
+ privateKey: user1Keypair.privateKey,
398
+ stateIndex,
399
+ voteWeight: initialVoteAmount - 2n,
400
+ coordinatorPublicKey: constants_1.coordinatorKeypair.publicKey,
401
+ maxVoteOption: BigInt(core_1.VOTE_OPTION_TREE_ARITY ** constants_1.deployPollArgs.voteOptionTreeDepth),
402
+ newPublicKey: secondKeypair.publicKey,
403
+ },
404
+ ];
405
+ const messages = votes
406
+ .map((vote) => (0, sdk_1.generateVote)(vote))
407
+ .map(({ message, ephemeralKeypair }) => ({
408
+ maciAddress: maciAddresses.maciContractAddress,
409
+ poll: Number(pollId),
410
+ data: message.data.map(String),
411
+ publicKey: ephemeralKeypair.publicKey.asArray().map(String),
412
+ hash: message.hash(ephemeralKeypair.publicKey).toString(),
413
+ }));
414
+ await (0, utils_1.relayTestMessages)({
415
+ messages,
416
+ signer,
417
+ pollId: Number(pollId),
418
+ maciAddress: maciAddresses.maciContractAddress,
419
+ });
420
+ });
421
+ it("should publish a message to change the poll key, and a new vote", async () => {
422
+ await (0, sdk_1.publish)({
423
+ publicKey: secondKeypair.publicKey.serialize(),
424
+ stateIndex,
425
+ voteOptionIndex: initialVoteOption + 2n,
426
+ nonce: initialNonce,
427
+ pollId,
428
+ newVoteWeight: initialVoteAmount - 3n,
429
+ maciAddress: maciAddresses.maciContractAddress,
430
+ salt: (0, crypto_1.generateRandomSalt)(),
431
+ privateKey: user1Keypair.privateKey.serialize(),
432
+ signer,
433
+ });
434
+ });
435
+ it("should generate zk-SNARK proofs and verify them", async () => {
436
+ const ipfsMessageBackupFiles = await (0, utils_1.getBackupFilenames)();
437
+ await (0, sdk_1.timeTravel)({ ...constants_1.timeTravelArgs, signer });
438
+ await (0, sdk_1.mergeSignups)({ ...constants_1.mergeSignupsArgs, maciAddress: maciAddresses.maciContractAddress, signer });
439
+ await (0, sdk_1.generateProofs)({
440
+ ...generateProofsArgs,
441
+ maciAddress: maciAddresses.maciContractAddress,
442
+ signer,
443
+ ipfsMessageBackupFiles,
444
+ });
445
+ await (0, sdk_1.proveOnChain)({ ...constants_1.proveOnChainArgs, maciAddress: maciAddresses.maciContractAddress, signer });
446
+ await (0, sdk_1.verify)({ ...(await (0, constants_1.verifyArgs)(signer)) });
447
+ });
448
+ it("should confirm the tally is correct", async () => {
449
+ const tallyData = JSON.parse(await fs_1.default.promises.readFile(constants_1.testTallyFilePath).then((res) => res.toString()));
450
+ (0, chai_1.expect)(tallyData.results.tally[2]).to.equal(expectedTally.toString());
451
+ (0, chai_1.expect)(tallyData.perVoteOptionSpentVoiceCredits?.tally[2]).to.equal(expectedPerVoteOptionTally.toString());
452
+ });
453
+ });
454
+ });
455
+ //# sourceMappingURL=keyChange.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyChange.test.js","sourceRoot":"","sources":["../../../ts/__tests__/keyChange.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=maciKeys.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maciKeys.test.d.ts","sourceRoot":"","sources":["../../../ts/__tests__/maciKeys.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const crypto_1 = require("@maci-protocol/crypto");
4
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
5
+ const sdk_1 = require("@maci-protocol/sdk");
6
+ const chai_1 = require("chai");
7
+ const constants_1 = require("../constants");
8
+ const testingClass_1 = require("../testingClass");
9
+ describe("integration tests private/public/keypair", () => {
10
+ describe("crypto/domainobjs", () => {
11
+ it("should serialize and deserialize a private key correctly", () => {
12
+ const privateKeyCrypto = (0, crypto_1.generatePrivateKey)();
13
+ const privateKeyDomainobjs = new domainobjs_1.PrivateKey(privateKeyCrypto);
14
+ const privateKeyDomainobjsSerialized = privateKeyDomainobjs.serialize();
15
+ const privateKeyDomainobjsDeserialized = domainobjs_1.PrivateKey.deserialize(privateKeyDomainobjsSerialized);
16
+ (0, chai_1.expect)(privateKeyDomainobjsDeserialized.raw.toString()).to.eq(privateKeyCrypto.toString());
17
+ });
18
+ it("should serialize and deserialize a public key correctly", () => {
19
+ const privateKeyCrypto = (0, crypto_1.generatePrivateKey)();
20
+ const publicKeyCrypto = (0, crypto_1.generatePublicKey)(privateKeyCrypto);
21
+ const publicKeyDomainobjs = new domainobjs_1.PublicKey(publicKeyCrypto);
22
+ const publicKeyDomainobjsSerialized = publicKeyDomainobjs.serialize();
23
+ const publicKeyDomainobjsDeserialized = domainobjs_1.PublicKey.deserialize(publicKeyDomainobjsSerialized);
24
+ (0, chai_1.expect)(publicKeyDomainobjsDeserialized.raw[0].toString()).to.eq(publicKeyCrypto[0].toString());
25
+ (0, chai_1.expect)(publicKeyDomainobjsDeserialized.raw[1].toString()).to.eq(publicKeyCrypto[1].toString());
26
+ });
27
+ it("should serialize and deserialize a private key correct after serializing as contract params", () => {
28
+ const privateKeyCrypto = (0, crypto_1.generatePrivateKey)();
29
+ const privateKeyDomainobjs = new domainobjs_1.PrivateKey(privateKeyCrypto);
30
+ const keypairDomainobjs = new domainobjs_1.Keypair(privateKeyDomainobjs);
31
+ const publicKeyDomainobjsAsContractParam = keypairDomainobjs.publicKey.asContractParam();
32
+ const privateKeyDomainobjsSerialized = privateKeyDomainobjs.serialize();
33
+ const privateKeyDomainobjsDeserialized = domainobjs_1.PrivateKey.deserialize(privateKeyDomainobjsSerialized);
34
+ const keypairDomainobjsDeserialized = new domainobjs_1.Keypair(privateKeyDomainobjsDeserialized);
35
+ (0, chai_1.expect)(keypairDomainobjsDeserialized.publicKey.raw[0].toString()).to.eq(publicKeyDomainobjsAsContractParam.x.toString());
36
+ (0, chai_1.expect)(keypairDomainobjsDeserialized.publicKey.raw[1].toString()).to.eq(publicKeyDomainobjsAsContractParam.y.toString());
37
+ });
38
+ });
39
+ describe("crypto/domainobjs/contracts", () => {
40
+ let pollContract;
41
+ let testingClass;
42
+ let signer;
43
+ const coordinatorKeypair = new domainobjs_1.Keypair();
44
+ before(async () => {
45
+ signer = await (0, sdk_1.getDefaultSigner)();
46
+ testingClass = await testingClass_1.TestingClass.getInstance({
47
+ pollJoiningZkeyPath: constants_1.testPollJoiningZkeyPath,
48
+ pollJoinedZkeyPath: constants_1.testPollJoinedZkeyPath,
49
+ messageProcessorZkeyPath: constants_1.testProcessMessageNonQvZkeyPath,
50
+ voteTallyZkeyPath: constants_1.testVoteTallyNonQvZkeyPath,
51
+ pollJoiningWasm: constants_1.testPollJoiningWasmPath,
52
+ pollWitnessGenerator: constants_1.testPollJoiningWitnessPath,
53
+ rapidsnark: constants_1.testRapidsnarkPath,
54
+ });
55
+ const pollContractAddress = testingClass.contractsData.polls[0];
56
+ pollContract = sdk_1.Poll__factory.connect(pollContractAddress, signer);
57
+ });
58
+ it("should have the correct coordinator public key set on chain", async () => {
59
+ const onChainKey = await pollContract.coordinatorPublicKey();
60
+ (0, chai_1.expect)(onChainKey.x.toString()).to.eq(coordinatorKeypair.publicKey.raw[0].toString());
61
+ (0, chai_1.expect)(onChainKey.y.toString()).to.eq(coordinatorKeypair.publicKey.raw[1].toString());
62
+ });
63
+ it("should serialize and deserialize the coordinator private key to match the on chain key", async () => {
64
+ const onChainKey = await pollContract.coordinatorPublicKey();
65
+ const coordinatorPrivateKeySerialized = coordinatorKeypair.privateKey.serialize();
66
+ const coordinatorPrivateKeyDeserialized = domainobjs_1.PrivateKey.deserialize(coordinatorPrivateKeySerialized);
67
+ const coordinatorKeypairDeserialized = new domainobjs_1.Keypair(coordinatorPrivateKeyDeserialized);
68
+ (0, chai_1.expect)(coordinatorKeypairDeserialized.publicKey.raw[0].toString()).to.eq(onChainKey.x.toString());
69
+ (0, chai_1.expect)(coordinatorKeypairDeserialized.publicKey.raw[1].toString()).to.eq(onChainKey.y.toString());
70
+ });
71
+ it("should have a matching coordinator public key hash", async () => {
72
+ const onChainKeyHash = await pollContract.coordinatorPublicKeyHash();
73
+ const coordinatorPublicKeyHash = coordinatorKeypair.publicKey.hash();
74
+ (0, chai_1.expect)(onChainKeyHash.toString()).to.eq(coordinatorPublicKeyHash.toString());
75
+ });
76
+ });
77
+ });
78
+ //# sourceMappingURL=maciKeys.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maciKeys.test.js","sourceRoot":"","sources":["../../../ts/__tests__/maciKeys.test.ts"],"names":[],"mappings":";;AAAA,kDAA8E;AAC9E,0DAA2E;AAC3E,4CAA+F;AAC/F,+BAA8B;AAI9B,4CAQsB;AACtB,kDAA+C;AAE/C,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,gBAAgB,GAAG,IAAA,2BAAkB,GAAE,CAAC;YAE9C,MAAM,oBAAoB,GAAG,IAAI,uBAAU,CAAC,gBAAgB,CAAC,CAAC;YAC9D,MAAM,8BAA8B,GAAG,oBAAoB,CAAC,SAAS,EAAE,CAAC;YAExE,MAAM,gCAAgC,GAAG,uBAAU,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;YAEhG,IAAA,aAAM,EAAC,gCAAgC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,gBAAgB,GAAG,IAAA,2BAAkB,GAAE,CAAC;YAE9C,MAAM,eAAe,GAAG,IAAA,0BAAiB,EAAC,gBAAgB,CAAC,CAAC;YAE5D,MAAM,mBAAmB,GAAG,IAAI,sBAAS,CAAC,eAAe,CAAC,CAAC;YAE3D,MAAM,6BAA6B,GAAG,mBAAmB,CAAC,SAAS,EAAE,CAAC;YACtE,MAAM,+BAA+B,GAAG,sBAAS,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;YAE7F,IAAA,aAAM,EAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/F,IAAA,aAAM,EAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6FAA6F,EAAE,GAAG,EAAE;YACrG,MAAM,gBAAgB,GAAG,IAAA,2BAAkB,GAAE,CAAC;YAE9C,MAAM,oBAAoB,GAAG,IAAI,uBAAU,CAAC,gBAAgB,CAAC,CAAC;YAC9D,MAAM,iBAAiB,GAAG,IAAI,oBAAO,CAAC,oBAAoB,CAAC,CAAC;YAE5D,MAAM,kCAAkC,GAAG,iBAAiB,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YAEzF,MAAM,8BAA8B,GAAG,oBAAoB,CAAC,SAAS,EAAE,CAAC;YAExE,MAAM,gCAAgC,GAAG,uBAAU,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;YAChG,MAAM,6BAA6B,GAAG,IAAI,oBAAO,CAAC,gCAAgC,CAAC,CAAC;YAEpF,IAAA,aAAM,EAAC,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CACrE,kCAAkC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAChD,CAAC;YACF,IAAA,aAAM,EAAC,6BAA6B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CACrE,kCAAkC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAChD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,IAAI,YAAkB,CAAC;QAEvB,IAAI,YAA0B,CAAC;QAE/B,IAAI,MAAc,CAAC;QACnB,MAAM,kBAAkB,GAAG,IAAI,oBAAO,EAAE,CAAC;QAEzC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,GAAG,MAAM,IAAA,sBAAgB,GAAE,CAAC;YAElC,YAAY,GAAG,MAAM,2BAAY,CAAC,WAAW,CAAC;gBAC5C,mBAAmB,EAAE,mCAAuB;gBAC5C,kBAAkB,EAAE,kCAAsB;gBAC1C,wBAAwB,EAAE,2CAA+B;gBACzD,iBAAiB,EAAE,sCAA0B;gBAC7C,eAAe,EAAE,mCAAuB;gBACxC,oBAAoB,EAAE,sCAA0B;gBAChD,UAAU,EAAE,8BAAkB;aAC/B,CAAC,CAAC;YAEH,MAAM,mBAAmB,GAAG,YAAY,CAAC,aAAa,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC;YACjE,YAAY,GAAG,mBAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;YAC7D,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACtF,IAAA,aAAM,EAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;YACtG,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,oBAAoB,EAAE,CAAC;YAE7D,MAAM,+BAA+B,GAAG,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAClF,MAAM,iCAAiC,GAAG,uBAAU,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;YAClG,MAAM,8BAA8B,GAAG,IAAI,oBAAO,CAAC,iCAAiC,CAAC,CAAC;YAEtF,IAAA,aAAM,EAAC,8BAA8B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClG,IAAA,aAAM,EAAC,8BAA8B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,wBAAwB,EAAE,CAAC;YACrE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAErE,IAAA,aAAM,EAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stress.full.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stress.full.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/stress/stress.full.test.ts"],"names":[],"mappings":""}