@maci-protocol/cli 0.0.0-ci.cac737b → 0.0.0-ci.cd626c3

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.
package/build/ts/index.js CHANGED
@@ -45,6 +45,7 @@ const fs_1 = __importDefault(require("fs"));
45
45
  const path_1 = __importDefault(require("path"));
46
46
  require("./cliInit");
47
47
  const utils_1 = require("./utils");
48
+ const constants_1 = require("./utils/constants");
48
49
  const defaults_1 = require("./utils/defaults");
49
50
  // set the description version and name of the cli tool
50
51
  const { description, version, name } = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(__dirname, "..", "package.json"), "utf8"));
@@ -66,25 +67,25 @@ program
66
67
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
67
68
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
68
69
  .requiredOption("-s, --stateTreeDepth <stateTreeDepth>", "the state tree depth", parseInt)
69
- .action(async (cmdOptions) => {
70
+ .action(async (args) => {
70
71
  try {
71
72
  const signer = await getSigner();
72
- (0, utils_1.banner)(cmdOptions.quiet);
73
+ (0, utils_1.banner)(args.quiet);
73
74
  const network = await signer.provider?.getNetwork();
74
75
  const [poseidonT3, poseidonT4, poseidonT5, poseidonT6] = (0, utils_1.readContractAddresses)({
75
76
  contractNames: [sdk_1.EContracts.PoseidonT3, sdk_1.EContracts.PoseidonT4, sdk_1.EContracts.PoseidonT5, sdk_1.EContracts.PoseidonT6],
76
77
  network: network?.name,
77
78
  });
78
79
  let [signupPolicyContractAddress] = (0, utils_1.readContractAddresses)({
79
- contractNames: [cmdOptions.signupPolicyContractName.toString()],
80
+ contractNames: [args.signupPolicyContractName.toString()],
80
81
  network: network?.name,
81
82
  });
82
83
  if (!signupPolicyContractAddress) {
83
- const checkerFactory = cmdOptions.freeForAllCheckerFactoryAddress
84
- ? sdk_1.FreeForAllCheckerFactory__factory.connect(cmdOptions.freeForAllCheckerFactoryAddress, signer)
84
+ const checkerFactory = args.freeForAllCheckerFactoryAddress
85
+ ? sdk_1.FreeForAllCheckerFactory__factory.connect(args.freeForAllCheckerFactoryAddress, signer)
85
86
  : undefined;
86
- const policyFactory = cmdOptions.freeForAllPolicyFactoryAddress
87
- ? sdk_1.FreeForAllPolicyFactory__factory.connect(cmdOptions.freeForAllPolicyFactoryAddress, signer)
87
+ const policyFactory = args.freeForAllPolicyFactoryAddress
88
+ ? sdk_1.FreeForAllPolicyFactory__factory.connect(args.freeForAllPolicyFactoryAddress, signer)
88
89
  : undefined;
89
90
  const [contract] = await (0, sdk_1.deployFreeForAllSignUpPolicy)({ checker: checkerFactory, policy: policyFactory }, signer, true);
90
91
  signupPolicyContractAddress = await contract.getAddress();
@@ -102,13 +103,13 @@ program
102
103
  poseidonT6,
103
104
  },
104
105
  signer,
105
- stateTreeDepth: cmdOptions.stateTreeDepth,
106
+ stateTreeDepth: args.stateTreeDepth,
106
107
  });
107
- const emptyBallotRoots = (0, sdk_1.genEmptyBallotRoots)(cmdOptions.stateTreeDepth);
108
+ const emptyBallotRoots = (0, sdk_1.generateEmptyBallotRoots)(args.stateTreeDepth);
108
109
  // save to the JSON File
109
110
  await (0, utils_1.storeContractAddresses)({
110
111
  data: {
111
- [cmdOptions.signupPolicyContractName]: { address: signupPolicyContractAddress, args: [] },
112
+ [args.signupPolicyContractName]: { address: signupPolicyContractAddress, args: [] },
112
113
  [sdk_1.EContracts.Verifier]: { address: verifierContractAddress, args: [] },
113
114
  [sdk_1.EContracts.MACI]: {
114
115
  address: maciContractAddress,
@@ -117,7 +118,7 @@ program
117
118
  messageProcessorFactoryContractAddress,
118
119
  tallyFactoryContractAddress,
119
120
  signupPolicyContractAddress,
120
- cmdOptions.stateTreeDepth,
121
+ args.stateTreeDepth,
121
122
  emptyBallotRoots.map((root) => root.toString()),
122
123
  ],
123
124
  },
@@ -131,7 +132,7 @@ program
131
132
  },
132
133
  signer,
133
134
  });
134
- (0, sdk_1.logGreen)({ quiet: cmdOptions.quiet, text: (0, sdk_1.success)(`MACI deployed at: ${maciContractAddress}`) });
135
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`MACI deployed at: ${maciContractAddress}`) });
135
136
  }
