@maci-protocol/coordinator 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/README.md +13 -6
- package/build/hardhat.config.cjs +3 -0
- package/build/hardhat.config.cjs.map +1 -1
- package/build/hardhat.config.d.cts +3 -0
- package/build/scripts/generateMaciKeyPair.js +2 -2
- package/build/scripts/generateMaciKeyPair.js.map +1 -1
- package/build/tests/constants.d.ts +0 -1
- package/build/tests/constants.d.ts.map +1 -1
- package/build/tests/constants.js +0 -1
- package/build/tests/constants.js.map +1 -1
- package/build/tests/e2e.aa.test.js +17 -14
- package/build/tests/e2e.aa.test.js.map +1 -1
- package/build/tests/e2e.deploy.test.js +121 -73
- package/build/tests/e2e.deploy.test.js.map +1 -1
- package/build/tests/utils.d.ts +6 -0
- package/build/tests/utils.d.ts.map +1 -1
- package/build/tests/utils.js +12 -3
- package/build/tests/utils.js.map +1 -1
- package/build/ts/common/__tests__/common.test.js +2 -6
- package/build/ts/common/__tests__/common.test.js.map +1 -1
- package/build/ts/common/accountAbstraction.d.ts +2 -19
- package/build/ts/common/accountAbstraction.d.ts.map +1 -1
- package/build/ts/common/accountAbstraction.js +14 -43
- package/build/ts/common/accountAbstraction.js.map +1 -1
- package/build/ts/common/chain.d.ts +16 -0
- package/build/ts/common/chain.d.ts.map +1 -0
- package/build/ts/common/chain.js +35 -0
- package/build/ts/common/chain.js.map +1 -0
- package/build/ts/common/errors.d.ts +17 -18
- package/build/ts/common/errors.d.ts.map +1 -1
- package/build/ts/common/errors.js +17 -18
- package/build/ts/common/errors.js.map +1 -1
- package/build/ts/common/index.d.ts +2 -0
- package/build/ts/common/index.d.ts.map +1 -1
- package/build/ts/common/index.js +2 -0
- package/build/ts/common/index.js.map +1 -1
- package/build/ts/common/types.d.ts +2 -3
- package/build/ts/common/types.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/deployer.service.test.js +30 -289
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
- package/build/ts/deployer/__tests__/utils.d.ts +30 -1
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/utils.js +42 -7
- package/build/ts/deployer/__tests__/utils.js.map +1 -1
- package/build/ts/deployer/deployer.service.d.ts +17 -53
- package/build/ts/deployer/deployer.service.d.ts.map +1 -1
- package/build/ts/deployer/deployer.service.js +164 -451
- package/build/ts/deployer/deployer.service.js.map +1 -1
- package/build/ts/deployer/dto.d.ts +4 -4
- package/build/ts/deployer/dto.d.ts.map +1 -1
- package/build/ts/deployer/dto.js +9 -1
- package/build/ts/deployer/dto.js.map +1 -1
- package/build/ts/deployer/types.d.ts +57 -19
- package/build/ts/deployer/types.d.ts.map +1 -1
- package/build/ts/proof/__tests__/proof.controller.test.js +3 -1
- package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.gateway.test.js +4 -1
- package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
- package/build/ts/proof/__tests__/proof.service.test.js +9 -7
- package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
- package/build/ts/proof/dto.d.ts +10 -9
- package/build/ts/proof/dto.d.ts.map +1 -1
- package/build/ts/proof/dto.js +42 -21
- package/build/ts/proof/dto.js.map +1 -1
- package/build/ts/proof/proof.controller.d.ts +3 -2
- package/build/ts/proof/proof.controller.d.ts.map +1 -1
- package/build/ts/proof/proof.controller.js.map +1 -1
- package/build/ts/proof/proof.service.d.ts +3 -3
- package/build/ts/proof/proof.service.d.ts.map +1 -1
- package/build/ts/proof/proof.service.js +38 -119
- package/build/ts/proof/proof.service.js.map +1 -1
- package/build/ts/proof/types.d.ts +16 -8
- package/build/ts/proof/types.d.ts.map +1 -1
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +53 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js +105 -0
- package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.service.d.ts +13 -2
- package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
- package/build/ts/sessionKeys/sessionKeys.service.js +22 -4
- package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +24 -23
- package/build/ts/deployer/utils.d.ts +0 -8
- package/build/ts/deployer/utils.d.ts.map +0 -1
- package/build/ts/deployer/utils.js +0 -9
- package/build/ts/deployer/utils.js.map +0 -1
package/LICENSE
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
4
|
-
Cory Dickson, Han Jian, Chih-Cheng Liang, and Koh Wei Jie
|
|
3
|
+
Copyright (c) 2025 Ethereum Foundation
|
|
5
4
|
|
|
6
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -2,16 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
Please refer to [Offchain relayer service documentation](https://maci.pse.dev/docs/category/offchain-relayer) for more information.
|
|
4
4
|
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
1. [Node.js](https://nodejs.org/en) version 20.0.0.
|
|
8
|
+
2. [pnpm](https://pnpm.io/installation) package manager.
|
|
9
|
+
3. [rapidsnark](https://github.com/iden3/rapidsnark) program.
|
|
10
|
+
|
|
5
11
|
## Instructions
|
|
6
12
|
|
|
7
13
|
1. Add `.env` file (see `.env.example`).
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4.
|
|
11
|
-
5.
|
|
12
|
-
6.
|
|
14
|
+
2. Remember to set up the rapidsnark file variable.
|
|
15
|
+
3. Generate RSA key pair with `pnpm run generate-keypair`.
|
|
16
|
+
4. Download zkey files using `pnpm run download-zkeys:{type}` (only test type is available for now).
|
|
17
|
+
5. Make sure you copied RSA public key to your application. This will be needed for encrypting `Authorization` header and coordinator private key for proof generation. Also it can be accessed through API method `GET v1/proof/publicKey`.
|
|
18
|
+
6. Run `pnpm run start` to run the service.
|
|
19
|
+
7. All API calls must be called with `Authorization` header, where the value is encrypted with RSA public key you generated before. Header value contains message signature and message digest created by `COORDINATOR_ADDRESSES`. The format is `publicEncrypt({signature}:{digest})`.
|
|
13
20
|
Make sure you set `COORDINATOR_ADDRESSES` env variable and sign any message with the addresses from your application (see [AccountSignatureGuard](./ts/auth/AccountSignatureGuard.service.ts)).
|
|
14
|
-
|
|
21
|
+
8. Proofs can be generated with `POST v1/proof/generate` API method or with Websockets (see [dto spec](./ts/proof/dto.ts), [controller](./ts/app.controller.ts) and [wsgateway](./ts/events/events.gateway.ts)).
|
|
15
22
|
|
|
16
23
|
## Subgraph deployment
|
|
17
24
|
|
package/build/hardhat.config.cjs
CHANGED
|
@@ -23,6 +23,9 @@ module.exports = {
|
|
|
23
23
|
loggingEnabled: false,
|
|
24
24
|
},
|
|
25
25
|
},
|
|
26
|
+
solidity: {
|
|
27
|
+
version: "0.8.28",
|
|
28
|
+
},
|
|
26
29
|
paths: {
|
|
27
30
|
sources: path.resolve(__dirname, parentDir, "./node_modules/@maci-protocol/sdk/node_modules/@maci-protocol/contracts/contracts"),
|
|
28
31
|
artifacts: path.resolve(__dirname, parentDir, "./node_modules/@maci-protocol/sdk/node_modules/@maci-protocol/contracts/artifacts"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardhat.config.cjs","sourceRoot":"","sources":["../hardhat.config.cjs"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,MAAM,aAAa,GAAG,6DAA6D,CAAC;AAEpF,MAAM,CAAC,OAAO,GAAG;IACf,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB;YAC/D,QAAQ,EAAE;gBACR,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,EAAE;aACV;YACD,cAAc,EAAE,KAAK;SACtB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,KAAK;SACtB;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,CACnB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;QACD,SAAS,EAAE,IAAI,CAAC,OAAO,CACrB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;KACF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"hardhat.config.cjs","sourceRoot":"","sources":["../hardhat.config.cjs"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,MAAM,aAAa,GAAG,6DAA6D,CAAC;AAEpF,MAAM,CAAC,OAAO,GAAG;IACf,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB;YAC/D,QAAQ,EAAE;gBACR,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,EAAE;aACV;YACD,cAAc,EAAE,KAAK;SACtB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,KAAK;SACtB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,CACnB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;QACD,SAAS,EAAE,IAAI,CAAC,OAAO,CACrB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;KACF;CACF,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { generateKeypair } from "@maci-protocol/crypto";
|
|
2
|
+
generateKeypair();
|
|
3
3
|
//# sourceMappingURL=generateMaciKeyPair.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateMaciKeyPair.js","sourceRoot":"","sources":["../../scripts/generateMaciKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"generateMaciKeyPair.js","sourceRoot":"","sources":["../../scripts/generateMaciKeyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAe,EAAE,CAAC"}
|
|
@@ -4,5 +4,4 @@ export declare const testPollJoiningWitnessPath = "./zkeys/PollJoining_10_test/P
|
|
|
4
4
|
export declare const testRapidsnarkPath: string;
|
|
5
5
|
export declare const zeroUint256Encoded: string;
|
|
6
6
|
export declare const oneUint256Encoded: string;
|
|
7
|
-
export declare const pollDuration = 10;
|
|
8
7
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,2DAA2D,CAAC;AAChG,eAAO,MAAM,uBAAuB,gFAAgF,CAAC;AACrH,eAAO,MAAM,0BAA0B,4EAA4E,CAAC;AACpH,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAEzE,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AACtF,eAAO,MAAM,iBAAiB,QAAsD,CAAC
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,2DAA2D,CAAC;AAChG,eAAO,MAAM,uBAAuB,gFAAgF,CAAC;AACrH,eAAO,MAAM,0BAA0B,4EAA4E,CAAC;AACpH,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAEzE,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AACtF,eAAO,MAAM,iBAAiB,QAAsD,CAAC"}
|
package/build/tests/constants.js
CHANGED
|
@@ -6,5 +6,4 @@ export const testPollJoiningWitnessPath = "./zkeys/PollJoining_10_test/PollJoini
|
|
|
6
6
|
export const testRapidsnarkPath = `${homedir()}/rapidsnark/build/prover`;
|
|
7
7
|
export const zeroUint256Encoded = AbiCoder.defaultAbiCoder().encode(["uint256"], [0]);
|
|
8
8
|
export const oneUint256Encoded = AbiCoder.defaultAbiCoder().encode(["uint256"], [1]);
|
|
9
|
-
export const pollDuration = 10; // 100 seconds (added to unix timestamp of start date)
|
|
10
9
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,wDAAwD,CAAC;AAChG,MAAM,CAAC,MAAM,uBAAuB,GAAG,6EAA6E,CAAC;AACrH,MAAM,CAAC,MAAM,0BAA0B,GAAG,yEAAyE,CAAC;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,OAAO,EAAE,0BAA0B,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,wDAAwD,CAAC;AAChG,MAAM,CAAC,MAAM,uBAAuB,GAAG,6EAA6E,CAAC;AACrH,MAAM,CAAC,MAAM,0BAA0B,GAAG,yEAAyE,CAAC;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,OAAO,EAAE,0BAA0B,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sleep } from "@maci-protocol/sdk";
|
|
1
2
|
import { zeroAddress } from "viem";
|
|
2
3
|
import { ErrorCodes, ESupportedNetworks } from "../ts/common";
|
|
3
4
|
import { CryptoService } from "../ts/crypto/crypto.service";
|
|
@@ -14,43 +15,44 @@ describe("E2E Account Abstraction Tests", () => {
|
|
|
14
15
|
const proofService = new ProofGeneratorService(cryptoService, fileService, sessionKeyService);
|
|
15
16
|
const deployerService = new DeployerService(sessionKeyService, fileService);
|
|
16
17
|
// using an already deployed maci contract
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
let maciContract = "";
|
|
19
|
+
let pollId;
|
|
19
20
|
let approval;
|
|
20
21
|
let sessionKeyAddress;
|
|
21
22
|
beforeAll(async () => {
|
|
22
|
-
approval = await generateApproval(sessionKeyAddress);
|
|
23
23
|
sessionKeyAddress = (await sessionKeyService.generateSessionKey()).sessionKeyAddress;
|
|
24
|
+
approval = await generateApproval(sessionKeyAddress);
|
|
24
25
|
});
|
|
25
26
|
describe("deploy", () => {
|
|
26
27
|
describe("deployMaci", () => {
|
|
27
28
|
it("should deploy all maci related contracts", async () => {
|
|
28
29
|
const { address: maciAddress } = await deployerService.deployMaci({
|
|
29
|
-
approval,
|
|
30
|
-
sessionKeyAddress,
|
|
31
30
|
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
32
31
|
config: testMaciDeploymentConfig,
|
|
33
32
|
});
|
|
33
|
+
maciContract = maciAddress;
|
|
34
34
|
expect(maciAddress).not.toBe(zeroAddress);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
describe("deployPoll", () => {
|
|
38
38
|
it("should deploy a poll", async () => {
|
|
39
|
-
// Serialize the config with the custom serializer
|
|
40
|
-
const serializedConfig = JSON.stringify(testPollDeploymentConfig);
|
|
41
|
-
const pollConfig = JSON.parse(serializedConfig);
|
|
42
39
|
const { pollId: poll } = await deployerService.deployPoll({
|
|
43
|
-
approval,
|
|
44
|
-
sessionKeyAddress,
|
|
45
40
|
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
46
|
-
config:
|
|
41
|
+
config: {
|
|
42
|
+
...testPollDeploymentConfig,
|
|
43
|
+
startDate: Math.floor(Date.now() / 1000) + 100,
|
|
44
|
+
endDate: Math.floor(Date.now() / 1000) + 200,
|
|
45
|
+
},
|
|
47
46
|
});
|
|
48
47
|
expect(poll).toBeDefined();
|
|
48
|
+
pollId = Number.parseInt(poll, 10);
|
|
49
49
|
});
|
|
50
50
|
});
|
|
51
51
|
});
|
|
52
52
|
describe("merge", () => {
|
|
53
53
|
test("should return true when there are no errors", async () => {
|
|
54
|
+
// wait until we can complete a poll
|
|
55
|
+
await sleep(600);
|
|
54
56
|
const { sessionKeyAddress: sessionKey } = await sessionKeyService.generateSessionKey();
|
|
55
57
|
const generatedApproval = await generateApproval(sessionKey);
|
|
56
58
|
const merged = await proofService.merge({
|
|
@@ -65,13 +67,14 @@ describe("E2E Account Abstraction Tests", () => {
|
|
|
65
67
|
test("should throw when given an invalid pollId", async () => {
|
|
66
68
|
const { sessionKeyAddress: sessionKey } = await sessionKeyService.generateSessionKey();
|
|
67
69
|
const generatedApproval = await generateApproval(sessionKey);
|
|
70
|
+
const invalidPollId = 50000;
|
|
68
71
|
await expect(proofService.merge({
|
|
69
72
|
maciContractAddress: maciContract,
|
|
70
|
-
pollId:
|
|
73
|
+
pollId: invalidPollId,
|
|
71
74
|
sessionKeyAddress: sessionKey,
|
|
72
75
|
approval: generatedApproval,
|
|
73
76
|
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
74
|
-
})).rejects.toThrow(
|
|
77
|
+
})).rejects.toThrow(`MACI contract doesn't have any deployed poll ${invalidPollId}`);
|
|
75
78
|
});
|
|
76
79
|
});
|
|
77
80
|
describe("sessionKeys", () => {
|
|
@@ -82,7 +85,7 @@ describe("E2E Account Abstraction Tests", () => {
|
|
|
82
85
|
expect(client.key).toBe("Account");
|
|
83
86
|
expect(client.account.address).not.toBe(zeroAddress);
|
|
84
87
|
expect(client.account.kernelVersion).toBe(KERNEL_VERSION);
|
|
85
|
-
expect(client.account.entryPoint).toBe(ENTRY_POINT);
|
|
88
|
+
expect(client.account.entryPoint.version).toBe(ENTRY_POINT.version);
|
|
86
89
|
// this is an account with limited permissions so no sudo validator
|
|
87
90
|
expect(client.account.kernelPluginManager.address).toBe(zeroAddress);
|
|
88
91
|
expect(client.account.kernelPluginManager.sudoValidator).toBe(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.aa.test.js","sourceRoot":"","sources":["../../tests/e2e.aa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,WAAW,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"e2e.aa.test.js","sourceRoot":"","sources":["../../tests/e2e.aa.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,54 @@
|
|
|
1
|
-
// To only run this file: pnpm exec jest --testPathPattern=tests/e2e.deploy.test.ts
|
|
2
|
-
import { genRandomSalt } from "@maci-protocol/crypto";
|
|
3
1
|
import { Keypair } from "@maci-protocol/domainobjs";
|
|
4
|
-
import {
|
|
2
|
+
import { ContractStorage, joinPoll, signup, sleep } from "@maci-protocol/sdk";
|
|
5
3
|
import { ValidationPipe } from "@nestjs/common";
|
|
6
4
|
import { Test } from "@nestjs/testing";
|
|
7
5
|
import dotenv from "dotenv";
|
|
8
|
-
import hardhat from "hardhat";
|
|
9
6
|
import { io } from "socket.io-client";
|
|
10
7
|
import { zeroAddress } from "viem";
|
|
8
|
+
import path from "path";
|
|
11
9
|
import { AppModule } from "../ts/app.module";
|
|
12
|
-
import { ESupportedNetworks } from "../ts/common";
|
|
10
|
+
import { ESupportedNetworks, getSigner } from "../ts/common";
|
|
13
11
|
import { getPublicClient } from "../ts/common/accountAbstraction";
|
|
14
|
-
import { testMaciDeploymentConfig, testPollDeploymentConfig } from "../ts/deployer/__tests__/utils";
|
|
12
|
+
import { coordinatorMACIKeypair, pollStartDateExtraSeconds, testMaciDeploymentConfig, testPollDeploymentConfig, } from "../ts/deployer/__tests__/utils";
|
|
13
|
+
import { DeployerModule } from "../ts/deployer/deployer.module";
|
|
15
14
|
import { FileModule } from "../ts/file/file.module";
|
|
15
|
+
import { ProofModule } from "../ts/proof/proof.module";
|
|
16
16
|
import { generateApproval, getKernelAccount } from "../ts/sessionKeys/__tests__/utils";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
17
|
+
import { SessionKeysModule } from "../ts/sessionKeys/sessionKeys.module";
|
|
18
|
+
import { pollJoiningTestZkeyPath, testPollJoiningWasmPath, testPollJoiningWitnessPath, testRapidsnarkPath, zeroUint256Encoded, } from "./constants";
|
|
19
|
+
import { encryptWithCoordinatorRSAPublicKey, getAuthorizationHeader, rechargeGasIfNeeded } from "./utils";
|
|
19
20
|
dotenv.config();
|
|
20
|
-
|
|
21
|
+
jest.setTimeout(700000); // Sets timeout to 700 seconds
|
|
22
|
+
const TEST_URL = "http://localhost:3000/v1";
|
|
23
|
+
const CHAIN = ESupportedNetworks.OPTIMISM_SEPOLIA;
|
|
24
|
+
const REGEX_SUBGRAPH = /^https:\/\/api\.studio\.thegraph\.com\/query\/\d+\/maci-subgraph\/v0\.0\.\d+$/;
|
|
21
25
|
const NUM_USERS = 1;
|
|
22
|
-
const
|
|
26
|
+
const VOTE_OPTIONS = {
|
|
23
27
|
"0": 0,
|
|
24
28
|
"1": 0,
|
|
25
29
|
};
|
|
26
30
|
describe("E2E Deployment Tests", () => {
|
|
27
31
|
let signer;
|
|
28
32
|
let encryptedHeader;
|
|
29
|
-
let coordinatorKeypair;
|
|
30
33
|
let sessionKeyAddress;
|
|
31
34
|
let approval;
|
|
32
35
|
let app;
|
|
33
36
|
let socket;
|
|
34
|
-
const publicClient = getPublicClient(
|
|
37
|
+
const publicClient = getPublicClient(CHAIN);
|
|
35
38
|
let maciAddress;
|
|
36
39
|
let pollId;
|
|
40
|
+
const pollDuration = 600;
|
|
37
41
|
// set up coordinator address
|
|
38
42
|
beforeAll(async () => {
|
|
39
|
-
|
|
43
|
+
signer = getSigner(CHAIN);
|
|
40
44
|
encryptedHeader = await getAuthorizationHeader(signer);
|
|
41
|
-
coordinatorKeypair = new Keypair();
|
|
42
45
|
process.env.COORDINATOR_ADDRESSES = await signer.getAddress();
|
|
43
46
|
await rechargeGasIfNeeded(process.env.COORDINATOR_ADDRESSES, "0.007", "0.007");
|
|
44
47
|
});
|
|
45
48
|
// set up NestJS app
|
|
46
49
|
beforeAll(async () => {
|
|
47
50
|
const moduleFixture = await Test.createTestingModule({
|
|
48
|
-
imports: [AppModule, FileModule],
|
|
51
|
+
imports: [AppModule, FileModule, DeployerModule, ProofModule, SessionKeysModule],
|
|
49
52
|
}).compile();
|
|
50
53
|
app = moduleFixture.createNestApplication();
|
|
51
54
|
app.useGlobalPipes(new ValidationPipe({ transform: true }));
|
|
@@ -54,6 +57,8 @@ describe("E2E Deployment Tests", () => {
|
|
|
54
57
|
});
|
|
55
58
|
afterAll(async () => {
|
|
56
59
|
await app.close();
|
|
60
|
+
const storageInstance = ContractStorage.getInstance(path.join(process.cwd(), "deployed-contracts.json"));
|
|
61
|
+
storageInstance.cleanup(CHAIN);
|
|
57
62
|
});
|
|
58
63
|
// set up auth header in WS connection
|
|
59
64
|
beforeEach(async () => {
|
|
@@ -75,8 +80,17 @@ describe("E2E Deployment Tests", () => {
|
|
|
75
80
|
socket.disconnect();
|
|
76
81
|
});
|
|
77
82
|
// run tests
|
|
83
|
+
test("should retrieve RSA public key", async () => {
|
|
84
|
+
const response = await fetch(`${TEST_URL}/proof/publicKey`, {
|
|
85
|
+
method: "GET",
|
|
86
|
+
});
|
|
87
|
+
const body = (await response.json());
|
|
88
|
+
expect(response.status).toBe(200);
|
|
89
|
+
expect(body.publicKey).toBeDefined();
|
|
90
|
+
// this RSA should be used in the encrypted auth header and the encrypted coordinator maci private key
|
|
91
|
+
});
|
|
78
92
|
test("should retrieve the session key address", async () => {
|
|
79
|
-
const response = await fetch(`${
|
|
93
|
+
const response = await fetch(`${TEST_URL}/session-keys/generate`, {
|
|
80
94
|
method: "GET",
|
|
81
95
|
headers: {
|
|
82
96
|
Authorization: encryptedHeader,
|
|
@@ -93,10 +107,14 @@ describe("E2E Deployment Tests", () => {
|
|
|
93
107
|
});
|
|
94
108
|
test("should deploy MACI correctly", async () => {
|
|
95
109
|
const config = testMaciDeploymentConfig;
|
|
96
|
-
config.
|
|
97
|
-
config.
|
|
98
|
-
|
|
99
|
-
|
|
110
|
+
config.VerifyingKeysRegistry.args.stateTreeDepth = config.VerifyingKeysRegistry.args.stateTreeDepth.toString();
|
|
111
|
+
config.VerifyingKeysRegistry.args.pollStateTreeDepth =
|
|
112
|
+
config.VerifyingKeysRegistry.args.pollStateTreeDepth.toString();
|
|
113
|
+
config.VerifyingKeysRegistry.args.intStateTreeDepth =
|
|
114
|
+
config.VerifyingKeysRegistry.args.intStateTreeDepth.toString();
|
|
115
|
+
config.VerifyingKeysRegistry.args.voteOptionTreeDepth =
|
|
116
|
+
config.VerifyingKeysRegistry.args.voteOptionTreeDepth.toString();
|
|
117
|
+
const response = await fetch(`${TEST_URL}/deploy/maci`, {
|
|
100
118
|
method: "POST",
|
|
101
119
|
headers: {
|
|
102
120
|
Authorization: encryptedHeader,
|
|
@@ -105,7 +123,7 @@ describe("E2E Deployment Tests", () => {
|
|
|
105
123
|
body: JSON.stringify({
|
|
106
124
|
approval,
|
|
107
125
|
sessionKeyAddress,
|
|
108
|
-
chain:
|
|
126
|
+
chain: CHAIN,
|
|
109
127
|
config,
|
|
110
128
|
}),
|
|
111
129
|
});
|
|
@@ -117,21 +135,18 @@ describe("E2E Deployment Tests", () => {
|
|
|
117
135
|
});
|
|
118
136
|
test("should deploy a poll correctly", async () => {
|
|
119
137
|
const config = testPollDeploymentConfig;
|
|
120
|
-
config.coordinatorPubkey = coordinatorKeypair.pubKey.serialize();
|
|
121
138
|
config.voteOptions = config.voteOptions.toString();
|
|
122
|
-
const startDate = Math.floor(Date.now() / 1000) +
|
|
139
|
+
const startDate = Math.floor(Date.now() / 1000) + pollStartDateExtraSeconds;
|
|
123
140
|
config.startDate = startDate;
|
|
124
141
|
config.endDate = startDate + pollDuration;
|
|
125
|
-
const response = await fetch(`${
|
|
142
|
+
const response = await fetch(`${TEST_URL}/deploy/poll`, {
|
|
126
143
|
method: "POST",
|
|
127
144
|
headers: {
|
|
128
145
|
Authorization: encryptedHeader,
|
|
129
146
|
"Content-Type": "application/json",
|
|
130
147
|
},
|
|
131
148
|
body: JSON.stringify({
|
|
132
|
-
|
|
133
|
-
sessionKeyAddress,
|
|
134
|
-
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
149
|
+
chain: CHAIN,
|
|
135
150
|
config,
|
|
136
151
|
}),
|
|
137
152
|
});
|
|
@@ -141,41 +156,19 @@ describe("E2E Deployment Tests", () => {
|
|
|
141
156
|
// save them for next tests
|
|
142
157
|
pollId = BigInt(body.pollId);
|
|
143
158
|
});
|
|
144
|
-
test("should deploy a subgraph correctly", async () => {
|
|
145
|
-
const blockNumber = Number(await publicClient.getBlockNumber());
|
|
146
|
-
const response = await fetch(`${LOCALHOST}/v1/subgraph/deploy`, {
|
|
147
|
-
method: "POST",
|
|
148
|
-
headers: {
|
|
149
|
-
Authorization: encryptedHeader,
|
|
150
|
-
"Content-Type": "application/json",
|
|
151
|
-
},
|
|
152
|
-
body: JSON.stringify({
|
|
153
|
-
maciContractAddress: maciAddress,
|
|
154
|
-
startBlock: blockNumber,
|
|
155
|
-
network: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
156
|
-
name: process.env.SUBGRAPH_NAME,
|
|
157
|
-
tag: `v0.0.${blockNumber}`, // different versions per test using block number
|
|
158
|
-
}),
|
|
159
|
-
});
|
|
160
|
-
const body = (await response.json());
|
|
161
|
-
const { url } = body;
|
|
162
|
-
const regex = /^https:\/\/api\.studio\.thegraph\.com\/query\/\d+\/maci-subgraph\/v0\.0\.\d+$/;
|
|
163
|
-
expect(response.status).toBe(201);
|
|
164
|
-
expect(body.url).toBeDefined();
|
|
165
|
-
expect(regex.test(url)).toBe(true);
|
|
166
|
-
});
|
|
167
159
|
test("should allow voting on a poll", async () => {
|
|
160
|
+
await sleep(pollStartDateExtraSeconds * 1000);
|
|
168
161
|
for (let i = 0; i < NUM_USERS; i += 1) {
|
|
169
162
|
const keypairUser = new Keypair();
|
|
170
|
-
const
|
|
171
|
-
const
|
|
163
|
+
const userPublicKey = keypairUser.publicKey.serialize();
|
|
164
|
+
const userPrivateKey = keypairUser.privateKey.serialize();
|
|
172
165
|
const vote = i % 2;
|
|
173
|
-
|
|
166
|
+
VOTE_OPTIONS[String(vote)] += 1;
|
|
174
167
|
// user signs up to MACI
|
|
175
168
|
// eslint-disable-next-line no-await-in-loop
|
|
176
169
|
await signup({
|
|
177
170
|
maciAddress,
|
|
178
|
-
|
|
171
|
+
maciPublicKey: userPublicKey,
|
|
179
172
|
sgData: zeroUint256Encoded,
|
|
180
173
|
signer,
|
|
181
174
|
});
|
|
@@ -183,7 +176,7 @@ describe("E2E Deployment Tests", () => {
|
|
|
183
176
|
// eslint-disable-next-line no-await-in-loop
|
|
184
177
|
await joinPoll({
|
|
185
178
|
maciAddress,
|
|
186
|
-
privateKey:
|
|
179
|
+
privateKey: userPrivateKey,
|
|
187
180
|
stateIndex: 1n,
|
|
188
181
|
pollId: BigInt(pollId),
|
|
189
182
|
pollJoiningZkey: pollJoiningTestZkeyPath,
|
|
@@ -195,26 +188,33 @@ describe("E2E Deployment Tests", () => {
|
|
|
195
188
|
ivcpDataArg: zeroUint256Encoded,
|
|
196
189
|
signer,
|
|
197
190
|
});
|
|
198
|
-
// user publishes a vote
|
|
199
|
-
// eslint-disable-next-line no-await-in-loop
|
|
200
|
-
const publishData = await publish({
|
|
201
|
-
pubkey: pubkeyUser,
|
|
202
|
-
stateIndex: 1n,
|
|
203
|
-
voteOptionIndex: BigInt(vote),
|
|
204
|
-
nonce: 1n,
|
|
205
|
-
pollId: BigInt(pollId),
|
|
206
|
-
newVoteWeight: 1n,
|
|
207
|
-
maciAddress,
|
|
208
|
-
salt: genRandomSalt(),
|
|
209
|
-
privateKey: privkeyUser,
|
|
210
|
-
signer,
|
|
211
|
-
});
|
|
212
|
-
expect(publishData.hash).not.toBe(zeroAddress);
|
|
213
191
|
}
|
|
214
192
|
});
|
|
193
|
+
test("should deploy a subgraph correctly", async () => {
|
|
194
|
+
const blockNumber = await publicClient.getBlockNumber();
|
|
195
|
+
const response = await fetch(`${TEST_URL}/subgraph/deploy`, {
|
|
196
|
+
method: "POST",
|
|
197
|
+
headers: {
|
|
198
|
+
Authorization: encryptedHeader,
|
|
199
|
+
"Content-Type": "application/json",
|
|
200
|
+
},
|
|
201
|
+
body: JSON.stringify({
|
|
202
|
+
maciContractAddress: maciAddress,
|
|
203
|
+
startBlock: Number(blockNumber),
|
|
204
|
+
network: CHAIN,
|
|
205
|
+
name: process.env.SUBGRAPH_NAME,
|
|
206
|
+
tag: `v0.0.${blockNumber}`, // different versions per test using block number
|
|
207
|
+
}),
|
|
208
|
+
});
|
|
209
|
+
const body = (await response.json());
|
|
210
|
+
const { url } = body;
|
|
211
|
+
expect(response.status).toBe(201);
|
|
212
|
+
expect(body.url).toBeDefined();
|
|
213
|
+
expect(REGEX_SUBGRAPH.test(url)).toBe(true);
|
|
214
|
+
});
|
|
215
215
|
test("should merge correctly", async () => {
|
|
216
|
-
await sleep(
|
|
217
|
-
const response = await fetch(`${
|
|
216
|
+
await sleep(pollDuration * 2000);
|
|
217
|
+
const response = await fetch(`${TEST_URL}/proof/merge`, {
|
|
218
218
|
method: "POST",
|
|
219
219
|
headers: {
|
|
220
220
|
Authorization: encryptedHeader,
|
|
@@ -225,7 +225,55 @@ describe("E2E Deployment Tests", () => {
|
|
|
225
225
|
pollId: Number(pollId),
|
|
226
226
|
approval,
|
|
227
227
|
sessionKeyAddress,
|
|
228
|
-
chain:
|
|
228
|
+
chain: CHAIN,
|
|
229
|
+
}),
|
|
230
|
+
});
|
|
231
|
+
expect(response.status).toBe(201);
|
|
232
|
+
});
|
|
233
|
+
test("should generate proofs correctly", async () => {
|
|
234
|
+
const blockNumber = await publicClient.getBlockNumber();
|
|
235
|
+
const encryptedCoordinatorPrivateKey = await encryptWithCoordinatorRSAPublicKey(coordinatorMACIKeypair.privateKey.serialize());
|
|
236
|
+
const response = await fetch(`${TEST_URL}/proof/generate`, {
|
|
237
|
+
method: "POST",
|
|
238
|
+
headers: {
|
|
239
|
+
Authorization: encryptedHeader,
|
|
240
|
+
"Content-Type": "application/json",
|
|
241
|
+
},
|
|
242
|
+
body: JSON.stringify({
|
|
243
|
+
poll: Number(pollId),
|
|
244
|
+
maciContractAddress: maciAddress,
|
|
245
|
+
useQuadraticVoting: testPollDeploymentConfig.useQuadraticVoting,
|
|
246
|
+
encryptedCoordinatorPrivateKey,
|
|
247
|
+
startBlock: Number(blockNumber) - 100,
|
|
248
|
+
endBlock: Number(blockNumber) + 100,
|
|
249
|
+
blocksPerBatch: 20,
|
|
250
|
+
approval,
|
|
251
|
+
sessionKeyAddress,
|
|
252
|
+
chain: CHAIN,
|
|
253
|
+
}),
|
|
254
|
+
});
|
|
255
|
+
const body = (await response.json());
|
|
256
|
+
expect(response.status).toBe(201);
|
|
257
|
+
expect(body.processProofs).toBeDefined();
|
|
258
|
+
expect(body.processProofs.length).toBeGreaterThan(0);
|
|
259
|
+
expect(body.tallyProofs).toBeDefined();
|
|
260
|
+
expect(body.tallyProofs.length).toBeGreaterThan(0);
|
|
261
|
+
expect(body.tallyData).toBeDefined();
|
|
262
|
+
expect(body.tallyData.results).toBeDefined();
|
|
263
|
+
});
|
|
264
|
+
test("should submit results on-chain correctly", async () => {
|
|
265
|
+
const response = await fetch(`${TEST_URL}/proof/submit`, {
|
|
266
|
+
method: "POST",
|
|
267
|
+
headers: {
|
|
268
|
+
Authorization: encryptedHeader,
|
|
269
|
+
"Content-Type": "application/json",
|
|
270
|
+
},
|
|
271
|
+
body: JSON.stringify({
|
|
272
|
+
pollId: Number(pollId),
|
|
273
|
+
maciContractAddress: maciAddress,
|
|
274
|
+
approval,
|
|
275
|
+
sessionKeyAddress,
|
|
276
|
+
chain: CHAIN,
|
|
229
277
|
}),
|
|
230
278
|
});
|
|
231
279
|
expect(response.status).toBe(201);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"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"}
|
package/build/tests/utils.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { type Signer } from "ethers";
|
|
2
2
|
import { Hex } from "viem";
|
|
3
|
+
/**
|
|
4
|
+
* Encrypt a message using the coordinator's public key
|
|
5
|
+
* @param message to encrypt
|
|
6
|
+
* @returns encrypted message (ciphertext)
|
|
7
|
+
*/
|
|
8
|
+
export declare const encryptWithCoordinatorRSAPublicKey: (message: string) => Promise<string>;
|
|
3
9
|
/**
|
|
4
10
|
* Sign a message with a wallet and encrypt it using the coordinator's public key
|
|
5
11
|
* @param signer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAK3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAgBd,CAAC"}
|