@maci-protocol/sdk 0.0.0-ci.fb960ed → 0.0.0-ci.fd5247e
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 +11 -3
- 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 +5 -5
- package/build/ts/deploy/poll.js.map +1 -1
- package/build/ts/deploy/types.d.ts +4 -4
- 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 +3 -3
- package/build/ts/maciKeys/__tests__/keypair.test.js.map +1 -1
- package/build/ts/maciKeys/__tests__/publicKeys.test.js +5 -5
- package/build/ts/maciKeys/__tests__/publicKeys.test.js.map +1 -1
- package/build/ts/maciKeys/publicKeys.js +2 -2
- 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 +2 -2
- package/build/ts/poll/types.d.ts.map +1 -1
- package/build/ts/proof/__tests__/download.test.js +5 -2
- package/build/ts/proof/__tests__/download.test.js.map +1 -1
- package/build/ts/proof/download.d.ts +3 -3
- package/build/ts/proof/download.d.ts.map +1 -1
- package/build/ts/proof/download.js +5 -7
- package/build/ts/proof/download.js.map +1 -1
- package/build/ts/proof/generate.d.ts +1 -1
- package/build/ts/proof/generate.js +3 -3
- 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 +29 -3
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/proof/utils.d.ts +10 -0
- package/build/ts/proof/utils.d.ts.map +1 -0
- package/build/ts/proof/utils.js +24 -0
- package/build/ts/proof/utils.js.map +1 -0
- package/build/ts/relayer/messages.js +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 +36 -10
- 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 +1 -1
- 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.js +3 -3
- package/build/ts/user/signup.js.map +1 -1
- package/build/ts/user/types.d.ts +2 -2
- package/build/ts/user/types.d.ts.map +1 -1
- package/build/ts/user/utils.d.ts +9 -9
- package/build/ts/user/utils.d.ts.map +1 -1
- package/build/ts/user/utils.js +20 -20
- 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 +36 -37
- package/build/ts/verifyingKeys/setVerifyingKeys.js.map +1 -1
- package/build/ts/verifyingKeys/types.d.ts +32 -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.map +1 -1
- package/build/ts/vote/generate.js +3 -3
- 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 +1 -1
- package/build/ts/vote/invalidate.js.map +1 -1
- package/build/ts/vote/publish.js +12 -12
- package/build/ts/vote/publish.js.map +1 -1
- package/build/ts/vote/utils.d.ts +1 -1
- package/build/ts/vote/utils.d.ts.map +1 -1
- package/build/ts/vote/utils.js +3 -3
- package/build/ts/vote/utils.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -9
- 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/proof/constants.d.ts +0 -17
- package/build/ts/proof/constants.d.ts.map +0 -1
- package/build/ts/proof/constants.js +0 -20
- package/build/ts/proof/constants.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { EMode } from "@maci-protocol/contracts";
|
|
2
|
-
import type {
|
|
2
|
+
import type { IVerifyingKeyContractParams, VerifyingKey } from "@maci-protocol/domainobjs";
|
|
3
3
|
import type { Signer } from "ethers";
|
|
4
4
|
/**
|
|
5
|
-
* Arguments for the
|
|
5
|
+
* Arguments for the getAllVerifyingKeys function
|
|
6
6
|
*/
|
|
7
|
-
export interface
|
|
7
|
+
export interface IGetAllVerifyingKeysArgs {
|
|
8
8
|
/**
|
|
9
|
-
* The address of the
|
|
9
|
+
* The address of the VerifyingKeysRegistry contract
|
|
10
10
|
*/
|
|
11
|
-
|
|
11
|
+
verifyingKeysRegistryAddress: string;
|
|
12
12
|
/**
|
|
13
13
|
* The signer to use for the contract calls
|
|
14
14
|
*/
|
|
@@ -37,28 +37,28 @@ export interface IGetAllVksArgs {
|
|
|
37
37
|
/**
|
|
38
38
|
* MACI's verifying keys
|
|
39
39
|
*/
|
|
40
|
-
export interface
|
|
40
|
+
export interface IMaciVerifyingKeysOnchain {
|
|
41
41
|
/**
|
|
42
42
|
* The verifying key for the poll joining circuit
|
|
43
43
|
*/
|
|
44
|
-
|
|
44
|
+
pollJoiningVerifyingKeyOnChain: IVerifyingKeyContractParams;
|
|
45
45
|
/**
|
|
46
46
|
* The verifying key for the poll joined circuit
|
|
47
47
|
*/
|
|
48
|
-
|
|
48
|
+
pollJoinedVerifyingKeyOnChain: IVerifyingKeyContractParams;
|
|
49
49
|
/**
|
|
50
50
|
* The verifying key for the process messages circuit
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
processVerifyingKeyOnChain: IVerifyingKeyContractParams;
|
|
53
53
|
/**
|
|
54
54
|
* The verifying key for the tally votes circuit
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
tallyVerifyingKeyOnChain: IVerifyingKeyContractParams;
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
* Arguments for the
|
|
59
|
+
* Arguments for the extractAllVerifyingKeys function
|
|
60
60
|
*/
|
|
61
|
-
export interface
|
|
61
|
+
export interface IExtractAllVerifyingKeysArgs {
|
|
62
62
|
/**
|
|
63
63
|
* The path to the poll joining zkey
|
|
64
64
|
*/
|
|
@@ -79,44 +79,44 @@ export interface IExtractAllVksArgs {
|
|
|
79
79
|
/**
|
|
80
80
|
* Maci verifying keys
|
|
81
81
|
*/
|
|
82
|
-
export interface
|
|
82
|
+
export interface IMaciVerifyingKeys {
|
|
83
83
|
/**
|
|
84
84
|
* The poll joining verifying key
|
|
85
85
|
*/
|
|
86
|
-
|
|
86
|
+
pollJoiningVerifyingKey?: VerifyingKey;
|
|
87
87
|
/**
|
|
88
88
|
* The poll joined verifying key
|
|
89
89
|
*/
|
|
90
|
-
|
|
90
|
+
pollJoinedVerifyingKey?: VerifyingKey;
|
|
91
91
|
/**
|
|
92
92
|
* The message processing verifying key
|
|
93
93
|
*/
|
|
94
|
-
|
|
94
|
+
processVerifyingKey?: VerifyingKey;
|
|
95
95
|
/**
|
|
96
96
|
* The tally verifying key
|
|
97
97
|
*/
|
|
98
|
-
|
|
98
|
+
tallyVerifyingKey?: VerifyingKey;
|
|
99
99
|
}
|
|
100
100
|
/**
|
|
101
101
|
* The arguments for the setVerifyingKeys function
|
|
102
102
|
*/
|
|
103
103
|
export interface ISetVerifyingKeysArgs {
|
|
104
104
|
/**
|
|
105
|
-
* The polll joining
|
|
105
|
+
* The polll joining verifying key object
|
|
106
106
|
*/
|
|
107
|
-
|
|
107
|
+
pollJoiningVerifyingKey: VerifyingKey;
|
|
108
108
|
/**
|
|
109
|
-
* The poll joined
|
|
109
|
+
* The poll joined verifying key object
|
|
110
110
|
*/
|
|
111
|
-
|
|
111
|
+
pollJoinedVerifyingKey: VerifyingKey;
|
|
112
112
|
/**
|
|
113
|
-
* The process messages
|
|
113
|
+
* The process messages verifying key object
|
|
114
114
|
*/
|
|
115
|
-
|
|
115
|
+
processMessagesVerifyingKey: VerifyingKey;
|
|
116
116
|
/**
|
|
117
|
-
* The tally votes
|
|
117
|
+
* The tally votes verifying key object
|
|
118
118
|
*/
|
|
119
|
-
|
|
119
|
+
tallyVotesVerifyingKey: VerifyingKey;
|
|
120
120
|
/**
|
|
121
121
|
* The state tree depth
|
|
122
122
|
*/
|
|
@@ -138,9 +138,9 @@ export interface ISetVerifyingKeysArgs {
|
|
|
138
138
|
*/
|
|
139
139
|
messageBatchSize: number;
|
|
140
140
|
/**
|
|
141
|
-
* The
|
|
141
|
+
* The VerifyingKeysRegistry contract address
|
|
142
142
|
*/
|
|
143
|
-
|
|
143
|
+
verifyingKeysRegistryAddress: string;
|
|
144
144
|
/**
|
|
145
145
|
* The signer
|
|
146
146
|
*/
|
|
@@ -191,18 +191,18 @@ export interface ICheckVerifyingKeysArgs {
|
|
|
191
191
|
*/
|
|
192
192
|
signer: Signer;
|
|
193
193
|
/**
|
|
194
|
-
* The address of the
|
|
194
|
+
* The address of the VerifyingKeysRegistry contract
|
|
195
195
|
*/
|
|
196
|
-
|
|
196
|
+
verifyingKeysRegistry: string;
|
|
197
197
|
/**
|
|
198
198
|
* Whether to use quadratic voting or not
|
|
199
199
|
*/
|
|
200
200
|
useQuadraticVoting?: boolean;
|
|
201
201
|
}
|
|
202
202
|
/**
|
|
203
|
-
* Interface for the arguments to the
|
|
203
|
+
* Interface for the arguments to the extractVerifyingKeyToFile command
|
|
204
204
|
*/
|
|
205
|
-
export interface
|
|
205
|
+
export interface IExtractVerifyingKeyToFileArgs {
|
|
206
206
|
/**
|
|
207
207
|
* File path for poll joining zkey
|
|
208
208
|
*/
|
|
@@ -228,7 +228,7 @@ export interface IExtractVkToFileArgs {
|
|
|
228
228
|
*/
|
|
229
229
|
tallyVotesZkeyPathNonQv: string;
|
|
230
230
|
/**
|
|
231
|
-
* Output file path of extracted
|
|
231
|
+
* Output file path of extracted verifying keys
|
|
232
232
|
*/
|
|
233
233
|
outputFilePath: string;
|
|
234
234
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import type {
|
|
1
|
+
import { type IVerifyingKeyContractParams, VerifyingKey } from "@maci-protocol/domainobjs";
|
|
2
|
+
import type { IGetAllVerifyingKeysArgs, IExtractAllVerifyingKeysArgs, IMaciVerifyingKeys, IMaciVerifyingKeysOnchain, IExtractVerifyingKeyToFileArgs } from "./types";
|
|
3
3
|
/**
|
|
4
4
|
* Get all the verifying keys from the contract
|
|
5
|
-
* @param args - The arguments for the
|
|
5
|
+
* @param args - The arguments for the getAllVerifyingKeys function
|
|
6
6
|
* @returns The verifying keys
|
|
7
7
|
*/
|
|
8
|
-
export declare const
|
|
8
|
+
export declare const getAllOnChainVerifyingKeys: ({ verifyingKeysRegistryAddress, signer, stateTreeDepth, voteOptionTreeDepth, messageBatchSize, intStateTreeDepth, mode, }: IGetAllVerifyingKeysArgs) => Promise<IMaciVerifyingKeysOnchain>;
|
|
9
9
|
/**
|
|
10
10
|
* Compare two verifying keys
|
|
11
|
-
* @param
|
|
12
|
-
* @param
|
|
11
|
+
* @param verifyingKeyOnChain - the verifying key on chain
|
|
12
|
+
* @param verifyingKey - the local verifying key
|
|
13
13
|
* @returns whether they are equal or not
|
|
14
14
|
*/
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const compareVerifyingKeys: (verifyingKeyOnChain: VerifyingKey | IVerifyingKeyContractParams, verifyingKey?: VerifyingKey | IVerifyingKeyContractParams) => boolean;
|
|
16
16
|
/**
|
|
17
17
|
* Extract all the verifying keys
|
|
18
|
-
* @param args - The arguments for the
|
|
18
|
+
* @param args - The arguments for the extractAllVerifyingKeys function
|
|
19
19
|
* @returns The verifying keys
|
|
20
20
|
*/
|
|
21
|
-
export declare const
|
|
21
|
+
export declare const extractAllVerifyingKeys: ({ pollJoiningZkeyPath, pollJoinedZkeyPath, processMessagesZkeyPath, tallyVotesZkeyPath, }: IExtractAllVerifyingKeysArgs) => Promise<IMaciVerifyingKeys>;
|
|
22
22
|
/**
|
|
23
23
|
* Command to confirm that the verifying keys in the contract match the local ones
|
|
24
24
|
* @note 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
|
|
25
25
|
* @param args The arguments for the checkVerifyingKeys command
|
|
26
26
|
* @returns Whether the verifying keys match or not
|
|
27
27
|
*/
|
|
28
|
-
export declare const
|
|
28
|
+
export declare const extractVerifyingKeyToFile: ({ processMessagesZkeyPathQv, tallyVotesZkeyPathQv, processMessagesZkeyPathNonQv, pollJoinedZkeyPath, pollJoiningZkeyPath, tallyVotesZkeyPathNonQv, outputFilePath, }: IExtractVerifyingKeyToFileArgs) => Promise<void>;
|
|
29
29
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/verifyingKeys/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI3F,OAAO,KAAK,EACV,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAU,2HAQ9C,wBAAwB,KAAG,OAAO,CAAC,yBAAyB,CAqB9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,qBAAqB,YAAY,GAAG,2BAA2B,EAC/D,eAAe,YAAY,GAAG,2BAA2B,KACxD,OA2BF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAU,2FAK3C,4BAA4B,KAAG,OAAO,CAAC,kBAAkB,CAsB3D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GAAU,sKAQ7C,8BAA8B,KAAG,OAAO,CAAC,IAAI,CA4B/C,CAAC"}
|
|
@@ -3,101 +3,114 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.extractVerifyingKeyToFile = exports.extractAllVerifyingKeys = exports.compareVerifyingKeys = exports.getAllOnChainVerifyingKeys = void 0;
|
|
7
7
|
const contracts_1 = require("@maci-protocol/contracts");
|
|
8
8
|
const typechain_types_1 = require("@maci-protocol/contracts/typechain-types");
|
|
9
9
|
const domainobjs_1 = require("@maci-protocol/domainobjs");
|
|
10
10
|
const fs_1 = __importDefault(require("fs"));
|
|
11
11
|
/**
|
|
12
12
|
* Get all the verifying keys from the contract
|
|
13
|
-
* @param args - The arguments for the
|
|
13
|
+
* @param args - The arguments for the getAllVerifyingKeys function
|
|
14
14
|
* @returns The verifying keys
|
|
15
15
|
*/
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
const getAllOnChainVerifyingKeys = async ({ verifyingKeysRegistryAddress, signer, stateTreeDepth, voteOptionTreeDepth, messageBatchSize, intStateTreeDepth, mode, }) => {
|
|
17
|
+
const contract = typechain_types_1.VerifyingKeysRegistry__factory.connect(verifyingKeysRegistryAddress, signer);
|
|
18
|
+
const [pollJoiningVerifyingKeyOnChain, pollJoinedVerifyingKeyOnChain, processVerifyingKeyOnChain, tallyVerifyingKeyOnChain,] = await Promise.all([
|
|
19
|
+
contract.getPollJoiningVerifyingKey(stateTreeDepth),
|
|
20
|
+
contract.getPollJoinedVerifyingKey(stateTreeDepth),
|
|
21
|
+
contract.getProcessVerifyingKey(stateTreeDepth, voteOptionTreeDepth, messageBatchSize, mode),
|
|
22
|
+
contract.getTallyVerifyingKey(stateTreeDepth, intStateTreeDepth, voteOptionTreeDepth, mode),
|
|
23
23
|
]);
|
|
24
24
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
pollJoiningVerifyingKeyOnChain,
|
|
26
|
+
pollJoinedVerifyingKeyOnChain,
|
|
27
|
+
processVerifyingKeyOnChain,
|
|
28
|
+
tallyVerifyingKeyOnChain,
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
-
exports.
|
|
31
|
+
exports.getAllOnChainVerifyingKeys = getAllOnChainVerifyingKeys;
|
|
32
32
|
/**
|
|
33
33
|
* Compare two verifying keys
|
|
34
|
-
* @param
|
|
35
|
-
* @param
|
|
34
|
+
* @param verifyingKeyOnChain - the verifying key on chain
|
|
35
|
+
* @param verifyingKey - the local verifying key
|
|
36
36
|
* @returns whether they are equal or not
|
|
37
37
|
*/
|
|
38
|
-
const
|
|
39
|
-
if (!
|
|
38
|
+
const compareVerifyingKeys = (verifyingKeyOnChain, verifyingKey) => {
|
|
39
|
+
if (!verifyingKey) {
|
|
40
40
|
throw new Error("Verifying key is not provided");
|
|
41
41
|
}
|
|
42
|
-
let isEqual =
|
|
43
|
-
for (let i = 0; i <
|
|
44
|
-
isEqual = isEqual &&
|
|
45
|
-
isEqual = isEqual &&
|
|
42
|
+
let isEqual = verifyingKey.ic.length === verifyingKeyOnChain.ic.length;
|
|
43
|
+
for (let i = 0; i < verifyingKey.ic.length; i += 1) {
|
|
44
|
+
isEqual = isEqual && verifyingKey.ic[i].x.toString() === verifyingKeyOnChain.ic[i].x.toString();
|
|
45
|
+
isEqual = isEqual && verifyingKey.ic[i].y.toString() === verifyingKeyOnChain.ic[i].y.toString();
|
|
46
46
|
}
|
|
47
|
-
isEqual = isEqual &&
|
|
48
|
-
isEqual = isEqual &&
|
|
49
|
-
isEqual = isEqual &&
|
|
50
|
-
isEqual = isEqual &&
|
|
51
|
-
isEqual = isEqual &&
|
|
52
|
-
isEqual = isEqual &&
|
|
53
|
-
isEqual = isEqual &&
|
|
54
|
-
isEqual = isEqual &&
|
|
55
|
-
isEqual = isEqual &&
|
|
56
|
-
isEqual = isEqual &&
|
|
57
|
-
isEqual = isEqual &&
|
|
58
|
-
isEqual = isEqual &&
|
|
59
|
-
isEqual = isEqual &&
|
|
60
|
-
isEqual = isEqual &&
|
|
47
|
+
isEqual = isEqual && verifyingKey.alpha1.x.toString() === verifyingKeyOnChain.alpha1.x.toString();
|
|
48
|
+
isEqual = isEqual && verifyingKey.alpha1.y.toString() === verifyingKeyOnChain.alpha1.y.toString();
|
|
49
|
+
isEqual = isEqual && verifyingKey.beta2.x[0].toString() === verifyingKeyOnChain.beta2.x[0].toString();
|
|
50
|
+
isEqual = isEqual && verifyingKey.beta2.x[1].toString() === verifyingKeyOnChain.beta2.x[1].toString();
|
|
51
|
+
isEqual = isEqual && verifyingKey.beta2.y[0].toString() === verifyingKeyOnChain.beta2.y[0].toString();
|
|
52
|
+
isEqual = isEqual && verifyingKey.beta2.y[1].toString() === verifyingKeyOnChain.beta2.y[1].toString();
|
|
53
|
+
isEqual = isEqual && verifyingKey.delta2.x[0].toString() === verifyingKeyOnChain.delta2.x[0].toString();
|
|
54
|
+
isEqual = isEqual && verifyingKey.delta2.x[1].toString() === verifyingKeyOnChain.delta2.x[1].toString();
|
|
55
|
+
isEqual = isEqual && verifyingKey.delta2.y[0].toString() === verifyingKeyOnChain.delta2.y[0].toString();
|
|
56
|
+
isEqual = isEqual && verifyingKey.delta2.y[1].toString() === verifyingKeyOnChain.delta2.y[1].toString();
|
|
57
|
+
isEqual = isEqual && verifyingKey.gamma2.x[0].toString() === verifyingKeyOnChain.gamma2.x[0].toString();
|
|
58
|
+
isEqual = isEqual && verifyingKey.gamma2.x[1].toString() === verifyingKeyOnChain.gamma2.x[1].toString();
|
|
59
|
+
isEqual = isEqual && verifyingKey.gamma2.y[0].toString() === verifyingKeyOnChain.gamma2.y[0].toString();
|
|
60
|
+
isEqual = isEqual && verifyingKey.gamma2.y[1].toString() === verifyingKeyOnChain.gamma2.y[1].toString();
|
|
61
61
|
return isEqual;
|
|
62
62
|
};
|
|
63
|
-
exports.
|
|
63
|
+
exports.compareVerifyingKeys = compareVerifyingKeys;
|
|
64
64
|
/**
|
|
65
65
|
* Extract all the verifying keys
|
|
66
|
-
* @param args - The arguments for the
|
|
66
|
+
* @param args - The arguments for the extractAllVerifyingKeys function
|
|
67
67
|
* @returns The verifying keys
|
|
68
68
|
*/
|
|
69
|
-
const
|
|
70
|
-
// extract the
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
const extractAllVerifyingKeys = async ({ pollJoiningZkeyPath, pollJoinedZkeyPath, processMessagesZkeyPath, tallyVotesZkeyPath, }) => {
|
|
70
|
+
// extract the verifying keys
|
|
71
|
+
const pollJoiningVerifyingKey = pollJoiningZkeyPath
|
|
72
|
+
? domainobjs_1.VerifyingKey.fromObj(await (0, contracts_1.extractVerifyingKey)(pollJoiningZkeyPath))
|
|
73
|
+
: undefined;
|
|
74
|
+
const pollJoinedVerifyingKey = pollJoinedZkeyPath
|
|
75
|
+
? domainobjs_1.VerifyingKey.fromObj(await (0, contracts_1.extractVerifyingKey)(pollJoinedZkeyPath))
|
|
76
|
+
: undefined;
|
|
77
|
+
const processVerifyingKey = processMessagesZkeyPath
|
|
78
|
+
? domainobjs_1.VerifyingKey.fromObj(await (0, contracts_1.extractVerifyingKey)(processMessagesZkeyPath))
|
|
79
|
+
: undefined;
|
|
80
|
+
const tallyVerifyingKey = tallyVotesZkeyPath
|
|
81
|
+
? domainobjs_1.VerifyingKey.fromObj(await (0, contracts_1.extractVerifyingKey)(tallyVotesZkeyPath))
|
|
75
82
|
: undefined;
|
|
76
|
-
const tallyVk = tallyVotesZkeyPath ? domainobjs_1.VerifyingKey.fromObj(await (0, contracts_1.extractVk)(tallyVotesZkeyPath)) : undefined;
|
|
77
83
|
return {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
pollJoiningVerifyingKey,
|
|
85
|
+
pollJoinedVerifyingKey,
|
|
86
|
+
processVerifyingKey,
|
|
87
|
+
tallyVerifyingKey,
|
|
82
88
|
};
|
|
83
89
|
};
|
|
84
|
-
exports.
|
|
90
|
+
exports.extractAllVerifyingKeys = extractAllVerifyingKeys;
|
|
85
91
|
/**
|
|
86
92
|
* Command to confirm that the verifying keys in the contract match the local ones
|
|
87
93
|
* @note 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
|
|
88
94
|
* @param args The arguments for the checkVerifyingKeys command
|
|
89
95
|
* @returns Whether the verifying keys match or not
|
|
90
96
|
*/
|
|
91
|
-
const
|
|
92
|
-
const [
|
|
93
|
-
(0, contracts_1.
|
|
94
|
-
(0, contracts_1.
|
|
95
|
-
(0, contracts_1.
|
|
96
|
-
(0, contracts_1.
|
|
97
|
-
(0, contracts_1.
|
|
98
|
-
(0, contracts_1.
|
|
97
|
+
const extractVerifyingKeyToFile = async ({ processMessagesZkeyPathQv, tallyVotesZkeyPathQv, processMessagesZkeyPathNonQv, pollJoinedZkeyPath, pollJoiningZkeyPath, tallyVotesZkeyPathNonQv, outputFilePath, }) => {
|
|
98
|
+
const [processVerifyingKeyQv, tallyVerifyingKeyQv, processVerifyingKeyNonQv, tallyVerifyingKeyNonQv, pollJoiningVerifyingKey, pollJoinedVerifyingKey,] = await Promise.all([
|
|
99
|
+
(0, contracts_1.extractVerifyingKey)(processMessagesZkeyPathQv),
|
|
100
|
+
(0, contracts_1.extractVerifyingKey)(tallyVotesZkeyPathQv),
|
|
101
|
+
(0, contracts_1.extractVerifyingKey)(processMessagesZkeyPathNonQv),
|
|
102
|
+
(0, contracts_1.extractVerifyingKey)(tallyVotesZkeyPathNonQv),
|
|
103
|
+
(0, contracts_1.extractVerifyingKey)(pollJoiningZkeyPath),
|
|
104
|
+
(0, contracts_1.extractVerifyingKey)(pollJoinedZkeyPath),
|
|
99
105
|
]);
|
|
100
|
-
await fs_1.default.promises.writeFile(outputFilePath, JSON.stringify({
|
|
106
|
+
await fs_1.default.promises.writeFile(outputFilePath, JSON.stringify({
|
|
107
|
+
processVerifyingKeyQv,
|
|
108
|
+
tallyVerifyingKeyQv,
|
|
109
|
+
processVerifyingKeyNonQv,
|
|
110
|
+
tallyVerifyingKeyNonQv,
|
|
111
|
+
pollJoiningVerifyingKey,
|
|
112
|
+
pollJoinedVerifyingKey,
|
|
113
|
+
}));
|
|
101
114
|
};
|
|
102
|
-
exports.
|
|
115
|
+
exports.extractVerifyingKeyToFile = extractVerifyingKeyToFile;
|
|
103
116
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/utils.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/verifyingKeys/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../ts/vote/generate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,oJAY1B,iBAAiB,KAAG,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../ts/vote/generate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIxD;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,oJAY1B,iBAAiB,KAAG,KAsDtB,CAAC"}
|
|
@@ -25,18 +25,18 @@ const generateVote = ({ pollId, voteOptionIndex, salt, nonce, privateKey, stateI
|
|
|
25
25
|
if (salt && !(0, utils_1.validateSalt)(salt)) {
|
|
26
26
|
throw new Error("Invalid salt");
|
|
27
27
|
}
|
|
28
|
-
const userSalt = salt ? BigInt(salt) : (0, crypto_1.
|
|
28
|
+
const userSalt = salt ? BigInt(salt) : (0, crypto_1.generateRandomSalt)();
|
|
29
29
|
if (pollId < 0) {
|
|
30
30
|
throw new Error("Invalid poll id");
|
|
31
31
|
}
|
|
32
32
|
// if no ephemeral keypair is provided, generate a new one
|
|
33
33
|
const encKeypair = ephemeralKeypair ?? new domainobjs_1.Keypair();
|
|
34
34
|
// create the command object
|
|
35
|
-
const command = new domainobjs_1.
|
|
35
|
+
const command = new domainobjs_1.VoteCommand(stateIndex, newPublicKey ?? keypair.publicKey, voteOptionIndex, voteWeight, nonce, pollId, userSalt);
|
|
36
36
|
// sign the command with the poll private key
|
|
37
37
|
const signature = command.sign(privateKey);
|
|
38
38
|
// encrypt the command using a shared key between the user and the coordinator
|
|
39
|
-
const message = command.encrypt(signature, domainobjs_1.Keypair.
|
|
39
|
+
const message = command.encrypt(signature, domainobjs_1.Keypair.generateEcdhSharedKey(encKeypair.privateKey, coordinatorPublicKey));
|
|
40
40
|
return {
|
|
41
41
|
message,
|
|
42
42
|
ephemeralKeypair: encKeypair,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../ts/vote/generate.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../ts/vote/generate.ts"],"names":[],"mappings":";;;AAAA,kDAA2D;AAC3D,0DAAiE;AAIjE,mCAAuC;AAEvC;;;;GAIG;AACI,MAAM,YAAY,GAAG,CAAC,EAC3B,MAAM,EACN,eAAe,EACf,IAAI,EACJ,KAAK,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,YAAY,GACM,EAAS,EAAE;IAC7B,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,UAAU,CAAC,CAAC;IAExC,gBAAgB;IAChB,IAAI,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,aAAa,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,mDAAmD;IACnD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,IAAI,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,2BAAkB,GAAE,CAAC;IAE5D,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,0DAA0D;IAC1D,MAAM,UAAU,GAAG,gBAAgB,IAAI,IAAI,oBAAO,EAAE,CAAC;IAErD,4BAA4B;IAC5B,MAAM,OAAO,GAAG,IAAI,wBAAW,CAC7B,UAAU,EACV,YAAY,IAAI,OAAO,CAAC,SAAS,EACjC,eAAe,EACf,UAAU,EACV,KAAK,EACL,MAAM,EACN,QAAQ,CACT,CAAC;IAEF,6CAA6C;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE3C,8EAA8E;IAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAC7B,SAAS,EACT,oBAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAC3E,CAAC;IAEF,OAAO;QACL,OAAO;QACP,gBAAgB,EAAE,UAAU;KAC7B,CAAC;AACJ,CAAC,CAAC;AAlEW,QAAA,YAAY,gBAkEvB"}
|
package/build/ts/vote/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export type { IVote, IGenerateVoteArgs, IPublishArgs, IPublishBatchArgs, IPublis
|
|
|
2
2
|
export { generateVote } from "./generate";
|
|
3
3
|
export { publish, publishBatch } from "./publish";
|
|
4
4
|
export { submitVote, submitVoteBatch } from "./submit";
|
|
5
|
-
export {
|
|
5
|
+
export { getCoordinatorPublicKey, validateSalt } from "./utils";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/vote/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../ts/vote/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
package/build/ts/vote/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateSalt = exports.
|
|
3
|
+
exports.validateSalt = exports.getCoordinatorPublicKey = exports.submitVoteBatch = exports.submitVote = exports.publishBatch = exports.publish = exports.generateVote = void 0;
|
|
4
4
|
var generate_1 = require("./generate");
|
|
5
5
|
Object.defineProperty(exports, "generateVote", { enumerable: true, get: function () { return generate_1.generateVote; } });
|
|
6
6
|
var publish_1 = require("./publish");
|
|
@@ -10,6 +10,6 @@ var submit_1 = require("./submit");
|
|
|
10
10
|
Object.defineProperty(exports, "submitVote", { enumerable: true, get: function () { return submit_1.submitVote; } });
|
|
11
11
|
Object.defineProperty(exports, "submitVoteBatch", { enumerable: true, get: function () { return submit_1.submitVoteBatch; } });
|
|
12
12
|
var utils_1 = require("./utils");
|
|
13
|
-
Object.defineProperty(exports, "
|
|
13
|
+
Object.defineProperty(exports, "getCoordinatorPublicKey", { enumerable: true, get: function () { return utils_1.getCoordinatorPublicKey; } });
|
|
14
14
|
Object.defineProperty(exports, "validateSalt", { enumerable: true, get: function () { return utils_1.validateSalt; } });
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/vote/index.ts"],"names":[],"mappings":";;;AAWA,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,qCAAkD;AAAzC,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA;AAC9B,mCAAuD;AAA9C,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/vote/index.ts"],"names":[],"mappings":";;;AAWA,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,qCAAkD;AAAzC,kGAAA,OAAO,OAAA;AAAE,uGAAA,YAAY,OAAA;AAC9B,mCAAuD;AAA9C,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AACpC,iCAAgE;AAAvD,gHAAA,uBAAuB,OAAA;AAAE,qGAAA,YAAY,OAAA"}
|
|
@@ -19,7 +19,7 @@ const utils_1 = require("./utils");
|
|
|
19
19
|
const invalidateVotes = async ({ maciAddress, pollId, signer, maciPrivateKey, stateIndex, }) => {
|
|
20
20
|
const { poll: pollContract } = await (0, poll_1.getPollContracts)({ maciAddress, pollId, signer });
|
|
21
21
|
const [maxVoteOption, pollAddress] = await Promise.all([pollContract.voteOptions(), pollContract.getAddress()]);
|
|
22
|
-
const coordinatorPublicKey = await (0, utils_1.
|
|
22
|
+
const coordinatorPublicKey = await (0, utils_1.getCoordinatorPublicKey)(pollAddress, signer);
|
|
23
23
|
// generate the key change message
|
|
24
24
|
const message = (0, generate_1.generateVote)({
|
|
25
25
|
pollId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../../ts/vote/invalidate.ts"],"names":[],"mappings":";;;AAAA,0DAAoD;AAIpD,kCAA2C;AAE3C,yCAA0C;AAC1C,qCAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"invalidate.js","sourceRoot":"","sources":["../../../ts/vote/invalidate.ts"],"names":[],"mappings":";;;AAAA,0DAAoD;AAIpD,kCAA2C;AAE3C,yCAA0C;AAC1C,qCAAsC;AACtC,mCAAkD;AAElD;;;;;;;;;GASG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,WAAW,EACX,MAAM,EACN,MAAM,EACN,cAAc,EACd,UAAU,GACW,EAA+B,EAAE;IACtD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,uBAAgB,EAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvF,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAChH,MAAM,oBAAoB,GAAG,MAAM,IAAA,+BAAuB,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEhF,kCAAkC;IAClC,MAAM,OAAO,GAAG,IAAA,uBAAY,EAAC;QAC3B,MAAM;QACN,eAAe,EAAE,EAAE;QACnB,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,cAAc;QAC1B,UAAU;QACV,oDAAoD;QACpD,YAAY,EAAE,IAAI,oBAAO,EAAE,CAAC,SAAS;QACrC,UAAU,EAAE,EAAE;QACd,oBAAoB;QACpB,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAU,EAAC;QAC/B,WAAW;QACX,IAAI,EAAE,OAAO;QACb,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAjCW,QAAA,eAAe,mBAiC1B"}
|
package/build/ts/vote/publish.js
CHANGED
|
@@ -12,17 +12,17 @@ const utils_1 = require("./utils");
|
|
|
12
12
|
* @returns {IPublishData} The ephemeral private key used to encrypt the message, transaction hash
|
|
13
13
|
*/
|
|
14
14
|
const publish = async ({ stateIndex, voteOptionIndex, nonce, pollId, newVoteWeight, maciAddress, salt, publicKey: serializedPublicKey, privateKey: serializedPrivateKey, signer, }) => {
|
|
15
|
-
if (!domainobjs_1.PublicKey.
|
|
15
|
+
if (!domainobjs_1.PublicKey.isValidSerialized(serializedPublicKey)) {
|
|
16
16
|
throw new Error("Invalid MACI public key");
|
|
17
17
|
}
|
|
18
|
-
if (!domainobjs_1.PrivateKey.
|
|
18
|
+
if (!domainobjs_1.PrivateKey.isValidSerialized(serializedPrivateKey)) {
|
|
19
19
|
throw new Error("Invalid MACI private key");
|
|
20
20
|
}
|
|
21
21
|
const { poll: pollContract } = await (0, poll_1.getPollContracts)({ maciAddress, pollId, signer });
|
|
22
|
-
const
|
|
22
|
+
const votePublicKey = domainobjs_1.PublicKey.deserialize(serializedPublicKey);
|
|
23
23
|
const privateKey = domainobjs_1.PrivateKey.deserialize(serializedPrivateKey);
|
|
24
24
|
const [maxVoteOption, pollAddress] = await Promise.all([pollContract.voteOptions(), pollContract.getAddress()]);
|
|
25
|
-
const coordinatorPublicKey = await (0, utils_1.
|
|
25
|
+
const coordinatorPublicKey = await (0, utils_1.getCoordinatorPublicKey)(pollAddress, signer);
|
|
26
26
|
const vote = (0, generate_1.generateVote)({
|
|
27
27
|
pollId,
|
|
28
28
|
voteOptionIndex,
|
|
@@ -33,7 +33,7 @@ const publish = async ({ stateIndex, voteOptionIndex, nonce, pollId, newVoteWeig
|
|
|
33
33
|
voteWeight: newVoteWeight,
|
|
34
34
|
coordinatorPublicKey,
|
|
35
35
|
maxVoteOption,
|
|
36
|
-
newPublicKey:
|
|
36
|
+
newPublicKey: votePublicKey,
|
|
37
37
|
});
|
|
38
38
|
const txHash = await (0, submit_1.submitVote)({ pollAddress, vote, signer });
|
|
39
39
|
return {
|
|
@@ -49,29 +49,29 @@ exports.publish = publish;
|
|
|
49
49
|
* @returns {IPublishBatchData} The ephemeral private key used to encrypt the message, transaction hash
|
|
50
50
|
*/
|
|
51
51
|
const publishBatch = async ({ messages, pollId, maciAddress, publicKey, privateKey, signer, }) => {
|
|
52
|
-
if (!domainobjs_1.PublicKey.
|
|
52
|
+
if (!domainobjs_1.PublicKey.isValidSerialized(publicKey)) {
|
|
53
53
|
throw new Error("Invalid MACI public key");
|
|
54
54
|
}
|
|
55
|
-
if (!domainobjs_1.PrivateKey.
|
|
55
|
+
if (!domainobjs_1.PrivateKey.isValidSerialized(privateKey)) {
|
|
56
56
|
throw new Error("Invalid MACI private key");
|
|
57
57
|
}
|
|
58
58
|
const { poll: pollContract } = await (0, poll_1.getPollContracts)({ maciAddress, pollId, signer });
|
|
59
|
-
const
|
|
60
|
-
const
|
|
59
|
+
const userMaciPublicKey = domainobjs_1.PublicKey.deserialize(publicKey);
|
|
60
|
+
const userMaciPrivateKey = domainobjs_1.PrivateKey.deserialize(privateKey);
|
|
61
61
|
const [maxVoteOption, pollAddress] = await Promise.all([pollContract.voteOptions(), pollContract.getAddress()]);
|
|
62
|
-
const coordinatorPublicKey = await (0, utils_1.
|
|
62
|
+
const coordinatorPublicKey = await (0, utils_1.getCoordinatorPublicKey)(pollAddress, signer);
|
|
63
63
|
// validate the vote options index against the max leaf index on-chain
|
|
64
64
|
const votes = messages.map(({ stateIndex, voteOptionIndex, salt, nonce, newVoteWeight }) => (0, generate_1.generateVote)({
|
|
65
65
|
pollId,
|
|
66
66
|
voteOptionIndex,
|
|
67
67
|
nonce,
|
|
68
|
-
privateKey:
|
|
68
|
+
privateKey: userMaciPrivateKey,
|
|
69
69
|
stateIndex,
|
|
70
70
|
maxVoteOption: BigInt(maxVoteOption),
|
|
71
71
|
salt,
|
|
72
72
|
voteWeight: newVoteWeight,
|
|
73
73
|
coordinatorPublicKey,
|
|
74
|
-
newPublicKey:
|
|
74
|
+
newPublicKey: userMaciPublicKey,
|
|
75
75
|
}));
|
|
76
76
|
const txHash = await (0, submit_1.submitVoteBatch)({
|
|
77
77
|
pollAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../ts/vote/publish.ts"],"names":[],"mappings":";;;AAAA,0DAAkE;AAIlE,kCAA2C;AAE3C,yCAA0C;AAC1C,qCAAuD;AACvD,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../ts/vote/publish.ts"],"names":[],"mappings":"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"}
|