136
137
  catch (error) {
137
138
  program.error(error.message, { exitCode: 1 });
@@ -140,75 +141,81 @@ program
140
141
  program
141
142
  .command("checkVerifyingKeys")
142
143
  .description("check that the verifying keys in the contract match the local ones")
143
- .option("-u, --use-quadratic-voting <useQuadraticVoting>", "whether to use quadratic voting", (value) => value === "true", true)
144
+ .option("-m, --mode <mode>", "Voting mode (qv, non-qv, full)", (value) => constants_1.MODE_NAME_TO_ENUM[value], sdk_1.EMode.QV)
144
145
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
145
146
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
146
- .option("-k, --vk-contract <vkContract>", "the VkRegistry contract address")
147
+ .option("-k, --vk-contract <vkContract>", "the VerifyingKeysRegistry contract address")
147
148
  .requiredOption("-s, --state-tree-depth <stateTreeDepth>", "the state tree depth", parseInt)
148
- .requiredOption("-i, --int-state-tree-depth <intStateTreeDepth>", "the intermediate state tree depth", parseInt)
149
+ .requiredOption("-i, --tally-processing-state-tree-depth <tallyProcessingStateTreeDepth>", "the intermediate state tree depth", parseInt)
149
150
  .requiredOption("-v, --vote-option-tree-depth <voteOptionTreeDepth>", "the vote option tree depth", parseInt)
150
- .requiredOption("-b, --msg-batch-size <messageBatchSize>", "the message batch size", parseInt)
151
- .requiredOption("-p, --process-messages-zkey <processMessagesZkeyPath>", "the process messages zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
152
- .requiredOption("-t, --tally-votes-zkey <tallyVotesZkeyPath>", "the tally votes zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
151
+ .requiredOption("-b, --message-batch-size <messageBatchSize>", "the message batch size", parseInt)
152
+ .requiredOption("-p, --message-processor-zkey <messageProcessorZkeyPath>", "the message processor zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
153
+ .requiredOption("-t, --vote-tally-zkey <voteTallyZkeyPath>", "the vote tally zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
153
154
  .requiredOption("--poll-joining-zkey <pollJoiningZkey>", "the poll joining zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
154
155
  .requiredOption("--poll-joined-zkey <pollJoinedZkey>", "the poll joined zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
155
- .action(async (cmdOptions) => {
156
+ .action(async (args) => {
156
157
  try {
157
158
  const signer = await getSigner();
158
159
  const network = await signer.provider?.getNetwork();
159
- const [vkContractAddress] = (0, utils_1.readContractAddresses)({
160
- contractNames: [sdk_1.EContracts.VkRegistry],
160
+ const [contractAddress] = (0, utils_1.readContractAddresses)({
161
+ contractNames: [sdk_1.EContracts.VerifyingKeysRegistry],
161
162
  network: network?.name,
162
- defaultAddresses: [cmdOptions.vkContract],
163
+ defaultAddresses: [args.vkContract],
163
164
  });
164
- (0, sdk_1.logYellow)({ quiet: cmdOptions.quiet, text: (0, sdk_1.info)("Retrieving verifying keys from the contract...") });
165
+ (0, sdk_1.logYellow)({ quiet: args.quiet, text: (0, sdk_1.info)("Retrieving verifying keys from the contract...") });
165
166
  await (0, sdk_1.checkVerifyingKeys)({
166
- stateTreeDepth: cmdOptions.stateTreeDepth,
167
- intStateTreeDepth: cmdOptions.intStateTreeDepth,
168
- voteOptionTreeDepth: cmdOptions.voteOptionTreeDepth,
169
- messageBatchSize: cmdOptions.msgBatchSize,
170
- processMessagesZkeyPath: cmdOptions.processMessagesZkey,
171
- tallyVotesZkeyPath: cmdOptions.tallyVotesZkey,
172
- pollJoiningZkeyPath: cmdOptions.pollJoiningZkey,
173
- pollJoinedZkeyPath: cmdOptions.pollJoinedZkey,
174
- vkRegistry: vkContractAddress,
175
- useQuadraticVoting: cmdOptions.useQuadraticVoting,
167
+ stateTreeDepth: args.stateTreeDepth,
168
+ tallyProcessingStateTreeDepth: args.tallyProcessingStateTreeDepth,
169
+ voteOptionTreeDepth: args.voteOptionTreeDepth,
170
+ messageBatchSize: args.messageBatchSize,
171
+ messageProcessorZkeyPath: args.messageProcessorZkey,
172
+ voteTallyZkeyPath: args.voteTallyZkey,
173
+ pollJoiningZkeyPath: args.pollJoiningZkey,
174
+ pollJoinedZkeyPath: args.pollJoinedZkey,
175
+ verifyingKeysRegistry: contractAddress,
176
+ mode: args.mode,
176
177
  signer,
177
178
  });
178
- (0, sdk_1.logGreen)({ quiet: cmdOptions.quiet, text: (0, sdk_1.success)("Verifying keys match") });
179
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)("Verifying keys match") });
179
180
  }
180
181
  catch (error) {
181
182
  program.error(error.message, { exitCode: 1 });
182
183
  }
183
184
  });
184
185
  program
185
- .command("genMaciPubKey")
186
+ .command("generateMaciPubKey")
186
187
  .description("generate a new MACI public key")
187
- .requiredOption("-k, --privkey <privkey>", "the private key")
188
+ .requiredOption("-k, --private-key <privateKey>", "the private key")
188
189
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
189
190
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
190
- .action((cmdObj) => {
191
- const publicKey = (0, sdk_1.generateMaciPublicKey)(cmdObj.privkey);
192
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Public key: ${publicKey}`) });
191
+ .action((args) => {
192
+ const publicKey = (0, sdk_1.generateMaciPublicKey)(args.privateKey);
193
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Public key: ${publicKey}`) });
193
194
  });
194
195
  program
195
- .command("genMaciKeyPair")
196
+ .command("generateMaciKeyPair")
196
197
  .description("generate a new MACI key pair")
197
198
  .option("-s, --seed <seed>", "seed value for keypair", (value) => (value ? BigInt(value) : undefined), undefined)
198
199
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
199
- .action((cmdObj) => {
200
- const { publicKey, privateKey } = (0, sdk_1.generateKeypair)({ seed: cmdObj.seed });
201
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Public key: ${publicKey}`) });
202
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Private key: ${privateKey}`) });
200
+ .action((args) => {
201
+ const { publicKey, privateKey, publicKeyAsContractParam } = (0, sdk_1.generateKeypair)({ seed: args.seed });
202
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Public key: ${publicKey}`) });
203
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Private key: ${privateKey}`) });
204
+ (0, sdk_1.logGreen)({
205
+ quiet: args.quiet,
206
+ text: (0, sdk_1.success)(`Public key as contract param:
207
+ X: ${publicKeyAsContractParam.x}
208
+ Y: ${publicKeyAsContractParam.y}`),
209
+ });
203
210
  });
204
211
  program
205
- .command("deployVkRegistry")
212
+ .command("deployVerifyingKeysRegistry")
206
213
  .description("deploy a new verification key registry contract")
207
214
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
208
215
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
209
- .action(async (cmdObj) => {
216
+ .action(async (args) => {
210
217
  try {
211
- (0, utils_1.banner)(cmdObj.quiet);
218
+ (0, utils_1.banner)(args.quiet);
212
219
  const signer = await getSigner();
213
220
  // assume that the vkRegistry contract is the first one to be deployed
214
221
  const isContractAddressesStoreExists = fs_1.default.existsSync(utils_1.contractAddressesStorePath);
@@ -217,12 +224,15 @@ program
217
224
  (0, utils_1.resetContractAddresses)(network?.name);
218
225
  }
219
226
  // deploy and store the address
220
- const vkRegistryAddress = await (0, sdk_1.deployVkRegistryContract)({ signer });
227
+ const verifyingKeysRegistryAddress = await (0, sdk_1.deployVerifyingKeysRegistryContract)({ signer });
221
228
  await (0, utils_1.storeContractAddresses)({
222
- data: { [sdk_1.EContracts.VkRegistry]: { address: vkRegistryAddress, args: [] } },
229
+ data: { [sdk_1.EContracts.VerifyingKeysRegistry]: { address: verifyingKeysRegistryAddress, args: [] } },
223
230
  signer,
224
231
  });
225
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`VkRegistry deployed at: ${vkRegistryAddress}`) });
232
+ (0, sdk_1.logGreen)({
233
+ quiet: args.quiet,
234
+ text: (0, sdk_1.success)(`VerifyingKeysRegistry deployed at: ${verifyingKeysRegistryAddress}`),
235
+ });
226
236
  }
227
237
  catch (error) {
228
238
  program.error(error.message, { exitCode: 1 });
@@ -249,36 +259,38 @@ program
249
259
  program
250
260
  .command("deployPoll")
251
261
  .description("deploy a new poll")
252
- .option("-k, --vkRegistryAddress <vkRegistryAddress>", "the vk registry contract address")
253
- .requiredOption("-s, --start <pollStartDate>", "the poll start date", parseInt)
254
- .requiredOption("-e, --end <pollEndDate>", "the poll end date", parseInt)
255
- .requiredOption("-i, --int-state-tree-depth <intStateTreeDepth>", "the int state tree depth", parseInt)
256
- .requiredOption("-b, --msg-batch-size <messageBatchSize>", "the message batch size", parseInt)
262
+ .option("-k, --verifyingKeysRegistryAddress <verifyingKeysRegistryAddress>", "the vk registry contract address")
263
+ .requiredOption("--start <pollStartDate>", "the poll start date", parseInt)
264
+ .requiredOption("--end <pollEndDate>", "the poll end date", parseInt)
265
+ .requiredOption("-i, --tally-processing-state-tree-depth <tallyProcessingStateTreeDepth>", "the int state tree depth", parseInt)
266
+ .requiredOption("-b, --message-batch-size <messageBatchSize>", "the message batch size", parseInt)
267
+ .requiredOption("-s, --state-tree-depth <stateTreeDepth>", "the state tree depth", parseInt)
257
268
  .requiredOption("-v, --vote-option-tree-depth <voteOptionTreeDepth>", "the vote option tree depth", parseInt)
258
- .requiredOption("-p, --pubkey <coordinatorPubkey>", "the coordinator public key")
259
- .option("-u, --use-quadratic-voting <useQuadraticVoting>", "whether to use quadratic voting", (value) => value === "true", true)
269
+ .requiredOption("-p, --public-key <publicKey>", "the coordinator public key")
270
+ .option("-m, --mode <mode>", "Voting mode (qv, non-qv, full)", (value) => constants_1.MODE_NAME_TO_ENUM[value], sdk_1.EMode.QV)
260
271
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
261
- .option("-m, --relayers <relayers>", "the relayer addresses", (value) => value.split(",").map((item) => item.trim()))
272
+ .option("--relayers <relayers>", "the relayer addresses", (value) => value.split(",").map((item) => item.trim()))
262
273
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
263
274
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
264
275
  .option("-o, --vote-options <voteOptions>", "the number of vote options", parseInt)
265
276
  .option("--initial-voice-credits <initialVoiceCredits>", "the initial voice credits", parseInt)
266
277
  .option("--initial-voice-credits-proxy <initialVoiceCreditsProxy>", "the initial voice credits proxy address")
267
278
  .option("--signup-policy <signupPolicy>", "the signup policy contract address")
268
- .action(async (cmdObj) => {
279
+ .action(async (args) => {
269
280
  try {
270
- (0, utils_1.banner)(cmdObj.quiet);
281
+ (0, utils_1.banner)(args.quiet);
271
282
  const signer = await getSigner();
272
283
  const network = await signer.provider?.getNetwork();
273
- const [vkRegistryAddress, maciAddress, initialVoiceCreditProxyAddress, verifierContractAddress] = (0, utils_1.readContractAddresses)({
284
+ const [verifyingKeysRegistryAddress, maciAddress, initialVoiceCreditProxyAddress, initialVoiceCreditProxyFactoryAddress, verifierContractAddress,] = (0, utils_1.readContractAddresses)({
274
285
  contractNames: [
275
- sdk_1.EContracts.VkRegistry,
286
+ sdk_1.EContracts.VerifyingKeysRegistry,
276
287
  sdk_1.EContracts.MACI,
277
288
  sdk_1.EContracts.ConstantInitialVoiceCreditProxy,
289
+ sdk_1.EContracts.ConstantInitialVoiceCreditProxyFactory,
278
290
  sdk_1.EContracts.Verifier,
279
291
  ],
280
292
  network: network?.name,
281
- defaultAddresses: [cmdObj.vkRegistryAddress, cmdObj.maciAddress, cmdObj.initialVoiceCreditsProxy],
293
+ defaultAddresses: [args.verifyingKeysRegistryAddress, args.maciAddress, args.initialVoiceCreditsProxy],
282
294
  });
283
295
  const maciContract = sdk_1.MACI__factory.connect(maciAddress, signer);
284
296
  const nextPollId = await maciContract.nextPollId();
@@ -288,39 +300,41 @@ program
288
300
  contractNames: [policyContractName.toString()],
289
301
  keys: [nextPollId.toString()],
290
302
  network: network?.name,
291
- defaultAddresses: [cmdObj.signupPolicy],
303
+ defaultAddresses: [args.signupPolicy],
292
304
  });
293
305
  const { pollId, pollContractAddress, tallyContractAddress, messageProcessorContractAddress, initialVoiceCreditProxyContractAddress, policyContractAddress, } = await (0, sdk_1.deployPoll)({
294
- initialVoiceCredits: cmdObj.initialVoiceCredits || defaults_1.DEFAULT_INITIAL_VOICE_CREDITS,
295
- pollStartTimestamp: cmdObj.start,
296
- pollEndTimestamp: cmdObj.end,
297
- intStateTreeDepth: cmdObj.intStateTreeDepth,
298
- messageBatchSize: cmdObj.msgBatchSize,
299
- voteOptionTreeDepth: cmdObj.voteOptionTreeDepth,
300
- coordinatorPubKey: domainobjs_1.PubKey.deserialize(cmdObj.pubkey),
306
+ initialVoiceCredits: args.initialVoiceCredits || defaults_1.DEFAULT_INITIAL_VOICE_CREDITS,
307
+ pollStartTimestamp: args.start,
308
+ pollEndTimestamp: args.end,
309
+ tallyProcessingStateTreeDepth: args.tallyProcessingStateTreeDepth,
310
+ messageBatchSize: args.messageBatchSize,
311
+ stateTreeDepth: args.stateTreeDepth,
312
+ voteOptionTreeDepth: args.voteOptionTreeDepth,
313
+ coordinatorPublicKey: domainobjs_1.PublicKey.deserialize(args.publicKey),
301
314
  maciAddress,
302
- vkRegistryContractAddress: vkRegistryAddress,
303
- relayers: cmdObj.relayers ?? [ethers_1.ZeroAddress],
304
- mode: cmdObj.useQuadraticVoting ? sdk_1.EMode.QV : sdk_1.EMode.NON_QV,
315
+ verifyingKeysRegistryContractAddress: verifyingKeysRegistryAddress,
316
+ relayers: args.relayers ?? [ethers_1.ZeroAddress],
317
+ mode: args.mode,
305
318
  signer,
306
- voteOptions: cmdObj.voteOptions ?? defaults_1.DEFAULT_VOTE_OPTIONS,
319
+ voteOptions: args.voteOptions ?? defaults_1.DEFAULT_VOTE_OPTIONS,
307
320
  verifierContractAddress,
308
321
  policyContractAddress: signupPolicyContractAddress,
322
+ initialVoiceCreditProxyFactoryAddress,
309
323
  initialVoiceCreditProxyContractAddress: initialVoiceCreditProxyAddress,
310
324
  });
311
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Poll ID: ${pollId}`) });
312
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Poll contract address: ${pollContractAddress}`) });
313
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Tally contract address: ${tallyContractAddress}`) });
325
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Poll ID: ${pollId}`) });
326
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Poll contract address: ${pollContractAddress}`) });
327
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Tally contract address: ${tallyContractAddress}`) });
314
328
  (0, sdk_1.logGreen)({
315
- quiet: cmdObj.quiet,
329
+ quiet: args.quiet,
316
330
  text: (0, sdk_1.success)(`Message processor contract address: ${messageProcessorContractAddress}`),
317
331
  });
