@maci-protocol/sdk 0.0.0-ci.f9da2fc → 0.0.0-ci.fc91dc9
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/LICENSE +1 -2
- package/build/package.json +10 -2
- package/build/ts/browser/joinPoll.d.ts.map +1 -1
- package/build/ts/browser/joinPoll.js +14 -10
- package/build/ts/browser/joinPoll.js.map +1 -1
- package/build/ts/browser/utils.d.ts +1 -1
- package/build/ts/browser/utils.d.ts.map +1 -1
- package/build/ts/browser/utils.js +3 -3
- package/build/ts/browser/utils.js.map +1 -1
- package/build/ts/deploy/index.d.ts +2 -2
- package/build/ts/deploy/index.d.ts.map +1 -1
- package/build/ts/deploy/index.js +3 -3
- package/build/ts/deploy/index.js.map +1 -1
- package/build/ts/deploy/maci.js +1 -1
- package/build/ts/deploy/maci.js.map +1 -1
- package/build/ts/deploy/poll.d.ts +1 -1
- package/build/ts/deploy/poll.d.ts.map +1 -1
- package/build/ts/deploy/poll.js +7 -6
- package/build/ts/deploy/poll.js.map +1 -1
- package/build/ts/deploy/types.d.ts +10 -6
- package/build/ts/deploy/types.d.ts.map +1 -1
- package/build/ts/deploy/utils.js +1 -1
- package/build/ts/deploy/utils.js.map +1 -1
- package/build/ts/deploy/verifyingKeysRegistry.d.ts +7 -0
- package/build/ts/deploy/verifyingKeysRegistry.d.ts.map +1 -0
- package/build/ts/deploy/verifyingKeysRegistry.js +14 -0
- package/build/ts/deploy/verifyingKeysRegistry.js.map +1 -0
- package/build/ts/index.d.ts +1 -1
- package/build/ts/index.d.ts.map +1 -1
- package/build/ts/index.js +11 -7
- package/build/ts/index.js.map +1 -1
- package/build/ts/maci/state.d.ts +1 -1
- package/build/ts/maci/state.js +8 -8
- package/build/ts/maci/state.js.map +1 -1
- package/build/ts/maci/types.d.ts +1 -1
- package/build/ts/maciKeys/__tests__/keypair.test.js +7 -7
- package/build/ts/maciKeys/__tests__/keypair.test.js.map +1 -1
- package/build/ts/maciKeys/__tests__/publicKeys.test.js +7 -7
- package/build/ts/maciKeys/__tests__/publicKeys.test.js.map +1 -1
- package/build/ts/maciKeys/keypair.js +3 -3
- package/build/ts/maciKeys/keypair.js.map +1 -1
- package/build/ts/maciKeys/publicKeys.d.ts +2 -2
- package/build/ts/maciKeys/publicKeys.d.ts.map +1 -1
- package/build/ts/maciKeys/publicKeys.js +6 -6
- package/build/ts/maciKeys/publicKeys.js.map +1 -1
- package/build/ts/poll/poll.js +4 -4
- package/build/ts/poll/poll.js.map +1 -1
- package/build/ts/poll/types.d.ts +5 -5
- package/build/ts/poll/types.d.ts.map +1 -1
- package/build/ts/proof/__tests__/download.test.js +3 -3
- package/build/ts/proof/__tests__/download.test.js.map +1 -1
- package/build/ts/proof/generate.d.ts +1 -1
- package/build/ts/proof/generate.js +4 -4
- package/build/ts/proof/generate.js.map +1 -1
- package/build/ts/proof/prove.js +10 -10
- package/build/ts/proof/prove.js.map +1 -1
- package/build/ts/proof/types.d.ts +3 -3
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/relayer/__tests__/messages.test.js +1 -1
- package/build/ts/relayer/__tests__/messages.test.js.map +1 -1
- package/build/ts/relayer/__tests__/utils.test.js +3 -3
- package/build/ts/relayer/__tests__/utils.test.js.map +1 -1
- package/build/ts/relayer/messages.js +1 -1
- package/build/ts/relayer/utils.js +1 -1
- package/build/ts/relayer/utils.js.map +1 -1
- package/build/ts/tally/commitments.js +2 -2
- package/build/ts/tally/commitments.js.map +1 -1
- package/build/ts/tally/index.d.ts +2 -1
- package/build/ts/tally/index.d.ts.map +1 -1
- package/build/ts/tally/index.js +4 -1
- package/build/ts/tally/index.js.map +1 -1
- package/build/ts/tally/results.d.ts +14 -0
- package/build/ts/tally/results.d.ts.map +1 -0
- package/build/ts/tally/results.js +44 -0
- package/build/ts/tally/results.js.map +1 -0
- package/build/ts/tally/types.d.ts +33 -7
- package/build/ts/tally/types.d.ts.map +1 -1
- package/build/ts/tally/utils.js +3 -3
- package/build/ts/tally/utils.js.map +1 -1
- package/build/ts/tally/verification.d.ts +1 -1
- package/build/ts/tally/verification.d.ts.map +1 -1
- package/build/ts/tally/verification.js +4 -4
- package/build/ts/tally/verification.js.map +1 -1
- package/build/ts/trees/stateTree.js +7 -7
- package/build/ts/trees/stateTree.js.map +1 -1
- package/build/ts/trees/types.d.ts +2 -2
- package/build/ts/trees/types.d.ts.map +1 -1
- package/build/ts/user/joinPoll.js +9 -9
- package/build/ts/user/joinPoll.js.map +1 -1
- package/build/ts/user/signup.d.ts +3 -3
- package/build/ts/user/signup.d.ts.map +1 -1
- package/build/ts/user/signup.js +8 -8
- package/build/ts/user/signup.js.map +1 -1
- package/build/ts/user/types.d.ts +12 -12
- package/build/ts/user/types.d.ts.map +1 -1
- package/build/ts/user/utils.d.ts +12 -12
- package/build/ts/user/utils.d.ts.map +1 -1
- package/build/ts/user/utils.js +26 -26
- package/build/ts/user/utils.js.map +1 -1
- package/build/ts/utils/proofs.d.ts +2 -2
- package/build/ts/utils/proofs.d.ts.map +1 -1
- package/build/ts/utils/proofs.js +4 -4
- package/build/ts/utils/proofs.js.map +1 -1
- package/build/ts/utils/types.d.ts +1 -1
- package/build/ts/utils/types.d.ts.map +1 -1
- package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts +1 -1
- package/build/ts/verifyingKeys/checkVerifyingKeys.d.ts.map +1 -1
- package/build/ts/verifyingKeys/checkVerifyingKeys.js +13 -13
- package/build/ts/verifyingKeys/checkVerifyingKeys.js.map +1 -1
- package/build/ts/verifyingKeys/index.d.ts +2 -2
- package/build/ts/verifyingKeys/index.d.ts.map +1 -1
- package/build/ts/verifyingKeys/index.js +5 -5
- package/build/ts/verifyingKeys/index.js.map +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.d.ts +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.d.ts.map +1 -1
- package/build/ts/verifyingKeys/setVerifyingKeys.js +43 -33
- package/build/ts/verifyingKeys/setVerifyingKeys.js.map +1 -1
- package/build/ts/verifyingKeys/types.d.ts +36 -32
- package/build/ts/verifyingKeys/types.d.ts.map +1 -1
- package/build/ts/verifyingKeys/utils.d.ts +10 -10
- package/build/ts/verifyingKeys/utils.d.ts.map +1 -1
- package/build/ts/verifyingKeys/utils.js +73 -60
- package/build/ts/verifyingKeys/utils.js.map +1 -1
- package/build/ts/vote/generate.d.ts +1 -1
- package/build/ts/vote/generate.d.ts.map +1 -1
- package/build/ts/vote/generate.js +4 -4
- package/build/ts/vote/generate.js.map +1 -1
- package/build/ts/vote/index.d.ts +1 -1
- package/build/ts/vote/index.d.ts.map +1 -1
- package/build/ts/vote/index.js +2 -2
- package/build/ts/vote/index.js.map +1 -1
- package/build/ts/vote/invalidate.js +3 -3
- package/build/ts/vote/invalidate.js.map +1 -1
- package/build/ts/vote/publish.d.ts +1 -1
- package/build/ts/vote/publish.d.ts.map +1 -1
- package/build/ts/vote/publish.js +19 -19
- package/build/ts/vote/publish.js.map +1 -1
- package/build/ts/vote/submit.js +2 -2
- package/build/ts/vote/submit.js.map +1 -1
- package/build/ts/vote/types.d.ts +6 -6
- package/build/ts/vote/types.d.ts.map +1 -1
- package/build/ts/vote/utils.d.ts +2 -2
- package/build/ts/vote/utils.d.ts.map +1 -1
- package/build/ts/vote/utils.js +5 -5
- package/build/ts/vote/utils.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +16 -8
- package/build/ts/deploy/vkRegistry.d.ts +0 -7
- package/build/ts/deploy/vkRegistry.d.ts.map +0 -1
- package/build/ts/deploy/vkRegistry.js +0 -14
- package/build/ts/deploy/vkRegistry.js.map +0 -1
package/build/ts/user/utils.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PrivateKey, PublicKey } from "@maci-protocol/domainobjs";
|
|
2
2
|
import type { IGetPollJoiningCircuitEventsArgs, IGetPollJoiningCircuitInputsFromStateFileArgs, IParsePollJoinEventsArgs, IParseSignupEventsArgs, IPollJoiningCircuitInputs, IJoinedUserArgs, IIsNullifierOnChainArgs } from "./types";
|
|
3
3
|
import type { IGenerateSignUpTree } from "../trees/types";
|
|
4
|
-
import type {
|
|
4
|
+
import type { TCircuitInputs } from "../utils/types";
|
|
5
5
|
/**
|
|
6
6
|
* Parse the poll joining events from the Poll contract
|
|
7
7
|
*/
|
|
@@ -14,7 +14,7 @@ export declare const parsePollJoinEvents: ({ pollContract, startBlock, currentBl
|
|
|
14
14
|
* @param {IJoinedUserArgs} - The arguments for the join check command
|
|
15
15
|
* @returns user joined or not and poll state index, voice credit balance
|
|
16
16
|
*/
|
|
17
|
-
export declare const getJoinedUserData: ({ maciAddress, pollId,
|
|
17
|
+
export declare const getJoinedUserData: ({ maciAddress, pollId, pollPublicKey: serializedPollPublicKey, signer, startBlock, }: IJoinedUserArgs) => Promise<{
|
|
18
18
|
isJoined: boolean;
|
|
19
19
|
pollStateIndex?: string;
|
|
20
20
|
voiceCredits?: string;
|
|
@@ -33,30 +33,30 @@ export declare const parseSignupEvents: ({ maciContract, startBlock, currentBloc
|
|
|
33
33
|
}>;
|
|
34
34
|
/**
|
|
35
35
|
* Get state index from maci state leaves or from sign up leaves
|
|
36
|
-
* @param
|
|
37
|
-
* @param
|
|
36
|
+
* @param publicKeys Public keys from maci state or sign up tree
|
|
37
|
+
* @param userMaciPublicKey Public key of the maci user
|
|
38
38
|
* @param stateIndex State index from the command
|
|
39
39
|
* @returns State index
|
|
40
40
|
*/
|
|
41
|
-
export declare const getStateIndex: (
|
|
41
|
+
export declare const getStateIndex: (publicKeys: PublicKey[], userMaciPublicKey: PublicKey, stateIndex?: bigint) => bigint | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* Create circuit input for pollJoining
|
|
44
44
|
* @param signUpData Sign up tree and state leaves
|
|
45
45
|
* @param stateTreeDepth Maci state tree depth
|
|
46
|
-
* @param
|
|
46
|
+
* @param maciPrivateKey User's private key for signing up
|
|
47
47
|
* @param stateLeafIndex Index where the user is stored in the state leaves
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
48
|
+
* @param pollPrivateKey Poll's private key for the poll joining
|
|
49
|
+
* @param pollPublicKey Poll's public key for the poll joining
|
|
50
50
|
* @param pollId Poll's id
|
|
51
51
|
* @returns stringified circuit inputs
|
|
52
52
|
*/
|
|
53
|
-
export declare const joiningCircuitInputs: (signUpData: IGenerateSignUpTree, stateTreeDepth: bigint,
|
|
53
|
+
export declare const joiningCircuitInputs: (signUpData: IGenerateSignUpTree, stateTreeDepth: bigint, maciPrivateKey: PrivateKey, stateLeafIndex: bigint, pollPublicKey: PublicKey, pollId: bigint) => IPollJoiningCircuitInputs;
|
|
54
54
|
/**
|
|
55
55
|
* Get the poll joining circuit inputs from a state file
|
|
56
56
|
* @param stateFile - The path to the state file
|
|
57
57
|
* @returns The poll joining circuit inputs
|
|
58
58
|
*/
|
|
59
|
-
export declare const getPollJoiningCircuitInputsFromStateFile: ({ stateFile, pollId, stateIndex,
|
|
59
|
+
export declare const getPollJoiningCircuitInputsFromStateFile: ({ stateFile, pollId, stateIndex, userMaciPrivateKey, }: IGetPollJoiningCircuitInputsFromStateFileArgs) => Promise<TCircuitInputs>;
|
|
60
60
|
/**
|
|
61
61
|
* Get the poll joining circuit events from a state file
|
|
62
62
|
* @param maciContract - The MACI contract
|
|
@@ -64,5 +64,5 @@ export declare const getPollJoiningCircuitInputsFromStateFile: ({ stateFile, pol
|
|
|
64
64
|
* @param signer - The signer
|
|
65
65
|
* @returns The poll joining circuit events
|
|
66
66
|
*/
|
|
67
|
-
export declare const getPollJoiningCircuitEvents: ({ maciContract, stateIndex, pollId,
|
|
67
|
+
export declare const getPollJoiningCircuitEvents: ({ maciContract, stateIndex, pollId, userMaciPrivateKey, signer, startBlock, endBlock, blocksPerBatch, }: IGetPollJoiningCircuitEventsArgs) => Promise<TCircuitInputs>;
|
|
68
68
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAI3E,OAAO,KAAK,EACV,gCAAgC,EAChC,6CAA6C,EAC7C,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAU,4DAKvC,wBAAwB,KAAG,OAAO,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAyBA,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAU,sFAMrC,eAAe,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBjG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAU,6CAKrC,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAM3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAU,wDAKrC,sBAAsB,KAAG,OAAO,CAAC;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAsB1D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,YAAY,SAAS,EAAE,EACvB,mBAAmB,SAAS,EAC5B,aAAa,MAAM,KAClB,MAAM,GAAG,SAYX,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,mBAAmB,EAC/B,gBAAgB,MAAM,EACtB,gBAAgB,UAAU,EAC1B,gBAAgB,MAAM,EACtB,eAAe,SAAS,EACxB,QAAQ,MAAM,KACb,yBAiDF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wCAAwC,GAAU,wDAK5D,6CAA6C,KAAG,OAAO,CAAC,cAAc,CAwBxE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,GAAU,yGAS/C,gCAAgC,KAAG,OAAO,CAAC,cAAc,CAsC3D,CAAC"}
|
package/build/ts/user/utils.js
CHANGED
|
@@ -17,9 +17,9 @@ const constants_1 = require("../utils/constants");
|
|
|
17
17
|
const parsePollJoinEvents = async ({ pollContract, startBlock, currentBlock, pollPublicKey, }) => {
|
|
18
18
|
for (let block = startBlock; block <= currentBlock; block += constants_1.BLOCKS_STEP) {
|
|
19
19
|
const toBlock = Math.min(block + constants_1.BLOCKS_STEP - 1, currentBlock);
|
|
20
|
-
const
|
|
20
|
+
const publicKey = pollPublicKey.asArray();
|
|
21
21
|
// eslint-disable-next-line no-await-in-loop
|
|
22
|
-
const newEvents = await pollContract.queryFilter(pollContract.filters.PollJoined(
|
|
22
|
+
const newEvents = await pollContract.queryFilter(pollContract.filters.PollJoined(publicKey[0], publicKey[1], undefined, undefined, undefined), block, toBlock);
|
|
23
23
|
if (newEvents.length > 0) {
|
|
24
24
|
const [event] = newEvents;
|
|
25
25
|
return {
|
|
@@ -39,11 +39,11 @@ exports.parsePollJoinEvents = parsePollJoinEvents;
|
|
|
39
39
|
* @param {IJoinedUserArgs} - The arguments for the join check command
|
|
40
40
|
* @returns user joined or not and poll state index, voice credit balance
|
|
41
41
|
*/
|
|
42
|
-
const getJoinedUserData = async ({ maciAddress, pollId,
|
|
42
|
+
const getJoinedUserData = async ({ maciAddress, pollId, pollPublicKey: serializedPollPublicKey, signer, startBlock, }) => {
|
|
43
43
|
const maciContract = typechain_types_1.MACI__factory.connect(maciAddress, signer);
|
|
44
44
|
const pollContracts = await maciContract.getPoll(pollId);
|
|
45
45
|
const pollContract = typechain_types_1.Poll__factory.connect(pollContracts.poll, signer);
|
|
46
|
-
const pollPublicKey = domainobjs_1.
|
|
46
|
+
const pollPublicKey = domainobjs_1.PublicKey.deserialize(serializedPollPublicKey);
|
|
47
47
|
const startBlockNumber = startBlock || 0;
|
|
48
48
|
const currentBlock = await signer.provider.getBlockNumber();
|
|
49
49
|
const { pollStateIndex, voiceCredits } = await (0, exports.parsePollJoinEvents)({
|
|
@@ -78,7 +78,7 @@ const parseSignupEvents = async ({ maciContract, startBlock, currentBlock, publi
|
|
|
78
78
|
for (let block = startBlock; block <= currentBlock; block += constants_1.BLOCKS_STEP) {
|
|
79
79
|
const toBlock = Math.min(block + constants_1.BLOCKS_STEP - 1, currentBlock);
|
|
80
80
|
// eslint-disable-next-line no-await-in-loop
|
|
81
|
-
const newEvents = await maciContract.queryFilter(maciContract.filters.SignUp(undefined, undefined, publicKey.
|
|
81
|
+
const newEvents = await maciContract.queryFilter(maciContract.filters.SignUp(undefined, undefined, publicKey.raw[0], publicKey.raw[1]), block, toBlock);
|
|
82
82
|
if (newEvents.length > 0) {
|
|
83
83
|
const [event] = newEvents;
|
|
84
84
|
return {
|
|
@@ -93,14 +93,14 @@ const parseSignupEvents = async ({ maciContract, startBlock, currentBlock, publi
|
|
|
93
93
|
exports.parseSignupEvents = parseSignupEvents;
|
|
94
94
|
/**
|
|
95
95
|
* Get state index from maci state leaves or from sign up leaves
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
96
|
+
* @param publicKeys Public keys from maci state or sign up tree
|
|
97
|
+
* @param userMaciPublicKey Public key of the maci user
|
|
98
98
|
* @param stateIndex State index from the command
|
|
99
99
|
* @returns State index
|
|
100
100
|
*/
|
|
101
|
-
const getStateIndex = (
|
|
101
|
+
const getStateIndex = (publicKeys, userMaciPublicKey, stateIndex) => {
|
|
102
102
|
if (!stateIndex) {
|
|
103
|
-
const index =
|
|
103
|
+
const index = publicKeys.findIndex((key) => key.equals(userMaciPublicKey));
|
|
104
104
|
if (index > 0) {
|
|
105
105
|
return BigInt(index);
|
|
106
106
|
}
|
|
@@ -113,14 +113,14 @@ exports.getStateIndex = getStateIndex;
|
|
|
113
113
|
* Create circuit input for pollJoining
|
|
114
114
|
* @param signUpData Sign up tree and state leaves
|
|
115
115
|
* @param stateTreeDepth Maci state tree depth
|
|
116
|
-
* @param
|
|
116
|
+
* @param maciPrivateKey User's private key for signing up
|
|
117
117
|
* @param stateLeafIndex Index where the user is stored in the state leaves
|
|
118
|
-
* @param
|
|
119
|
-
* @param
|
|
118
|
+
* @param pollPrivateKey Poll's private key for the poll joining
|
|
119
|
+
* @param pollPublicKey Poll's public key for the poll joining
|
|
120
120
|
* @param pollId Poll's id
|
|
121
121
|
* @returns stringified circuit inputs
|
|
122
122
|
*/
|
|
123
|
-
const joiningCircuitInputs = (signUpData, stateTreeDepth,
|
|
123
|
+
const joiningCircuitInputs = (signUpData, stateTreeDepth, maciPrivateKey, stateLeafIndex, pollPublicKey, pollId) => {
|
|
124
124
|
// Get the state leaf on the index position
|
|
125
125
|
const { signUpTree: stateTree } = signUpData;
|
|
126
126
|
// calculate the path elements for the state tree given the original state tree
|
|
@@ -140,7 +140,7 @@ const joiningCircuitInputs = (signUpData, stateTreeDepth, maciPrivKey, stateLeaf
|
|
|
140
140
|
}
|
|
141
141
|
const siblingsArray = siblings.map((sibling) => [sibling]);
|
|
142
142
|
// Create nullifier from private key
|
|
143
|
-
const inputNullifier = BigInt(
|
|
143
|
+
const inputNullifier = BigInt(maciPrivateKey.asCircuitInputs());
|
|
144
144
|
const nullifier = (0, crypto_1.poseidon)([inputNullifier, pollId]);
|
|
145
145
|
// Get pll state tree's root
|
|
146
146
|
const stateRoot = stateTree.root;
|
|
@@ -148,8 +148,8 @@ const joiningCircuitInputs = (signUpData, stateTreeDepth, maciPrivKey, stateLeaf
|
|
|
148
148
|
const actualStateTreeDepth = BigInt(siblingsLength);
|
|
149
149
|
// Calculate public input hash from nullifier, credits and current root
|
|
150
150
|
const circuitInputs = {
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
privateKey: maciPrivateKey.asCircuitInputs(),
|
|
152
|
+
pollPublicKey: pollPublicKey.asCircuitInputs(),
|
|
153
153
|
siblings: siblingsArray,
|
|
154
154
|
indices,
|
|
155
155
|
nullifier,
|
|
@@ -165,22 +165,22 @@ exports.joiningCircuitInputs = joiningCircuitInputs;
|
|
|
165
165
|
* @param stateFile - The path to the state file
|
|
166
166
|
* @returns The poll joining circuit inputs
|
|
167
167
|
*/
|
|
168
|
-
const getPollJoiningCircuitInputsFromStateFile = async ({ stateFile, pollId, stateIndex,
|
|
168
|
+
const getPollJoiningCircuitInputsFromStateFile = async ({ stateFile, pollId, stateIndex, userMaciPrivateKey, }) => {
|
|
169
169
|
const file = await fs_1.default.promises.readFile(stateFile);
|
|
170
170
|
const content = JSON.parse(file.toString());
|
|
171
171
|
const maciState = core_1.MaciState.fromJSON(content);
|
|
172
172
|
const poll = maciState.polls.get(pollId);
|
|
173
|
-
const {
|
|
174
|
-
const loadedStateIndex = (0, exports.getStateIndex)(maciState.
|
|
173
|
+
const { publicKey: userPublicKey } = new domainobjs_1.Keypair(userMaciPrivateKey);
|
|
174
|
+
const loadedStateIndex = (0, exports.getStateIndex)(maciState.publicKeys, userPublicKey, stateIndex);
|
|
175
175
|
// check < 1 cause index zero is a blank state leaf
|
|
176
176
|
if (loadedStateIndex < 1) {
|
|
177
177
|
throw new Error("Invalid state index");
|
|
178
178
|
}
|
|
179
|
-
poll.updatePoll(BigInt(maciState.
|
|
179
|
+
poll.updatePoll(BigInt(maciState.publicKeys.length));
|
|
180
180
|
const circuitInputs = poll.joiningCircuitInputs({
|
|
181
|
-
|
|
181
|
+
maciPrivateKey: userMaciPrivateKey,
|
|
182
182
|
stateLeafIndex: stateIndex,
|
|
183
|
-
|
|
183
|
+
pollPublicKey: userPublicKey,
|
|
184
184
|
});
|
|
185
185
|
return circuitInputs;
|
|
186
186
|
};
|
|
@@ -192,7 +192,7 @@ exports.getPollJoiningCircuitInputsFromStateFile = getPollJoiningCircuitInputsFr
|
|
|
192
192
|
* @param signer - The signer
|
|
193
193
|
* @returns The poll joining circuit events
|
|
194
194
|
*/
|
|
195
|
-
const getPollJoiningCircuitEvents = async ({ maciContract, stateIndex, pollId,
|
|
195
|
+
const getPollJoiningCircuitEvents = async ({ maciContract, stateIndex, pollId, userMaciPrivateKey, signer, startBlock, endBlock, blocksPerBatch, }) => {
|
|
196
196
|
// build an off-chain representation of the MACI contract using data in the contract storage
|
|
197
197
|
const [defaultStartBlockSignup, defaultStartBlockPoll, stateTreeDepth] = await Promise.all([
|
|
198
198
|
maciContract
|
|
@@ -213,12 +213,12 @@ const getPollJoiningCircuitEvents = async ({ maciContract, stateIndex, pollId, u
|
|
|
213
213
|
endBlock,
|
|
214
214
|
sleepAmount: 0,
|
|
215
215
|
});
|
|
216
|
-
const {
|
|
217
|
-
const loadedStateIndex = (0, exports.getStateIndex)(signUpData.
|
|
216
|
+
const { publicKey: userPublicKey } = new domainobjs_1.Keypair(userMaciPrivateKey);
|
|
217
|
+
const loadedStateIndex = (0, exports.getStateIndex)(signUpData.publicKeys, userPublicKey, stateIndex);
|
|
218
218
|
if (loadedStateIndex < 1) {
|
|
219
219
|
throw new Error("Invalid state index");
|
|
220
220
|
}
|
|
221
|
-
return (0, exports.joiningCircuitInputs)(signUpData, stateTreeDepth,
|
|
221
|
+
return (0, exports.joiningCircuitInputs)(signUpData, stateTreeDepth, userMaciPrivateKey, stateIndex, userPublicKey, pollId);
|
|
222
222
|
};
|
|
223
223
|
exports.getPollJoiningCircuitEvents = getPollJoiningCircuitEvents;
|
|
224
224
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":";;;;;;AAAA,8EAAsH;AACtH,8CAAgE;AAChE,kDAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/user/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TCircuitInputs } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Generate and verify poll proof
|
|
4
4
|
* @param inputs - the inputs to the circuit
|
|
@@ -9,5 +9,5 @@ import type { CircuitInputs } from "./types";
|
|
|
9
9
|
* @param wasmPath - the path to the wasm witness
|
|
10
10
|
* @returns proof - an array of strings
|
|
11
11
|
*/
|
|
12
|
-
export declare const generateAndVerifyProof: (inputs:
|
|
12
|
+
export declare const generateAndVerifyProof: (inputs: TCircuitInputs, zkeyPath: string, useWasm: boolean | undefined, rapidsnarkExePath: string | undefined, witnessExePath: string | undefined, wasmPath: string | undefined) => Promise<string[]>;
|
|
13
13
|
//# sourceMappingURL=proofs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofs.d.ts","sourceRoot":"","sources":["../../../ts/utils/proofs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"proofs.d.ts","sourceRoot":"","sources":["../../../ts/utils/proofs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,cAAc,EACtB,UAAU,MAAM,EAChB,SAAS,OAAO,GAAG,SAAS,EAC5B,mBAAmB,MAAM,GAAG,SAAS,EACrC,gBAAgB,MAAM,GAAG,SAAS,EAClC,UAAU,MAAM,GAAG,SAAS,KAC3B,OAAO,CAAC,MAAM,EAAE,CA4BlB,CAAC"}
|
package/build/ts/utils/proofs.js
CHANGED
|
@@ -14,16 +14,16 @@ const contracts_1 = require("@maci-protocol/contracts");
|
|
|
14
14
|
*/
|
|
15
15
|
const generateAndVerifyProof = async (inputs, zkeyPath, useWasm, rapidsnarkExePath, witnessExePath, wasmPath) => {
|
|
16
16
|
let r;
|
|
17
|
-
const
|
|
17
|
+
const verifyingKey = await (0, contracts_1.extractVerifyingKey)(zkeyPath);
|
|
18
18
|
if (useWasm === true || useWasm === undefined) {
|
|
19
|
-
r = await (0, contracts_1.
|
|
19
|
+
r = await (0, contracts_1.generateProofSnarkjs)({
|
|
20
20
|
inputs,
|
|
21
21
|
zkeyPath,
|
|
22
22
|
wasmPath,
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
|
-
r = await (0, contracts_1.
|
|
26
|
+
r = await (0, contracts_1.generateProofRapidSnark)({
|
|
27
27
|
inputs,
|
|
28
28
|
zkeyPath,
|
|
29
29
|
rapidsnarkExePath,
|
|
@@ -31,7 +31,7 @@ const generateAndVerifyProof = async (inputs, zkeyPath, useWasm, rapidsnarkExePa
|
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
// verify it
|
|
34
|
-
const isValid = await (0, contracts_1.verifyProof)(r.publicSignals, r.proof,
|
|
34
|
+
const isValid = await (0, contracts_1.verifyProof)(r.publicSignals, r.proof, verifyingKey);
|
|
35
35
|
if (!isValid) {
|
|
36
36
|
throw new Error("Generated an invalid proof");
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../../ts/utils/proofs.ts"],"names":[],"mappings":";;;AAAA,wDAOkC;AAIlC;;;;;;;;;GASG;AACI,MAAM,sBAAsB,GAAG,KAAK,EACzC,
|
|
1
|
+
{"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../../ts/utils/proofs.ts"],"names":[],"mappings":";;;AAAA,wDAOkC;AAIlC;;;;;;;;;GASG;AACI,MAAM,sBAAsB,GAAG,KAAK,EACzC,MAAsB,EACtB,QAAgB,EAChB,OAA4B,EAC5B,iBAAqC,EACrC,cAAkC,EAClC,QAA4B,EACT,EAAE;IACrB,IAAI,CAAkB,CAAC;IAEvB,MAAM,YAAY,GAAG,MAAM,IAAA,+BAAmB,EAAC,QAAQ,CAAC,CAAC;IAEzD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9C,CAAC,GAAG,MAAM,IAAA,gCAAoB,EAAC;YAC7B,MAAM;YACN,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,MAAM,IAAA,mCAAuB,EAAC;YAChC,MAAM;YACN,QAAQ;YACR,iBAAiB;YACjB,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IACZ,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAW,EAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAE1E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAA,0CAA8B,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC,CAAC;AAnCW,QAAA,sBAAsB,0BAmCjC"}
|
|
@@ -2,7 +2,7 @@ import type { BigNumberish, Signer } from "ethers";
|
|
|
2
2
|
/**
|
|
3
3
|
* A circuit inputs for the circom circuit
|
|
4
4
|
*/
|
|
5
|
-
export type
|
|
5
|
+
export type TCircuitInputs = Record<string, string | bigint | bigint[] | bigint[][] | string[] | bigint[][][]>;
|
|
6
6
|
/**
|
|
7
7
|
* Circuit parameters
|
|
8
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/G;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC;IAC7B,eAAe,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IACpC,EAAE,EAAE,YAAY,EAAE,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -6,5 +6,5 @@ import type { ICheckVerifyingKeysArgs } from "./types";
|
|
|
6
6
|
* @param CheckVerifyingKeysArgs - The arguments for the checkVerifyingKeys command
|
|
7
7
|
* @returns Whether the verifying keys match or not
|
|
8
8
|
*/
|
|
9
|
-
export declare const checkVerifyingKeys: ({ stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, processMessagesZkeyPath, tallyVotesZkeyPath, pollJoiningZkeyPath, pollJoinedZkeyPath,
|
|
9
|
+
export declare const checkVerifyingKeys: ({ stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, processMessagesZkeyPath, tallyVotesZkeyPath, pollJoiningZkeyPath, pollJoinedZkeyPath, verifyingKeysRegistry, signer, useQuadraticVoting, }: ICheckVerifyingKeysArgs) => Promise<boolean>;
|
|
10
10
|
//# sourceMappingURL=checkVerifyingKeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkVerifyingKeys.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/checkVerifyingKeys.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAMvD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,
|
|
1
|
+
{"version":3,"file":"checkVerifyingKeys.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/checkVerifyingKeys.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAMvD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,wNAYtC,uBAAuB,KAAG,OAAO,CAAC,OAAO,CAmE3C,CAAC"}
|
|
@@ -15,13 +15,13 @@ const utils_2 = require("./utils");
|
|
|
15
15
|
* @param CheckVerifyingKeysArgs - The arguments for the checkVerifyingKeys command
|
|
16
16
|
* @returns Whether the verifying keys match or not
|
|
17
17
|
*/
|
|
18
|
-
const checkVerifyingKeys = async ({ stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, processMessagesZkeyPath, tallyVotesZkeyPath, pollJoiningZkeyPath, pollJoinedZkeyPath,
|
|
19
|
-
if (!
|
|
20
|
-
throw new Error("Please provide a
|
|
18
|
+
const checkVerifyingKeys = async ({ stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, processMessagesZkeyPath, tallyVotesZkeyPath, pollJoiningZkeyPath, pollJoinedZkeyPath, verifyingKeysRegistry, signer, useQuadraticVoting = true, }) => {
|
|
19
|
+
if (!verifyingKeysRegistry) {
|
|
20
|
+
throw new Error("Please provide a VerifyingKeysRegistry contract address");
|
|
21
21
|
}
|
|
22
|
-
const
|
|
23
|
-
if (!
|
|
24
|
-
throw new Error("The
|
|
22
|
+
const isVerifyingKeyExists = await (0, utils_1.contractExists)(signer.provider, verifyingKeysRegistry);
|
|
23
|
+
if (!isVerifyingKeyExists) {
|
|
24
|
+
throw new Error("The VerifyingKeysRegistry contract does not exist");
|
|
25
25
|
}
|
|
26
26
|
// we need to ensure that the zkey files exist
|
|
27
27
|
const isProcessMessagesZkeyPathExists = fs_1.default.existsSync(processMessagesZkeyPath);
|
|
@@ -33,15 +33,15 @@ const checkVerifyingKeys = async ({ stateTreeDepth, intStateTreeDepth, voteOptio
|
|
|
33
33
|
throw new Error("The provided Tally votes zkey does not exist");
|
|
34
34
|
}
|
|
35
35
|
// extract the verification keys from the zkey files
|
|
36
|
-
const {
|
|
36
|
+
const { pollJoiningVerifyingKey, pollJoinedVerifyingKey, processVerifyingKey, tallyVerifyingKey } = await (0, utils_2.extractAllVerifyingKeys)({
|
|
37
37
|
processMessagesZkeyPath,
|
|
38
38
|
tallyVotesZkeyPath,
|
|
39
39
|
pollJoiningZkeyPath,
|
|
40
40
|
pollJoinedZkeyPath,
|
|
41
41
|
});
|
|
42
42
|
const mode = useQuadraticVoting ? contracts_1.EMode.QV : contracts_1.EMode.NON_QV;
|
|
43
|
-
const {
|
|
44
|
-
|
|
43
|
+
const { pollJoiningVerifyingKeyOnChain, pollJoinedVerifyingKeyOnChain, processVerifyingKeyOnChain, tallyVerifyingKeyOnChain, } = await (0, utils_2.getAllOnChainVerifyingKeys)({
|
|
44
|
+
verifyingKeysRegistryAddress: verifyingKeysRegistry,
|
|
45
45
|
signer,
|
|
46
46
|
stateTreeDepth,
|
|
47
47
|
voteOptionTreeDepth,
|
|
@@ -49,16 +49,16 @@ const checkVerifyingKeys = async ({ stateTreeDepth, intStateTreeDepth, voteOptio
|
|
|
49
49
|
intStateTreeDepth,
|
|
50
50
|
mode,
|
|
51
51
|
});
|
|
52
|
-
if (!(0, utils_2.
|
|
52
|
+
if (!(0, utils_2.compareVerifyingKeys)(pollJoiningVerifyingKeyOnChain, pollJoiningVerifyingKey)) {
|
|
53
53
|
throw new Error("Poll verifying keys do not match");
|
|
54
54
|
}
|
|
55
|
-
if (!(0, utils_2.
|
|
55
|
+
if (!(0, utils_2.compareVerifyingKeys)(pollJoinedVerifyingKeyOnChain, pollJoinedVerifyingKey)) {
|
|
56
56
|
throw new Error("Poll verifying keys do not match");
|
|
57
57
|
}
|
|
58
|
-
if (!(0, utils_2.
|
|
58
|
+
if (!(0, utils_2.compareVerifyingKeys)(processVerifyingKeyOnChain, processVerifyingKey)) {
|
|
59
59
|
throw new Error("Process verifying keys do not match");
|
|
60
60
|
}
|
|
61
|
-
if (!(0, utils_2.
|
|
61
|
+
if (!(0, utils_2.compareVerifyingKeys)(tallyVerifyingKeyOnChain, tallyVerifyingKey)) {
|
|
62
62
|
throw new Error("Tally verifying keys do not match");
|
|
63
63
|
}
|
|
64
64
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkVerifyingKeys.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/checkVerifyingKeys.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiD;AAEjD,4CAAoB;AAIpB,oCAA0C;AAE1C,
|
|
1
|
+
{"version":3,"file":"checkVerifyingKeys.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/checkVerifyingKeys.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiD;AAEjD,4CAAoB;AAIpB,oCAA0C;AAE1C,mCAAoG;AAEpG;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,KAAK,EAAE,EACvC,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,MAAM,EACN,kBAAkB,GAAG,IAAI,GACD,EAAoB,EAAE;IAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAM,IAAA,sBAAc,EAAC,MAAM,CAAC,QAAS,EAAE,qBAAqB,CAAC,CAAC;IAE3F,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,8CAA8C;IAC9C,MAAM,+BAA+B,GAAG,YAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAE/E,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,0BAA0B,GAAG,YAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,oDAAoD;IACpD,MAAM,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAC/F,MAAM,IAAA,+BAAuB,EAAC;QAC5B,uBAAuB;QACvB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;KACnB,CAAC,CAAC;IAEL,MAAM,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,iBAAK,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAK,CAAC,MAAM,CAAC;IAE1D,MAAM,EACJ,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,wBAAwB,GACzB,GAAG,MAAM,IAAA,kCAA0B,EAAC;QACnC,4BAA4B,EAAE,qBAAqB;QACnD,MAAM;QACN,cAAc;QACd,mBAAmB;QACnB,gBAAgB;QAChB,iBAAiB;QACjB,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,CAAC,IAAA,4BAAoB,EAAC,8BAA8B,EAAE,uBAAuB,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,IAAA,4BAAoB,EAAC,6BAA6B,EAAE,sBAAsB,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,CAAC,IAAA,4BAAoB,EAAC,0BAA0B,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,IAAA,4BAAoB,EAAC,wBAAwB,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA/EW,QAAA,kBAAkB,sBA+E7B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { checkVerifyingKeys } from "./checkVerifyingKeys";
|
|
2
2
|
export { setVerifyingKeys } from "./setVerifyingKeys";
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
3
|
+
export { getAllOnChainVerifyingKeys, compareVerifyingKeys, extractAllVerifyingKeys, extractVerifyingKeyToFile, } from "./utils";
|
|
4
|
+
export type { IGetAllVerifyingKeysArgs, IMaciVerifyingKeysOnchain, IExtractAllVerifyingKeysArgs, IMaciVerifyingKeys, ISetVerifyingKeysArgs, ICheckVerifyingKeysArgs, } from "./types";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,4BAA4B,EAC5B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,SAAS,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.extractVerifyingKeyToFile = exports.extractAllVerifyingKeys = exports.compareVerifyingKeys = exports.getAllOnChainVerifyingKeys = exports.setVerifyingKeys = exports.checkVerifyingKeys = void 0;
|
|
4
4
|
var checkVerifyingKeys_1 = require("./checkVerifyingKeys");
|
|
5
5
|
Object.defineProperty(exports, "checkVerifyingKeys", { enumerable: true, get: function () { return checkVerifyingKeys_1.checkVerifyingKeys; } });
|
|
6
6
|
var setVerifyingKeys_1 = require("./setVerifyingKeys");
|
|
7
7
|
Object.defineProperty(exports, "setVerifyingKeys", { enumerable: true, get: function () { return setVerifyingKeys_1.setVerifyingKeys; } });
|
|
8
8
|
var utils_1 = require("./utils");
|
|
9
|
-
Object.defineProperty(exports, "
|
|
10
|
-
Object.defineProperty(exports, "
|
|
11
|
-
Object.defineProperty(exports, "
|
|
12
|
-
Object.defineProperty(exports, "
|
|
9
|
+
Object.defineProperty(exports, "getAllOnChainVerifyingKeys", { enumerable: true, get: function () { return utils_1.getAllOnChainVerifyingKeys; } });
|
|
10
|
+
Object.defineProperty(exports, "compareVerifyingKeys", { enumerable: true, get: function () { return utils_1.compareVerifyingKeys; } });
|
|
11
|
+
Object.defineProperty(exports, "extractAllVerifyingKeys", { enumerable: true, get: function () { return utils_1.extractAllVerifyingKeys; } });
|
|
12
|
+
Object.defineProperty(exports, "extractVerifyingKeyToFile", { enumerable: true, get: function () { return utils_1.extractVerifyingKeyToFile; } });
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/index.ts"],"names":[],"mappings":";;;AAAA,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,iCAKiB;AAJf,mHAAA,0BAA0B,OAAA;AAC1B,6GAAA,oBAAoB,OAAA;AACpB,gHAAA,uBAAuB,OAAA;AACvB,kHAAA,yBAAyB,OAAA"}
|
|
@@ -3,5 +3,5 @@ import type { ISetVerifyingKeysArgs } from "./types";
|
|
|
3
3
|
* Set the verifying keys on the contract
|
|
4
4
|
* @param args - The arguments for the setVerifyingKeys function
|
|
5
5
|
*/
|
|
6
|
-
export declare const setVerifyingKeys: ({
|
|
6
|
+
export declare const setVerifyingKeys: ({ pollJoiningVerifyingKey, pollJoinedVerifyingKey, processMessagesVerifyingKey, tallyVotesVerifyingKey, stateTreeDepth, pollStateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, verifyingKeysRegistryAddress, signer, mode, }: ISetVerifyingKeysArgs) => Promise<void>;
|
|
7
7
|
//# sourceMappingURL=setVerifyingKeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setVerifyingKeys.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/setVerifyingKeys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setVerifyingKeys.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/setVerifyingKeys.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAMrD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAU,qPAapC,qBAAqB,KAAG,OAAO,CAAC,IAAI,CAsGtC,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setVerifyingKeys = void 0;
|
|
4
|
-
const contracts_1 = require("@maci-protocol/contracts");
|
|
5
4
|
const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
|
|
6
5
|
const core_1 = require("@maci-protocol/core");
|
|
7
6
|
const utils_1 = require("../utils");
|
|
@@ -10,7 +9,7 @@ const utils_2 = require("./utils");
|
|
|
10
9
|
* Set the verifying keys on the contract
|
|
11
10
|
* @param args - The arguments for the setVerifyingKeys function
|
|
12
11
|
*/
|
|
13
|
-
const setVerifyingKeys = async ({
|
|
12
|
+
const setVerifyingKeys = async ({ pollJoiningVerifyingKey, pollJoinedVerifyingKey, processMessagesVerifyingKey, tallyVotesVerifyingKey, stateTreeDepth, pollStateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, messageBatchSize, verifyingKeysRegistryAddress, signer, mode, }) => {
|
|
14
13
|
// validate args
|
|
15
14
|
if (stateTreeDepth < 1 || intStateTreeDepth < 1 || voteOptionTreeDepth < 1 || messageBatchSize < 1) {
|
|
16
15
|
throw new Error("Invalid depth or batch size parameters");
|
|
@@ -18,56 +17,67 @@ const setVerifyingKeys = async ({ pollJoiningVk, pollJoinedVk, processMessagesVk
|
|
|
18
17
|
if (stateTreeDepth < intStateTreeDepth) {
|
|
19
18
|
throw new Error("Invalid state tree depth or intermediate state tree depth");
|
|
20
19
|
}
|
|
21
|
-
const
|
|
20
|
+
const isContractExists = await (0, utils_1.contractExists)(signer.provider, verifyingKeysRegistryAddress);
|
|
22
21
|
// ensure we have a contract deployed at the provided address
|
|
23
|
-
if (!
|
|
24
|
-
throw new Error(`A
|
|
22
|
+
if (!isContractExists) {
|
|
23
|
+
throw new Error(`A VerifyingKeysRegistry contract is not deployed at ${verifyingKeysRegistryAddress}`);
|
|
25
24
|
}
|
|
26
|
-
// connect to
|
|
27
|
-
const
|
|
28
|
-
// check if the poll
|
|
29
|
-
const
|
|
30
|
-
if (await
|
|
25
|
+
// connect to VerifyingKeysRegistry contract
|
|
26
|
+
const verifyingKeysRegistryContract = typechain_types_1.VerifyingKeysRegistry__factory.connect(verifyingKeysRegistryAddress, signer);
|
|
27
|
+
// check if the poll verifyingKey was already set
|
|
28
|
+
const pollJoiningVerifyingKeySignature = (0, core_1.generatePollJoiningVerifyingKeySignature)(stateTreeDepth);
|
|
29
|
+
if (await verifyingKeysRegistryContract.isPollJoiningVerifyingKeySet(pollJoiningVerifyingKeySignature)) {
|
|
31
30
|
throw new Error("This poll verifying key is already set in the contract");
|
|
32
31
|
}
|
|
33
|
-
// check if the poll
|
|
34
|
-
const
|
|
35
|
-
if (await
|
|
32
|
+
// check if the poll verifyingKey was already set
|
|
33
|
+
const pollJoinedVerifyingKeySignature = (0, core_1.generatePollJoinedVerifyingKeySignature)(stateTreeDepth);
|
|
34
|
+
if (await verifyingKeysRegistryContract.isPollJoinedVerifyingKeySet(pollJoinedVerifyingKeySignature)) {
|
|
36
35
|
throw new Error("This poll verifying key is already set in the contract");
|
|
37
36
|
}
|
|
38
|
-
// check if the process messages
|
|
39
|
-
const
|
|
40
|
-
if (await
|
|
37
|
+
// check if the process messages verifyingKey was already set
|
|
38
|
+
const processVerifyingKeySignature = (0, core_1.generateProcessVerifyingKeySignature)(stateTreeDepth, voteOptionTreeDepth, messageBatchSize);
|
|
39
|
+
if (await verifyingKeysRegistryContract.isProcessVerifyingKeySet(processVerifyingKeySignature, mode)) {
|
|
41
40
|
throw new Error("This process verifying key is already set in the contract");
|
|
42
41
|
}
|
|
43
|
-
// do the same for the tally votes
|
|
44
|
-
const
|
|
45
|
-
if (await
|
|
42
|
+
// do the same for the tally votes verifyingKey
|
|
43
|
+
const tallyVerifyingKeySignature = (0, core_1.generateTallyVerifyingKeySignature)(stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth);
|
|
44
|
+
if (await verifyingKeysRegistryContract.isTallyVerifyingKeySet(tallyVerifyingKeySignature, mode)) {
|
|
46
45
|
throw new Error("This tally verifying key is already set in the contract");
|
|
47
46
|
}
|
|
48
47
|
// set them onchain
|
|
49
|
-
const tx = await
|
|
48
|
+
const tx = await verifyingKeysRegistryContract.setVerifyingKeysBatch({
|
|
49
|
+
stateTreeDepth,
|
|
50
|
+
pollStateTreeDepth,
|
|
51
|
+
intStateTreeDepth,
|
|
52
|
+
voteOptionTreeDepth,
|
|
53
|
+
messageBatchSize,
|
|
54
|
+
modes: [mode],
|
|
55
|
+
pollJoiningVerifyingKey: pollJoiningVerifyingKey.asContractParam(),
|
|
56
|
+
pollJoinedVerifyingKey: pollJoinedVerifyingKey.asContractParam(),
|
|
57
|
+
processVerifyingKeys: [processMessagesVerifyingKey.asContractParam()],
|
|
58
|
+
tallyVerifyingKeys: [tallyVotesVerifyingKey.asContractParam()],
|
|
59
|
+
});
|
|
50
60
|
const receipt = await tx.wait();
|
|
51
61
|
if (receipt?.status !== 1) {
|
|
52
62
|
throw new Error("Set verifying keys transaction failed");
|
|
53
63
|
}
|
|
54
|
-
const [
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
const [pollJoiningVerifyingKeyOnChain, pollJoinedVerifyingKeyOnChain, processVerifyingKeyOnChain, tallyVerifyingKeyOnChain,] = await Promise.all([
|
|
65
|
+
verifyingKeysRegistryContract.getPollJoiningVerifyingKey(stateTreeDepth),
|
|
66
|
+
verifyingKeysRegistryContract.getPollJoinedVerifyingKey(stateTreeDepth),
|
|
67
|
+
verifyingKeysRegistryContract.getProcessVerifyingKey(stateTreeDepth, voteOptionTreeDepth, messageBatchSize, mode),
|
|
68
|
+
verifyingKeysRegistryContract.getTallyVerifyingKey(stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, mode),
|
|
59
69
|
]);
|
|
60
|
-
if (!(0, utils_2.
|
|
61
|
-
throw new Error("
|
|
70
|
+
if (!(0, utils_2.compareVerifyingKeys)(pollJoiningVerifyingKeyOnChain, pollJoiningVerifyingKey)) {
|
|
71
|
+
throw new Error("pollJoiningVerifyingKey mismatch");
|
|
62
72
|
}
|
|
63
|
-
if (!(0, utils_2.
|
|
64
|
-
throw new Error("
|
|
73
|
+
if (!(0, utils_2.compareVerifyingKeys)(pollJoinedVerifyingKeyOnChain, pollJoinedVerifyingKey)) {
|
|
74
|
+
throw new Error("pollJoinedVerifyingKey mismatch");
|
|
65
75
|
}
|
|
66
|
-
if (!(0, utils_2.
|
|
67
|
-
throw new Error("
|
|
76
|
+
if (!(0, utils_2.compareVerifyingKeys)(processVerifyingKeyOnChain, processMessagesVerifyingKey)) {
|
|
77
|
+
throw new Error("processVerifyingKey mismatch");
|
|
68
78
|
}
|
|
69
|
-
if (!(0, utils_2.
|
|
70
|
-
throw new Error("
|
|
79
|
+
if (!(0, utils_2.compareVerifyingKeys)(tallyVerifyingKeyOnChain, tallyVotesVerifyingKey)) {
|
|
80
|
+
throw new Error("tallyVerifyingKey mismatch");
|
|
71
81
|
}
|
|
72
82
|
};
|
|
73
83
|
exports.setVerifyingKeys = setVerifyingKeys;
|