318
332
  (0, sdk_1.logGreen)({
319
- quiet: cmdObj.quiet,
333
+ quiet: args.quiet,
320
334
  text: (0, sdk_1.success)(`Initial voice credit proxy contract address: ${initialVoiceCreditProxyContractAddress}`),
321
335
  });
322
336
  (0, sdk_1.logGreen)({
323
- quiet: cmdObj.quiet,
337
+ quiet: args.quiet,
324
338
  text: (0, sdk_1.success)(`Signup policy contract address: ${policyContractAddress}`),
325
339
  });
326
340
  }
@@ -331,8 +345,7 @@ program
331
345
  program
332
346
  .command("joinPoll")
333
347
  .description("join the poll")
334
- .requiredOption("-k, --priv-key <privKey>", "the private key")
335
- .option("-i, --state-index <stateIndex>", "the user's state index", BigInt)
348
+ .requiredOption("-k, --private-key <privateKey>", "the private key")
336
349
  .option("-s, --sg-data <sgData>", "the signup policy data")
337
350
  .option("-v, --ivcp-data <ivcpData>", "the initial voice credit proxy data")
338
351
  .option("-n, --new-voice-credit-balance <newVoiceCreditBalance>", "the voice credit balance of the user for the poll", BigInt)
@@ -348,38 +361,37 @@ program
348
361
  .requiredOption("--poll-joining-zkey <pollZkeyPath>", "the poll join zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
349
362
  .option("-w, --wasm", "whether to use the wasm binaries")
350
363
  .option("-r, --rapidsnark <rapidsnark>", "the path to the rapidsnark binary")
351
- .option("-g, --poll-witnessgen <pollWitnessgen>", "the path to the poll witness generation binary")
352
- .action(async (cmdObj) => {
364
+ .option("-g, --poll-witness-generator <pollWitnessGenerator>", "the path to the poll witness generation binary")
365
+ .action(async (args) => {
353
366
  try {
354
367
  const signer = await getSigner();
355
368
  const network = await signer.provider?.getNetwork();
356
369
  const [maciAddress] = (0, utils_1.readContractAddresses)({
357
370
  contractNames: [sdk_1.EContracts.MACI],
358
371
  network: network?.name,
359
- defaultAddresses: [cmdObj.maciAddress],
372
+ defaultAddresses: [args.maciAddress],
360
373
  });
361
- const privateKey = cmdObj.privKey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
374
+ const privateKey = args.privateKey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
362
375
  const data = await (0, sdk_1.joinPoll)({
363
376
  maciAddress,
364
377
  privateKey,
365
- stateIndex: cmdObj.stateIndex,
366
- stateFile: cmdObj.stateFile,
367
- pollId: cmdObj.pollId,
378
+ stateFile: args.stateFile,
379
+ pollId: args.pollId,
368
380
  signer,
369
- startBlock: cmdObj.startBlock,
370
- endBlock: cmdObj.endBlock,
371
- blocksPerBatch: cmdObj.blocksPerBatch,
372
- pollJoiningZkey: cmdObj.pollJoiningZkey,
373
- pollWasm: cmdObj.pollWasm,
374
- useWasm: cmdObj.wasm,
375
- rapidsnark: cmdObj.rapidsnark,
376
- pollWitgen: cmdObj.pollWitnessgen,
377
- sgDataArg: cmdObj.sgData ?? utils_1.DEFAULT_SG_DATA,
378
- ivcpDataArg: cmdObj.ivcpData ?? utils_1.DEFAULT_IVCP_DATA,
379
- });
380
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.info)(`User joined poll with nullifier: ${data.nullifier}`) });
381
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.info)(`User joined poll with state index: ${data.pollStateIndex}`) });
382
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.info)(`User joined poll with ${data.voiceCredits} voice credits`) });
381
+ startBlock: args.startBlock,
382
+ endBlock: args.endBlock,
383
+ blocksPerBatch: args.blocksPerBatch,
384
+ pollJoiningZkey: args.pollJoiningZkey,
385
+ pollWasm: args.pollWasm,
386
+ useWasm: args.wasm,
387
+ rapidsnark: args.rapidsnark,
388
+ pollWitnessGenerator: args.pollWitnessGenerator,
389
+ sgDataArg: args.sgData ?? utils_1.DEFAULT_SG_DATA,
390
+ ivcpDataArg: args.ivcpData ?? utils_1.DEFAULT_IVCP_DATA,
391
+ });
392
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.info)(`User joined poll with nullifier: ${data.nullifier}`) });
393
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.info)(`User joined poll with state index: ${data.pollStateIndex}`) });
394
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.info)(`User joined poll with ${data.voiceCredits} voice credits`) });
383
395
  }
384
396
  catch (error) {
385
397
  program.error(error.message, { exitCode: 1 });
@@ -389,47 +401,70 @@ program
389
401
  .command("setVerifyingKeys")
390
402
  .description("set the verifying keys")
391
403
  .requiredOption("-s, --state-tree-depth <stateTreeDepth>", "the state tree depth", parseInt)
392
- .requiredOption("-i, --int-state-tree-depth <intStateTreeDepth>", "the intermediate state tree depth", parseInt)
404
+ .requiredOption("-i, --tally-processing-state-tree-depth <tallyProcessingStateTreeDepth>", "the intermediate state tree depth", parseInt)
393
405
  .requiredOption("-v, --vote-option-tree-depth <voteOptionTreeDepth>", "the vote option tree depth", parseInt)
394
- .requiredOption("-b, --msg-batch-size <messageBatchSize>", "the message batch size", parseInt)
406
+ .requiredOption("-b, --message-batch-size <messageBatchSize>", "the message batch size", parseInt)
407
+ .option("--poll-state-tree-depth <pollStateTreeDepth>", "the poll state tree depth", parseInt)
395
408
  .option("--poll-joining-zkey <pollJoiningZkeyPath>", "the poll joining zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
396
409
  .option("--poll-joined-zkey <pollJoinedZkeyPath>", "the poll joined zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
397
- .option("--process-messages-zkey-qv <processMessagesZkeyPathQv>", "the process messages qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
398
- .option("--tally-votes-zkey-qv <tallyVotesZkeyPathQv>", "the tally votes qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
399
- .option("--process-messages-zkey-non-qv <processMessagesZkeyPathNonQv>", "the process messages non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
400
- .option("--tally-votes-zkey-non-qv <tallyVotesZkeyPathNonQv>", "the tally votes non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
401
- .option("-u, --use-quadratic-voting <useQuadraticVoting>", "whether to use quadratic voting", (value) => value === "true", true)
410
+ .option("--message-processor-zkey-qv <messageProcessorZkeyPathQv>", "the message processor qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
411
+ .option("--vote-tally-zkey-qv <voteTallyZkeyPathQv>", "the vote tally qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
412
+ .option("--message-processor-zkey-non-qv <messageProcessorZkeyPathNonQv>", "the message processor non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
413
+ .option("--vote-tally-zkey-non-qv <voteTallyZkeyPathNonQv>", "the vote tally non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
414
+ .option("--message-processor-zkey-full <messageProcessorZkeyPathFull>", "the message processor full zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
415
+ .option("--vote-tally-zkey-full <tallyVotesZkeyPathFull>", "the vote tally full zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
416
+ .option("-m, --modes <modes>", "Comma-separated list of voting modes (qv, non-qv, full)", (value) => value.split(",").map((v) => constants_1.MODE_NAME_TO_ENUM[v.trim()]), [sdk_1.EMode.QV])
402
417
  .option("-k, --vk-registry <vkRegistry>", "the vk registry contract address")
403
418
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
404
419
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
405
- .action(async (cmdObj) => {
420
+ .action(async (args) => {
406
421
  try {
407
422
  const signer = await getSigner();
408
423
  const network = await signer.provider?.getNetwork();
409
- const [vkRegistryAddress] = (0, utils_1.readContractAddresses)({
410
- contractNames: [sdk_1.EContracts.VkRegistry],
424
+ const [verifyingKeysRegistryAddress] = (0, utils_1.readContractAddresses)({
425
+ contractNames: [sdk_1.EContracts.VerifyingKeysRegistry],
411
426
  network: network?.name,
412
- defaultAddresses: [cmdObj.vkRegistry],
427
+ defaultAddresses: [args.vkRegistry],
413
428
  });
414
- const { pollJoiningVk, pollJoinedVk, processVk, tallyVk } = await (0, sdk_1.extractAllVks)({
415
- pollJoiningZkeyPath: cmdObj.pollJoiningZkey,
416
- pollJoinedZkeyPath: cmdObj.pollJoinedZkey,
417
- processMessagesZkeyPath: cmdObj.useQuadraticVoting
418
- ? cmdObj.processMessagesZkeyQv
419
- : cmdObj.processMessagesZkeyNonQv,
420
- tallyVotesZkeyPath: cmdObj.useQuadraticVoting ? cmdObj.tallyVotesZkeyQv : cmdObj.tallyVotesZkeyQv,
429
+ const processKeys = {
430
+ [sdk_1.EMode.QV]: args.messageProcessorZkeyQv,
431
+ [sdk_1.EMode.NON_QV]: args.messageProcessorZkeyNonQv,
432
+ [sdk_1.EMode.FULL]: args.messageProcessorZkeyFull,
433
+ };
434
+ const tallyKeys = {
435
+ [sdk_1.EMode.QV]: args.voteTallyZkeyQv,
436
+ [sdk_1.EMode.NON_QV]: args.voteTallyZkeyNonQv,
437
+ [sdk_1.EMode.FULL]: args.voteTallyZkeyFull,
438
+ };
439
+ const { pollJoiningVerifyingKey, pollJoinedVerifyingKey } = await (0, sdk_1.extractAllVerifyingKeys)({
440
+ pollJoiningZkeyPath: args.pollJoiningZkey,
441
+ pollJoinedZkeyPath: args.pollJoinedZkey,
442
+ });
443
+ const keysResults = await Promise.all(args.modes.map((mode) => (0, sdk_1.extractAllVerifyingKeys)({
444
+ messageProcessorZkeyPath: processKeys[mode],
445
+ voteTallyZkeyPath: tallyKeys[mode],
446
+ })));
447
+ const processVerifyingKeys = [];
448
+ const tallyVerifyingKeys = [];
449
+ keysResults.forEach(({ processVerifyingKey, tallyVerifyingKey }, idx) => {
450
+ if (!processVerifyingKey || !tallyVerifyingKey) {
451
+ throw new Error(`Verifying keys for mode ${args.modes[idx]} are not valid`);
452
+ }
453
+ processVerifyingKeys.push(processVerifyingKey);
454
+ tallyVerifyingKeys.push(tallyVerifyingKey);
421
455
  });
422
456
  await (0, sdk_1.setVerifyingKeys)({
423
- stateTreeDepth: cmdObj.stateTreeDepth,
424
- intStateTreeDepth: cmdObj.intStateTreeDepth,
425
- voteOptionTreeDepth: cmdObj.voteOptionTreeDepth,
426
- messageBatchSize: cmdObj.msgBatchSize,
427
- pollJoiningVk: pollJoiningVk,
428
- pollJoinedVk: pollJoinedVk,
429
- processMessagesVk: processVk,
430
- tallyVotesVk: tallyVk,
431
- vkRegistryAddress,
432
- mode: cmdObj.useQuadraticVoting ? sdk_1.EMode.QV : sdk_1.EMode.NON_QV,
457
+ stateTreeDepth: args.stateTreeDepth,
458
+ tallyProcessingStateTreeDepth: args.tallyProcessingStateTreeDepth,
459
+ voteOptionTreeDepth: args.voteOptionTreeDepth,
460
+ messageBatchSize: args.messageBatchSize,
461
+ pollStateTreeDepth: args.pollStateTreeDepth || args.stateTreeDepth,
462
+ pollJoiningVerifyingKey: pollJoiningVerifyingKey,
463
+ pollJoinedVerifyingKey: pollJoinedVerifyingKey,
464
+ processMessagesVerifyingKeys: processVerifyingKeys,
465
+ tallyVotesVerifyingKeys: tallyVerifyingKeys,
466
+ verifyingKeysRegistryAddress,
467
+ modes: args.modes,
433
468
  signer,
434
469
  });
435
470
  }
@@ -440,9 +475,9 @@ program
440
475
  program
441
476
  .command("publish")
442
477
  .description("publish a new message to a MACI Poll contract")
443
- .requiredOption("-p, --pubkey <pubkey>", "the MACI public key which should replace the user's public key in the state tree")
478
+ .requiredOption("-p, --public-key <publicKey>", "the MACI public key which should replace the user's public key in the state tree")
444
479
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
445
- .option("-k, --privkey <privkey>", "your serialized MACI private key")
480
+ .option("-k, --private-key <privateKey>", "your serialized MACI private key")
446
481
  .requiredOption("-i, --state-index <stateIndex>", "the user's state index", BigInt)
447
482
  .requiredOption("-v, --vote-option-index <voteOptionIndex>", "the vote option index", BigInt)
448
483
  .requiredOption("-n, --nonce <nonce>", "the message nonce", BigInt)
@@ -451,25 +486,25 @@ program
451
486
  .requiredOption("-w, --new-vote-weight <newVoteWeight>", "the new vote weight", BigInt)
452
487
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
453
488
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
454
- .action(async (cmdObj) => {
489
+ .action(async (args) => {
455
490
  try {
456
491
  const signer = await getSigner();
457
492
  const network = await signer.provider?.getNetwork();
458
493
  const [maciAddress] = (0, utils_1.readContractAddresses)({
459
494
  contractNames: [sdk_1.EContracts.MACI],
460
495
  network: network?.name,
461
- defaultAddresses: [cmdObj.maciAddress],
496
+ defaultAddresses: [args.maciAddress],
462
497
  });
463
- const privateKey = cmdObj.privkey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
498
+ const privateKey = args.privateKey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
464
499
  await (0, sdk_1.publish)({
465
- pubkey: cmdObj.pubkey,
466
- stateIndex: cmdObj.stateIndex,
467
- voteOptionIndex: cmdObj.voteOptionIndex,
468
- nonce: cmdObj.nonce,
469
- pollId: cmdObj.pollId,
470
- newVoteWeight: cmdObj.newVoteWeight,
500
+ publicKey: args.publicKey,
501
+ stateIndex: args.stateIndex,
502
+ voteOptionIndex: args.voteOptionIndex,
503
+ nonce: args.nonce,
504
+ pollId: args.pollId,
505
+ newVoteWeight: args.newVoteWeight,
471
506
  maciAddress,
472
- salt: cmdObj.salt,
507
+ salt: args.salt,
473
508
  privateKey,
474
509
  signer,
475
510
  });
@@ -484,23 +519,23 @@ program
484
519
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
485
520
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
486
521
  .requiredOption("-p, --poll-id <pollId>", "the poll id", BigInt)
487
- .action(async (cmdObj) => {
522
+ .action(async (args) => {
488
523
  try {
489
524
  const signer = await getSigner();
490
525
  const network = await signer.provider?.getNetwork();
491
526
  const [maciAddress] = (0, utils_1.readContractAddresses)({
492
527
  contractNames: [sdk_1.EContracts.MACI],
493
528
  network: network?.name,
494
- defaultAddresses: [cmdObj.maciAddress],
529
+ defaultAddresses: [args.maciAddress],
495
530
  });
496
531
  const receipt = await (0, sdk_1.mergeSignups)({
497
- pollId: cmdObj.pollId,
532
+ pollId: args.pollId,
498
533
  maciAddress,
499
534
  signer,
500
535
  });
501
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.info)(`Transaction hash: ${receipt.hash}`) });
536
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.info)(`Transaction hash: ${receipt.hash}`) });
502
537
  (0, sdk_1.logGreen)({
503
- quiet: cmdObj.quiet,
538
+ quiet: args.quiet,
504
539
  text: (0, sdk_1.success)(`Executed mergeSignups(); gas used: ${receipt.gasUsed.toString()}`),
505
540
  });
506
541
  }
@@ -514,37 +549,39 @@ program
514
549
  .requiredOption("-s, --seconds <seconds>", "the number of seconds to fast-forward", parseInt)
515
550
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
516
551
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
517
- .action(async (cmdObj) => {
552
+ .action(async (args) => {
518
553
  try {
519
- (0, utils_1.banner)(cmdObj.quiet);
554
+ (0, utils_1.banner)(args.quiet);
520
555
  const signer = await getSigner();
521
- await (0, sdk_1.timeTravel)({ seconds: cmdObj.seconds, signer });
522
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`Fast-forwarded ${cmdObj.seconds} seconds`) });
556
+ await (0, sdk_1.timeTravel)({ seconds: args.seconds, signer });
557
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`Fast-forwarded ${args.seconds} seconds`) });
523
558
  }
524
559
  catch (error) {
525
560
  program.error(error.message, { exitCode: 1 });
526
561
  }
527
562
  });
528
563
  program
529
- .command("extractVkToFile")
564
+ .command("extractVerifyingKeyToFile")
530
565
  .description("extract vkey to json file")
531
566
  .requiredOption("--poll-joining-zkey <pollJoiningZkey>", "the poll joining zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
532
567
  .requiredOption("--poll-joined-zkey <pollJoinedZkey>", "the poll joined zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
533
- .requiredOption("--process-messages-zkey-qv <processMessagesZkeyPathQv>", "the process messages qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
534
- .requiredOption("--tally-votes-zkey-qv <tallyVotesZkeyPathQv>", "the tally votes qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
535
- .requiredOption("--process-messages-zkey-non-qv <processMessagesZkeyPathNonQv>", "the process messages non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
536
- .requiredOption("--tally-votes-zkey-non-qv <tallyVotesZkeyPathNonQv>", "the tally votes non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
568
+ .requiredOption("--message-processor-zkey-qv <messageProcessorZkeyPathQv>", "the message processor qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
569
+ .requiredOption("--vote-tally-zkey-qv <voteTallyZkeyPathQv>", "the vote tally qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
570
+ .requiredOption("--message-processor-zkey-non-qv <messageProcessorZkeyPathNonQv>", "the message processor non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
571
+ .requiredOption("--message-processor-zkey-full <messageProcessorZkeyPathFull>", "the message processor full zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
572
+ .requiredOption("--vote-tally-zkey-non-qv <voteTallyZkeyPathNonQv>", "the vote tally non-qv zkey path (see different options for zkey files to use specific circuits https://maci.pse.dev/docs/trusted-setup, https://maci.pse.dev/docs/testing/#pre-compiled-artifacts-for-testing)")
537
573
  .requiredOption("-o, --output-file <outputFile>", "the output file path of extracted vkeys")
538
- .action(async (cmdObj) => {
574
+ .action(async (args) => {
539
575
  try {
540
- await (0, sdk_1.extractVkToFile)({
541
- processMessagesZkeyPathQv: cmdObj.processMessagesZkeyQv,
542
- tallyVotesZkeyPathQv: cmdObj.tallyVotesZkeyQv,
543
- processMessagesZkeyPathNonQv: cmdObj.processMessagesZkeyNonQv,
544
- tallyVotesZkeyPathNonQv: cmdObj.tallyVotesZkeyNonQv,
545
- pollJoiningZkeyPath: cmdObj.pollJoiningZkey,
546
- pollJoinedZkeyPath: cmdObj.pollJoinedZkey,
547
- outputFilePath: cmdObj.outputFile,
576
+ await (0, sdk_1.extractVerifyingKeyToFile)({
577
+ messageProcessorZkeyPathQv: args.messageProcessorZkeyQv,
578
+ messageProcessorZkeyPathFull: args.messageProcessorZkeyFull,
579
+ voteTallyZkeyPathQv: args.voteTallyZkeyQv,
580
+ messageProcessorZkeyPathNonQv: args.messageProcessorZkeyNonQv,
581
+ voteTallyZkeyPathNonQv: args.voteTallyZkeyNonQv,
582
+ pollJoiningZkeyPath: args.pollJoiningZkey,
583
+ pollJoinedZkeyPath: args.pollJoinedZkey,
584
+ outputFilePath: args.outputFile,
548
585
  });
549
586
  }
550
587
  catch (error) {
@@ -554,28 +591,28 @@ program
554
591
  program
555
592
  .command("signup")
556
593
  .description("Sign up to a MACI contract")
557
- .requiredOption("-p, --pubkey <maciPubKey>", "the MACI public key")
594
+ .requiredOption("-p, --public-key <publicKey>", "the MACI public key")
558
595
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
559
596
  .option("-s, --sg-data <sgData>", "the signup gateway data")
560
597
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
561
598
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
562
- .action(async (cmdObj) => {
599
+ .action(async (args) => {
563
600
  try {
564
601
  const signer = await getSigner();
565
602
  const network = await signer.provider?.getNetwork();
566
603
  const [maciAddress] = (0, utils_1.readContractAddresses)({
567
604
  contractNames: [sdk_1.EContracts.MACI],
568
605
  network: network?.name,
569
- defaultAddresses: [cmdObj.maciAddress],
606
+ defaultAddresses: [args.maciAddress],
570
607
  });
571
608
  const data = await (0, sdk_1.signup)({
572
- maciPubKey: cmdObj.pubkey,
609
+ maciPublicKey: args.publicKey,
573
610
  maciAddress,
574
- sgData: cmdObj.sgData ?? utils_1.DEFAULT_SG_DATA,
611
+ sgData: args.sgData ?? utils_1.DEFAULT_SG_DATA,
575
612
  signer,
576
613
  });
577
614
  (0, sdk_1.logGreen)({
578
- quiet: cmdObj.quiet,
615
+ quiet: args.quiet,
579
616
  text: (0, sdk_1.success)(`State index: ${data.stateIndex.toString()}\n Transaction hash: ${data.transactionHash}`),
580
617
  });
581
618
  }
@@ -586,28 +623,28 @@ program
586
623
  program
587
624
  .command("isRegisteredUser")
588
625
  .description("Checks if user is registered with their public key and get their data")
589
- .requiredOption("-p, --pubkey <maciPubKey>", "the MACI public key")
626
+ .requiredOption("-p, --public-key <publicKey>", "the MACI public key")
590
627
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
591
628
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
592
- .action(async (cmdObj) => {
629
+ .action(async (args) => {
593
630
  try {
594
631
  const signer = await getSigner();
595
632
  const network = await signer.provider?.getNetwork();
596
633
  const [maciAddress] = (0, utils_1.readContractAddresses)({
597
634
  contractNames: [sdk_1.EContracts.MACI],
598
635
  network: network?.name,
599
- defaultAddresses: [cmdObj.maciAddress],
636
+ defaultAddresses: [args.maciAddress],
600
637
  });
601
638
  const data = await (0, sdk_1.getSignedupUserData)({
602
- maciPubKey: cmdObj.pubkey,
639
+ maciPublicKey: args.publicKey,
603
640
  maciAddress,
604
641
  signer,
605
642
  });
606
643
  if (data.isRegistered) {
607
- (0, sdk_1.logGreen)({ quiet: cmdObj.quiet, text: (0, sdk_1.success)(`State index: ${data.stateIndex?.toString()}`) });
644
+ (0, sdk_1.logGreen)({ quiet: args.quiet, text: (0, sdk_1.success)(`State index: ${data.stateIndex?.toString()}`) });
608
645
  }
609
646
  else {
610
- (0, sdk_1.logRed)({ quiet: cmdObj.quiet, text: "User is not registered" });
647
+ (0, sdk_1.logRed)({ quiet: args.quiet, text: "User is not registered" });
611
648
  }
612
649
  }
613
650
  catch (error) {
@@ -617,32 +654,32 @@ program
617
654
  program
618
655
  .command("isJoinedUser")
619
656
  .description("Checks if user is joined to the poll with public key")
620
- .requiredOption("-p, --pubkey <pubkey>", "the MACI public key")
657
+ .requiredOption("-p, --public-key <publicKey>", "the MACI public key")
621
658
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
622
659
  .requiredOption("-o, --poll-id <pollId>", "the poll id", BigInt)
623
660
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
624
661
  .option("--start-block <startBlock>", "the block number to start looking for events from", parseInt)
625
662
  .option("--end-block <endBlock>", "the block number to end looking for events from", parseInt)
626
663
  .option("--blocks-per-batch <blockPerBatch>", "the number of blocks to process per batch", parseInt)
627
- .action(async (cmdObj) => {
664
+ .action(async (args) => {
628
665
  try {
629
666
  const signer = await getSigner();
630
667
  const network = await signer.provider?.getNetwork();
631
668
  const [maciAddress] = (0, utils_1.readContractAddresses)({
632
669
  contractNames: [sdk_1.EContracts.MACI],
633
670
  network: network?.name,
634
- defaultAddresses: [cmdObj.maciAddress],
671
+ defaultAddresses: [args.maciAddress],
635
672
  });
636
673
  const data = await (0, sdk_1.getJoinedUserData)({
637
- pollPubKey: cmdObj.pubkey,
638
- startBlock: cmdObj.startBlock,
674
+ pollPublicKey: args.publicKey,
675
+ startBlock: args.startBlock,
639
676
  maciAddress,
640
- pollId: cmdObj.pollId,
677
+ pollId: args.pollId,
641
678
  signer,
642
679
  });
643
680
  if (data.isJoined) {
644
681
  (0, sdk_1.logGreen)({
645
- quiet: cmdObj.quiet,
682
+ quiet: args.quiet,
646
683
  text: (0, sdk_1.success)([
647
684
  `Poll state index: ${data.pollStateIndex?.toString()}, registered: ${data.isJoined}`,
648
685
  `Voice credits: ${data.voiceCredits?.toString()}`,
@@ -650,7 +687,7 @@ program
650
687
  });
651
688
  }
652
689
  else {
653
- (0, sdk_1.logRed)({ quiet: cmdObj.quiet, text: "User has not joined the poll" });
690
+ (0, sdk_1.logRed)({ quiet: args.quiet, text: "User has not joined the poll" });
654
691
  }
655
692
  }
656
693
  catch (error) {
@@ -662,29 +699,34 @@ program
662
699
  .description("Get deployed poll from MACI contract")
663
700
  .option("-p, --poll <poll>", "the poll id")
664
701
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
665
- .action(async (cmdObj) => {
702
+ .action(async (args) => {
666
703
  try {
667
704
  const signer = await getSigner();
668
705
  const network = await signer.provider?.getNetwork();
669
706
  const [maciAddress] = (0, utils_1.readContractAddresses)({
670
707
  contractNames: [sdk_1.EContracts.MACI],
671
708
  network: network?.name,
672
- defaultAddresses: [cmdObj.maciAddress],
709
+ defaultAddresses: [args.maciAddress],
673
710
  });
674
711
  const details = await (0, sdk_1.getPoll)({
675
- pollId: cmdObj.poll,
712
+ pollId: args.poll,
676
713
  maciAddress,
677
714
  signer,
678
715
  });
716
+ const modeNames = {
717
+ [sdk_1.EMode.QV]: "Quadratic Voting",
718
+ [sdk_1.EMode.NON_QV]: "Non-Quadratic Voting",
719
+ [sdk_1.EMode.FULL]: "Full Credits Voting",
720
+ };
679
721
  (0, sdk_1.logGreen)({
680
722
  quiet: true,
681
723
  text: (0, sdk_1.success)([
682
724
  `ID: ${details.id}`,
683
725
  `Start time: ${new Date(Number(details.startDate) * 1000).toString()}`,
684
726
  `End time: ${new Date(Number(details.endDate) * 1000).toString()}`,
685
- `Number of signups ${details.numSignups}`,
727
+ `Number of signups ${details.totalSignups}`,
686
728
  `State tree merged: ${details.isMerged}`,
687
- `Mode: ${details.mode === 0n ? "Quadratic Voting" : "Non-Quadratic Voting"}`,
729
+ `Mode: ${modeNames[details.mode]}`,
688
730
  ].join("\n")),
689
731
  });
690
732
  }
@@ -699,15 +741,15 @@ program
699
741
  .requiredOption("-w, --address <address>", "the address to fund")
700
742
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
701
743
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
702
- .action(async (cmdObj) => {
744
+ .action(async (args) => {
703
745
  try {
704
- (0, utils_1.banner)(cmdObj.quiet);
746
+ (0, utils_1.banner)(args.quiet);
705
747
  const signer = await getSigner();
706
- const hash = await (0, sdk_1.fundWallet)({ amount: cmdObj.amount, address: cmdObj.address, signer });
707
- (0, sdk_1.logYellow)({ quiet: cmdObj.quiet, text: (0, sdk_1.info)(`Transaction hash: ${hash}`) });
748
+ const hash = await (0, sdk_1.fundWallet)({ amount: args.amount, address: args.address, signer });
749
+ (0, sdk_1.logYellow)({ quiet: args.quiet, text: (0, sdk_1.info)(`Transaction hash: ${hash}`) });
708
750
  (0, sdk_1.logGreen)({
709
- quiet: cmdObj.quiet,
710
- text: (0, sdk_1.success)(`Successfully funded ${cmdObj.address} with ${cmdObj.amount} wei`),
751
+ quiet: args.quiet,
752
+ text: (0, sdk_1.success)(`Successfully funded ${args.address} with ${args.amount} wei`),
711
753
  });
712
754
  }
713
755
  catch (error) {
@@ -722,34 +764,34 @@ program
722
764
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
723
765
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
724
766
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
725
- .action(async (cmdObj) => {
767
+ .action(async (args) => {
726
768
  try {
727
- (0, utils_1.banner)(cmdObj.quiet);
769
+ (0, utils_1.banner)(args.quiet);
728
770
  const signer = await getSigner();
729
771
  const network = await signer.provider?.getNetwork();
730
772
  // read the tally file
731
- const isTallyFileExists = fs_1.default.existsSync(cmdObj.tallyFile);
732
- if (!cmdObj.tallyFile || !isTallyFileExists) {
733
- throw new Error(`Unable to open ${cmdObj.tallyFile}`);
773
+ const isTallyFileExists = fs_1.default.existsSync(args.tallyFile);
774
+ if (!args.tallyFile || !isTallyFileExists) {
775
+ throw new Error(`Unable to open ${args.tallyFile}`);
734
776
  }
735
- const tallyData = await (0, utils_1.readJSONFile)(cmdObj.tallyFile);
777
+ const tallyData = await (0, utils_1.readJSONFile)(args.tallyFile);
736
778
  const [maciAddress] = (0, utils_1.readContractAddresses)({
737
779
  contractNames: [sdk_1.EContracts.MACI],
738
780
  network: network?.name,
739
- defaultAddresses: [cmdObj.maciAddress],
781
+ defaultAddresses: [args.maciAddress],
740
782
  });
741
- const pollParams = await (0, sdk_1.getPollParams)({ pollId: cmdObj.pollId, maciContractAddress: maciAddress, signer });
783
+ const pollParams = await (0, sdk_1.getPollParams)({ pollId: args.pollId, maciContractAddress: maciAddress, signer });
742
784
  const tallyCommitments = (0, sdk_1.generateTallyCommitments)({
743
785
  tallyData,
744
786
  voteOptionTreeDepth: pollParams.voteOptionTreeDepth,
745
787
  });
746
788
  await (0, sdk_1.verify)({
747
789
  tallyData,
748
- pollId: cmdObj.pollId,
790
+ pollId: args.pollId,
749
791
  maciAddress,
750
792
  signer,
751
793
  tallyCommitments,
752
- numVoteOptions: pollParams.numVoteOptions,
794
+ totalVoteOptions: pollParams.totalVoteOptions,
753
795
  voteOptionTreeDepth: pollParams.voteOptionTreeDepth,
754
796
  });
755
797
  }
@@ -758,34 +800,34 @@ program
758
800
  }
759
801
  });
760
802
  program
761
- .command("genProofs")
803
+ .command("generateProofs")
762
804
  .description("generate the proofs for a poll")
763
- .option("-k, --privkey <privkey>", "your serialized MACI private key")
805
+ .option("-k, --private-key <privateKey>", "your serialized MACI private key")
764
806
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
765
807
  .requiredOption("-o, --poll-id <pollId>", "the poll id", BigInt)
766
808
  .requiredOption("-t, --tally-file <tallyFile>", "the tally file with results, per vote option spent credits, spent voice credits total")
767
809
  .option("-r, --rapidsnark <rapidsnark>", "the path to the rapidsnark binary")
768
- .option("-g, --process-witnessgen <processWitnessgen>", "the path to the process witness generation binary")
769
- .option("--process-witnessdat <processWitnessdat>", "the path to the process witness dat file")
770
- .option("--tally-witnessgen <tallyWitnessgen>", "the path to the tally witness generation binary")
771
- .option("--tally-witnessdat <tallyWitnessdat>", "the path to the tally witness dat file")
810
+ .option("-g, --message-processor-witness-generator <messageProcessorWitnessGenerator>", "the path to the process witness generation binary")
811
+ .option("--message-processor-witnessDat <messageProcessorWitnessDat>", "the path to the process witness dat file")
812
+ .option("--vote-tally-witness-generator <voteTallyWitnessGenerator>", "the path to the tally witness generation binary")
813
+ .option("--vote-tally-witnessDat <voteTallyWitnessDat>", "the path to the tally witness dat file")
772
814
  .requiredOption("--poll-joining-zkey <processJoinZkey>", "the path to the poll join zkey")
773
- .requiredOption("--process-zkey <processZkey>", "the path to the process zkey")
774
- .requiredOption("--tally-zkey <tallyZkey>", "the path to the tally zkey")
815
+ .requiredOption("--message-processor-zkey <messageProcessorZkey>", "the path to the process zkey")
816
+ .requiredOption("--vote-tally-zkey <voteTallyZkey>", "the path to the tally zkey")
775
817
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
776
818
  .option("-p, --rpc-provider <provider>", "the rpc provider URL")
777
819
  .requiredOption("-f, --output <outputDir>", "the output directory for proofs")
778
820
  .option("--transaction-hash <transactionHash>", "transaction hash of MACI contract creation")
779
821
  .option("-w, --wasm", "whether to use the wasm binaries")
780
- .option("--process-wasm <processWasm>", "the path to the process witness generation wasm binary")
781
- .option("--tally-wasm <tallyWasm>", "the path to the tally witness generation wasm binary")
822
+ .option("--message-processor-wasm <messageProcessorWasm>", "the path to the process witness generation wasm binary")
823
+ .option("--vote-tally-wasm <voteTallyWasm>", "the path to the tally witness generation wasm binary")
782
824
  .option("--state-file <stateFile>", "the path to the state file containing the serialized maci state")
783
825
  .option("--start-block <startBlock>", "the block number to start looking for events from", parseInt)
784
826
  .option("--end-block <endBlock>", "the block number to end looking for events from", parseInt)
785
827
  .option("--blocks-per-batch <blockPerBatch>", "the number of blocks to process per batch", parseInt)
786
- .option("-u, --use-quadratic-voting <useQuadraticVoting>", "whether to use quadratic voting", (value) => value === "true", true)
828
+ .option("-m, --mode <mode>", "Voting mode (qv, non-qv, full)", (value) => constants_1.MODE_NAME_TO_ENUM[value], sdk_1.EMode.QV)
787
829
  .option("-b, --ipfs-message-backup-files <ipfsMessageBackupFiles>", "Backup files for ipfs messages (name format: ipfsHash1.json, ipfsHash2.json, ..., ipfsHashN.json)", (value) => value?.split(/\s*,\s*/))
788
- .action(async ({ quiet, maciAddress, pollId, ipfsMessageBackupFiles, stateFile, startBlock, endBlock, blocksPerBatch, privkey, transactionHash, output, tallyFile, tallyZkey, tallyWitnessgen, tallyWasm, processZkey, processWitnessgen, processWasm, useQuadraticVoting, tallyWitnessdat, processWitnessdat, wasm, rapidsnark, }) => {
830
+ .action(async ({ quiet, maciAddress, pollId, ipfsMessageBackupFiles, stateFile, startBlock, endBlock, blocksPerBatch, privateKey, transactionHash, output, tallyFile, voteTallyZkey, voteTallyWitnessGenerator, voteTallyWasm, messageProcessorZkey, messageProcessorWitnessGenerator, messageProcessorWasm, mode, voteTallyWitnessDat, messageProcessorWitnessDat, wasm, rapidsnark, }) => {
789
831
  try {
790
832
  (0, utils_1.banner)(quiet);
791
833
  const signer = await getSigner();
@@ -795,7 +837,7 @@ program
795
837
  network: network?.name,
796
838
  defaultAddresses: [maciAddress],
797
839
  });
798
- const coordinatorPrivateKey = privkey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
840
+ const coordinatorPrivateKey = privateKey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
799
841
  await (0, sdk_1.generateProofs)({
800
842
  maciAddress: maciContractAddress,
801
843
  coordinatorPrivateKey,
@@ -809,15 +851,15 @@ program
809
851
  signer,
810
852
  outputDir: output,
811
853
  tallyFile,
812
- tallyZkey,
813
- tallyWitgen: tallyWitnessgen,
814
- tallyWasm,
815
- processZkey,
816
- processWitgen: processWitnessgen,
817
- processWasm,
818
- useQuadraticVoting,
819
- tallyDatFile: tallyWitnessdat,
820
- processDatFile: processWitnessdat,
854
+ voteTallyZkey,
855
+ voteTallyWitnessGenerator,
856
+ voteTallyWasm,
857
+ messageProcessorZkey,
858
+ messageProcessorWitnessGenerator,
859
+ messageProcessorWasm,
860
+ mode,
861
+ voteTallyWitnessDatFile: voteTallyWitnessDat,
862
+ messageProcessorWitnessDatFile: messageProcessorWitnessDat,
821
863
  useWasm: wasm,
822
864
  rapidsnark,
823
865
  });
@@ -827,12 +869,12 @@ program
827
869
  }
828
870
  });
829
871
  program
830
- .command("genLocalState")
872
+ .command("generateLocalState")
831
873
  .description("generate a local MACI state from the smart contracts events")
832
874
  .requiredOption("-o, --output <outputPath>", "the path where to write the state")
833
875
  .requiredOption("-p, --poll-id <pollId>", "the id of the poll", BigInt)
834
876
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
835
- .option("-k, --privkey <privkey>", "your serialized MACI private key")
877
+ .option("-k, --private-key <privateKey>", "your serialized MACI private key")
836
878
  .option("--start-block <startBlock>", "the start block number", parseInt)
837
879
  .option("--end-block <endBlock>", "the end block number", parseInt)
838
880
  .option("--blocks-per-batch <blockPerBatch>", "the blocks per batch", parseInt)
@@ -842,30 +884,30 @@ program
842
884
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
843
885
  .option("-b, --ipfs-message-backup-files <ipfsMessageBackupFiles>", "Backup files for ipfs messages (name format: ipfsHash1.json, ipfsHash2.json, ..., ipfsHashN.json)", (value) => value?.split(/\s*,\s*/))
844
886
  .option("-l, --logs-output <logsOutputPath>", "the path where to save the logs for debugging and auditing purposes")
845
- .action(async (cmdObj) => {
887
+ .action(async (args) => {
846
888
  try {
847
889
  const signer = await getSigner();
848
890
  const network = await signer.provider?.getNetwork();
849
891
  const [maciAddress] = (0, utils_1.readContractAddresses)({
850
892
  contractNames: [sdk_1.EContracts.MACI],
851
893
  network: network?.name,
852
- defaultAddresses: [cmdObj.maciAddress],
894
+ defaultAddresses: [args.maciAddress],
853
895
  });
854
- const coordinatorPrivateKey = cmdObj.privkey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
896
+ const coordinatorPrivateKey = args.privateKey || (await (0, utils_1.promptSensitiveValue)("Insert your MACI private key"));
855
897
  await (0, sdk_1.generateMaciState)({
856
- outputPath: cmdObj.output.toString(),
857
- pollId: cmdObj.pollId,
898
+ outputPath: args.output.toString(),
899
+ pollId: args.pollId,
858
900
  maciAddress,
859
901
  coordinatorPrivateKey,
860
- provider: cmdObj.rpcProvider,
861
- endBlock: cmdObj.endBlock,
862
- startBlock: cmdObj.startBlock,
863
- blockPerBatch: cmdObj.blocksPerBatch,
864
- transactionHash: cmdObj.transactionHash,
865
- ipfsMessageBackupFiles: cmdObj.ipfsMessageBackupFiles,
866
- sleep: cmdObj.sleep,
902
+ provider: args.rpcProvider,
903
+ endBlock: args.endBlock,
904
+ startBlock: args.startBlock,
905
+ blockPerBatch: args.blocksPerBatch,
906
+ transactionHash: args.transactionHash,
907
+ ipfsMessageBackupFiles: args.ipfsMessageBackupFiles,
908
+ sleep: args.sleep,
867
909
  signer,
868
- logsOutputPath: cmdObj.logsOutput,
910
+ logsOutputPath: args.logsOutput,
869
911
  });
870
912
  }
871
913
  catch (error) {
@@ -880,20 +922,20 @@ program
880
922
  .option("-q, --quiet <quiet>", "whether to print values to the console", (value) => value === "true", false)
881
923
  .option("-r, --rpc-provider <provider>", "the rpc provider URL")
882
924
  .option("-x, --maci-address <maciAddress>", "the MACI contract address")
883
- .requiredOption("-f, --proof-dir <proofDir>", "the proof output directory from the genProofs subcommand")
884
- .action(async (cmdObj) => {
925
+ .requiredOption("-f, --proof-dir <proofDir>", "the proof output directory from the generateProofs subcommand")
926
+ .action(async (args) => {
885
927
  try {
886
928
  const signer = await getSigner();
887
929
  const network = await signer.provider?.getNetwork();
888
930
  const [maciAddress] = (0, utils_1.readContractAddresses)({
889
931
  contractNames: [sdk_1.EContracts.MACI],
890
932
  network: network?.name,
891
- defaultAddresses: [cmdObj.maciAddress],
933
+ defaultAddresses: [args.maciAddress],
892
934
  });
893
935
  await (0, sdk_1.proveOnChain)({
894
- pollId: cmdObj.pollId,
895
- tallyFile: cmdObj.tallyFile,
896
- proofDir: cmdObj.proofDir,
936
+ pollId: args.pollId,
937
+ tallyFile: args.tallyFile,
938
+ proofDir: args.proofDir,
897
939
  maciAddress,
898
940
  signer,
899
941
  });