diff --git a/.github/workflows/coordinator-build.yml b/.github/workflows/coordinator-build.yml index fe16a3c3..218a4f8d 100644 --- a/.github/workflows/coordinator-build.yml +++ b/.github/workflows/coordinator-build.yml @@ -10,12 +10,13 @@ env: COORDINATOR_PUBLIC_KEY_PATH: "./pub.key" COORDINATOR_PRIVATE_KEY_PATH: "./priv.key" COORDINATOR_TALLY_ZKEY_NAME: "TallyVotes_10-1-2_test" - COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME: "ProcessMessages_10-2-1-2_test" + COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME: "ProcessMessages_10-20-2_test" + COORDINATOR_POLL_JOINING_ZKEY_NAME: "PollJoining_10_test" COORDINATOR_ZKEY_PATH: "./zkeys/" COORDINATOR_RAPIDSNARK_EXE: "~/rapidsnark/build/prover" PIMLICO_API_KEY: "pim_" RPC_API_KEY: "rpc_" - SUBGRAPH_FOLDER: "./node_modules/maci-subgraph" + SUBGRAPH_FOLDER: "./node_modules/maci-platform-subgraph" SUBGRAPH_NAME: ${{ secrets.SUBGRAPH_NAME }} SUBGRAPH_PROVIDER_URL: ${{ secrets.SUBGRAPH_PROVIDER_URL }} SUBGRAPH_DEPLOY_KEY: ${{ secrets.SUBGRAPH_DEPLOY_KEY }} @@ -103,7 +104,7 @@ jobs: - name: Download zkeys run: | - pnpm download-zkeys:test + pnpm download-zkeys:latest - name: Generate keypair run: | diff --git a/package.json b/package.json index e074ebb7..7618c5ee 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build": "lerna run build", "clean": "lerna exec -- rm -rf node_modules build && rm -rf node_modules", "commit": "git cz", + "download-zkeys:latest": "lerna run download-zkeys:latest --scope=maci-coordinator", "download-zkeys:test": "lerna run download-zkeys:test --scope=maci-coordinator", "download-zkeys:prod": "lerna run download-zkeys:prod --scope=maci-coordinator", "prettier": "prettier -c .", diff --git a/packages/coordinator/.env.example b/packages/coordinator/.env.example index 17f50eb1..7c271cea 100644 --- a/packages/coordinator/.env.example +++ b/packages/coordinator/.env.example @@ -13,7 +13,11 @@ COORDINATOR_TALLY_ZKEY_NAME=TallyVotes_10-1-2_test # Make sure you have zkeys folder # https://maci.pse.dev/docs/trusted-setup -COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME=ProcessMessages_10-2-1-2_test +COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME=ProcessMessages_10-20-2_test + +# Make sure you have zkeys folder +# https://maci.pse.dev/docs/trusted-setup +COORDINATOR_POLL_JOINING_ZKEY_NAME=PollJoining_10_test # Rapidsnark executable path COORDINATOR_RAPIDSNARK_EXE= @@ -34,7 +38,7 @@ COORDINATOR_ALLOWED_ORIGINS= COORDINATOR_PORT= # Subgraph name -SUBGRAPH_NAME="maci-subgraph" +SUBGRAPH_NAME="maci-platform-subgraph" # Subgraph provider url SUBGRAPH_PROVIDER_URL=https://api.studio.thegraph.com/deploy/ @@ -43,7 +47,7 @@ SUBGRAPH_PROVIDER_URL=https://api.studio.thegraph.com/deploy/ SUBGRAPH_DEPLOY_KEY= # Subgraph project folder -SUBGRAPH_FOLDER=./node_modules/maci-subgraph +SUBGRAPH_FOLDER=./node_modules/maci-platform-subgraph # API Key for Pimlico RPC Bundler PIMLICO_API_KEY="pim_" diff --git a/packages/coordinator/package.json b/packages/coordinator/package.json index 78f85245..e3d8bd82 100644 --- a/packages/coordinator/package.json +++ b/packages/coordinator/package.json @@ -25,6 +25,7 @@ "types": "tsc -p tsconfig.json --noEmit", "generate-maci-keypair": "pnpm run run:node ./scripts/generateMaciKeypair.ts", "generate-keypair": "pnpm run run:node ./scripts/generateKeypair.ts", + "download-zkeys:latest": "pnpm run run:node ./scripts/downloadZKeys.ts latest ./zkeys", "download-zkeys:test": "pnpm run run:node ./scripts/downloadZKeys.ts test ./zkeys", "download-zkeys:prod": "pnpm run run:node ./scripts/downloadZKeys.ts prod ./zkeys", "upload-round-metadata": "pnpm run run:node ./scripts/uploadRoundMetadata.ts" @@ -52,11 +53,11 @@ "hardhat": "^2.22.15", "helmet": "^8.0.0", "lowdb": "^1.0.0", - "maci-circuits": "^2.4.0", - "maci-cli": "^2.3.0", - "maci-contracts": "^2.3.0", - "maci-domainobjs": "^2.0.0", - "maci-subgraph": "^2.3.0", + "maci-circuits": "0.0.0-ci.30f517a", + "maci-cli": "0.0.0-ci.30f517a", + "maci-contracts": "0.0.0-ci.30f517a", + "maci-domainobjs": "0.0.0-ci.30f517a", + "maci-subgraph": "0.0.0-ci.30f517a", "date-fns": "^4.1.0", "mustache": "^4.2.0", "permissionless": ">=0.1.18 <=0.1.29", diff --git a/packages/coordinator/scripts/downloadZKeys.ts b/packages/coordinator/scripts/downloadZKeys.ts index 0f543254..edc774e6 100644 --- a/packages/coordinator/scripts/downloadZKeys.ts +++ b/packages/coordinator/scripts/downloadZKeys.ts @@ -6,6 +6,7 @@ import path from "path"; const ZKEY_PATH = path.resolve(process.argv.slice(3)[0]); const ZKEYS_URLS = { + latest: "https://maci-develop-fra.s3.eu-central-1.amazonaws.com/v3.0.0/maci_artifacts_v3.0.0_test.tar.gz", test: "https://maci-develop-fra.s3.eu-central-1.amazonaws.com/v2.0.0/maci_artifacts_10-2-1-2_test.tar.gz", prod: "https://maci-develop-fra.s3.eu-central-1.amazonaws.com/v2.0.0/maci_artifacts_14-9-2-3_prod.tar.gz", }; diff --git a/packages/coordinator/tests/app.test.ts b/packages/coordinator/tests/app.test.ts index 32d66ee3..664ebc42 100644 --- a/packages/coordinator/tests/app.test.ts +++ b/packages/coordinator/tests/app.test.ts @@ -13,7 +13,6 @@ import { signup, publish, timeTravel, - mergeMessages, mergeSignups, } from "maci-cli"; import { type Proof, type TallyData, Poll__factory as PollFactory } from "maci-contracts"; @@ -35,9 +34,8 @@ import { ESubgraphEvents, type IDeploySubgraphArgs } from "../ts/subgraph/types" const STATE_TREE_DEPTH = 10; const INT_STATE_TREE_DEPTH = 1; -const MSG_TREE_DEPTH = 2; const VOTE_OPTION_TREE_DEPTH = 2; -const MSG_BATCH_DEPTH = 1; +const MSG_BATCH_SIZE = 20; describe("e2e", () => { const coordinatorKeypair = new Keypair(); @@ -61,22 +59,23 @@ describe("e2e", () => { process.env.COORDINATOR_ADDRESSES = await signer.getAddress(); - await deployVkRegistryContract({ signer }); + const vkRegistry = await deployVkRegistryContract({ signer }); await setVerifyingKeys({ quiet: true, + vkRegistry, stateTreeDepth: STATE_TREE_DEPTH, intStateTreeDepth: INT_STATE_TREE_DEPTH, - messageTreeDepth: MSG_TREE_DEPTH, voteOptionTreeDepth: VOTE_OPTION_TREE_DEPTH, - messageBatchDepth: MSG_BATCH_DEPTH, + messageBatchSize: MSG_BATCH_SIZE, processMessagesZkeyPathNonQv: path.resolve( __dirname, - "../zkeys/ProcessMessagesNonQv_10-2-1-2_test/ProcessMessagesNonQv_10-2-1-2_test.0.zkey", + "../zkeys/ProcessMessagesNonQv_10-20-2_test/ProcessMessagesNonQv_10-20-2_test.0.zkey", ), tallyVotesZkeyPathNonQv: path.resolve( __dirname, "../zkeys/TallyVotesNonQv_10-1-2_test/TallyVotesNonQv_10-1-2_test.0.zkey", ), + pollJoiningZkeyPath: path.resolve(__dirname, "../zkeys/PollJoining_10_test/PollJoining_10_test.0.zkey"), useQuadraticVoting: false, signer, }); @@ -86,8 +85,7 @@ describe("e2e", () => { pollContracts = await deployPoll({ pollDuration: 30, intStateTreeDepth: INT_STATE_TREE_DEPTH, - messageTreeSubDepth: MSG_BATCH_DEPTH, - messageTreeDepth: MSG_TREE_DEPTH, + messageBatchSize: MSG_BATCH_SIZE, voteOptionTreeDepth: VOTE_OPTION_TREE_DEPTH, coordinatorPubkey: coordinatorKeypair.pubKey.serialize(), useQuadraticVoting: false, @@ -561,7 +559,7 @@ describe("e2e", () => { expect(result.body).toStrictEqual({ statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.NOT_MERGED_STATE_TREE, + message: ErrorCodes.NOT_MERGED_STATE_TREE.toString(), }); }); @@ -583,7 +581,7 @@ describe("e2e", () => { }); }); - expect(result.message).toBe(ErrorCodes.NOT_MERGED_STATE_TREE); + expect(result.message).toBe(ErrorCodes.NOT_MERGED_STATE_TREE.toString()); }); test("should throw an error if signups are not merged", async () => { @@ -605,7 +603,7 @@ describe("e2e", () => { expect(result.body).toStrictEqual({ statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.NOT_MERGED_STATE_TREE, + message: ErrorCodes.NOT_MERGED_STATE_TREE.toString(), }); }); @@ -627,10 +625,10 @@ describe("e2e", () => { }); }); - expect(result.message).toBe(ErrorCodes.NOT_MERGED_STATE_TREE); + expect(result.message).toBe(ErrorCodes.NOT_MERGED_STATE_TREE.toString()); }); - test("should throw an error if messages are not merged", async () => { + test("should throw an error if coordinator key decryption is failed", async () => { const pollContract = PollFactory.connect(pollContracts.poll, signer); const isStateMerged = await pollContract.stateMerged(); @@ -639,8 +637,6 @@ describe("e2e", () => { await mergeSignups({ pollId: 0n, signer }); } - const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH!); - const encryptedCoordinatorPrivateKey = cryptoService.encrypt(publicKey, coordinatorKeypair.privKey.serialize()); const encryptedHeader = await getAuthorizationHeader(); const result = await request(app.getHttpServer() as App) @@ -648,7 +644,7 @@ describe("e2e", () => { .set("Authorization", encryptedHeader) .send({ poll: 0, - encryptedCoordinatorPrivateKey, + encryptedCoordinatorPrivateKey: coordinatorKeypair.privKey.serialize(), maciContractAddress: maciAddresses.maciAddress, tallyContractAddress: pollContracts.tally, useQuadraticVoting: false, @@ -657,11 +653,11 @@ describe("e2e", () => { expect(result.body).toStrictEqual({ statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.NOT_MERGED_MESSAGE_TREE, + message: ErrorCodes.DECRYPTION.toString(), }); }); - test("should throw an error if messages are not merged (ws)", async () => { + test("should throw an error if coordinator key decryption is failed (ws)", async () => { const pollContract = PollFactory.connect(pollContracts.poll, signer); const isStateMerged = await pollContract.stateMerged(); @@ -670,52 +666,6 @@ describe("e2e", () => { await mergeSignups({ pollId: 0n, signer }); } - const publicKey = await fs.promises.readFile(process.env.COORDINATOR_PUBLIC_KEY_PATH!); - const encryptedCoordinatorPrivateKey = cryptoService.encrypt(publicKey, coordinatorKeypair.privKey.serialize()); - - const args: IGenerateArgs = { - poll: 0, - maciContractAddress: maciAddresses.maciAddress, - tallyContractAddress: pollContracts.tally, - useQuadraticVoting: false, - encryptedCoordinatorPrivateKey, - }; - - const result = await new Promise((resolve) => { - socket.emit(EProofGenerationEvents.START, args).on(EProofGenerationEvents.ERROR, (error: Error) => { - resolve(error); - }); - }); - - expect(result.message).toBe(ErrorCodes.NOT_MERGED_MESSAGE_TREE); - }); - - test("should throw an error if coordinator key decryption is failed", async () => { - await mergeMessages({ pollId: 0n, signer }); - - const encryptedHeader = await getAuthorizationHeader(); - - const result = await request(app.getHttpServer() as App) - .post("/v1/proof/generate") - .set("Authorization", encryptedHeader) - .send({ - poll: 0, - encryptedCoordinatorPrivateKey: coordinatorKeypair.privKey.serialize(), - maciContractAddress: maciAddresses.maciAddress, - tallyContractAddress: pollContracts.tally, - useQuadraticVoting: false, - }) - .expect(400); - - expect(result.body).toStrictEqual({ - statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.DECRYPTION, - }); - }); - - test("should throw an error if coordinator key decryption is failed (ws)", async () => { - await mergeMessages({ pollId: 0n, signer }); - const args: IGenerateArgs = { poll: 0, maciContractAddress: maciAddresses.maciAddress, @@ -730,7 +680,7 @@ describe("e2e", () => { }); }); - expect(result.message).toBe(ErrorCodes.DECRYPTION); + expect(result.message).toBe(ErrorCodes.DECRYPTION.toString()); }); test("should throw an error if there is no such poll", async () => { @@ -750,7 +700,7 @@ describe("e2e", () => { expect(result.body).toStrictEqual({ statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.POLL_NOT_FOUND, + message: ErrorCodes.POLL_NOT_FOUND.toString(), }); }); @@ -769,7 +719,7 @@ describe("e2e", () => { }); }); - expect(result.message).toBe(ErrorCodes.POLL_NOT_FOUND); + expect(result.message).toBe(ErrorCodes.POLL_NOT_FOUND.toString()); }); test("should throw an error if there is no authorization header", async () => { @@ -828,7 +778,7 @@ describe("e2e", () => { expect(result.body).toStrictEqual({ statusCode: HttpStatus.BAD_REQUEST, - message: ErrorCodes.DECRYPTION, + message: ErrorCodes.DECRYPTION.toString(), }); }); @@ -847,7 +797,7 @@ describe("e2e", () => { }); }); - expect(result.message).toBe(ErrorCodes.DECRYPTION); + expect(result.message).toBe(ErrorCodes.DECRYPTION.toString()); }); test("should generate proofs properly", async () => { diff --git a/packages/coordinator/tests/e2e.aa.test.ts b/packages/coordinator/tests/e2e.aa.test.ts index 080e5923..79ff93b6 100644 --- a/packages/coordinator/tests/e2e.aa.test.ts +++ b/packages/coordinator/tests/e2e.aa.test.ts @@ -95,6 +95,6 @@ describe("E2E Account Abstraction Tests", () => { approval, chain: ESupportedNetworks.OPTIMISM_SEPOLIA, }), - ).rejects.toThrow(ErrorCodes.POLL_NOT_FOUND); + ).rejects.toThrow(ErrorCodes.POLL_NOT_FOUND.toString()); }); }); diff --git a/packages/coordinator/ts/common/__tests__/common.test.ts b/packages/coordinator/ts/common/__tests__/common.test.ts index cc9a7b29..097f7982 100644 --- a/packages/coordinator/ts/common/__tests__/common.test.ts +++ b/packages/coordinator/ts/common/__tests__/common.test.ts @@ -11,7 +11,7 @@ describe("common", () => { test("should throw when PIMLICO_API_KEY is not set", () => { delete process.env.PIMLICO_API_KEY; - expect(() => genPimlicoRPCUrl("optimism-sepolia")).toThrow(ErrorCodes.PIMLICO_API_KEY_NOT_SET); + expect(() => genPimlicoRPCUrl("optimism-sepolia")).toThrow(ErrorCodes.PIMLICO_API_KEY_NOT_SET.toString()); }); }); }); diff --git a/packages/coordinator/ts/common/accountAbstraction.ts b/packages/coordinator/ts/common/accountAbstraction.ts index bb06ea84..48d6dc4e 100644 --- a/packages/coordinator/ts/common/accountAbstraction.ts +++ b/packages/coordinator/ts/common/accountAbstraction.ts @@ -23,7 +23,7 @@ export const genPimlicoRPCUrl = (network: string): string => { const pimlicoAPIKey = process.env.PIMLICO_API_KEY; if (!pimlicoAPIKey) { - throw new Error(ErrorCodes.PIMLICO_API_KEY_NOT_SET); + throw new Error(ErrorCodes.PIMLICO_API_KEY_NOT_SET.toString()); } return `https://api.pimlico.io/v2/${network}/rpc?apikey=${pimlicoAPIKey}`; @@ -39,7 +39,7 @@ export const genAlchemyRPCUrl = (network: ESupportedNetworks): string => { const rpcAPIKey = process.env.RPC_API_KEY; if (!rpcAPIKey) { - throw new Error(ErrorCodes.RPC_API_KEY_NOT_SET); + throw new Error(ErrorCodes.RPC_API_KEY_NOT_SET.toString()); } switch (network) { @@ -48,7 +48,7 @@ export const genAlchemyRPCUrl = (network: ESupportedNetworks): string => { case ESupportedNetworks.ETHEREUM_SEPOLIA: return `https://eth-sepolia.g.alchemy.com/v2/${rpcAPIKey}`; default: - throw new Error(ErrorCodes.UNSUPPORTED_NETWORK); + throw new Error(ErrorCodes.UNSUPPORTED_NETWORK.toString()); } }; diff --git a/packages/coordinator/ts/common/errors.ts b/packages/coordinator/ts/common/errors.ts index 2e9732c4..39a05b5b 100644 --- a/packages/coordinator/ts/common/errors.ts +++ b/packages/coordinator/ts/common/errors.ts @@ -2,20 +2,19 @@ * Error codes that are used for api responses */ export enum ErrorCodes { - NOT_MERGED_STATE_TREE = "0", - NOT_MERGED_MESSAGE_TREE = "1", - PRIVATE_KEY_MISMATCH = "2", - POLL_NOT_FOUND = "3", - DECRYPTION = "4", - ENCRYPTION = "5", - FILE_NOT_FOUND = "6", - SUBGRAPH_DEPLOY = "7", - SESSION_KEY_NOT_FOUND = "8", - PIMLICO_API_KEY_NOT_SET = "9", - INVALID_APPROVAL = "10", - UNSUPPORTED_NETWORK = "11", - RPC_API_KEY_NOT_SET = "12", - FAILED_TO_MERGE_STATE_TREE = "13", - FAILED_TO_MERGE_MESSAGE_SUBTREES = "14", - FAILED_TO_MERGE_MESSAGE_TREE = "15", + NOT_MERGED_STATE_TREE, + PRIVATE_KEY_MISMATCH, + POLL_NOT_FOUND, + DECRYPTION, + ENCRYPTION, + FILE_NOT_FOUND, + SUBGRAPH_DEPLOY, + SESSION_KEY_NOT_FOUND, + PIMLICO_API_KEY_NOT_SET, + INVALID_APPROVAL, + UNSUPPORTED_NETWORK, + RPC_API_KEY_NOT_SET, + FAILED_TO_MERGE_STATE_TREE, + FAILED_TO_MERGE_MESSAGE_SUBTREES, + FAILED_TO_MERGE_MESSAGE_TREE, } diff --git a/packages/coordinator/ts/crypto/__tests__/crypto.service.test.ts b/packages/coordinator/ts/crypto/__tests__/crypto.service.test.ts index 8643cd89..4ad65562 100644 --- a/packages/coordinator/ts/crypto/__tests__/crypto.service.test.ts +++ b/packages/coordinator/ts/crypto/__tests__/crypto.service.test.ts @@ -9,13 +9,13 @@ describe("CryptoService", () => { test("should throw encryption error if key is invalid", () => { const service = new CryptoService(); - expect(() => service.encrypt("", "")).toThrow(ErrorCodes.ENCRYPTION); + expect(() => service.encrypt("", "")).toThrow(ErrorCodes.ENCRYPTION.toString()); }); test("should throw decryption error if key is invalid", () => { const service = new CryptoService(); - expect(() => service.decrypt("", "")).toThrow(ErrorCodes.DECRYPTION); + expect(() => service.decrypt("", "")).toThrow(ErrorCodes.DECRYPTION.toString()); }); test("should encrypt and decrypt properly", () => { diff --git a/packages/coordinator/ts/crypto/crypto.service.ts b/packages/coordinator/ts/crypto/crypto.service.ts index 7875c12c..bc1e7d74 100644 --- a/packages/coordinator/ts/crypto/crypto.service.ts +++ b/packages/coordinator/ts/crypto/crypto.service.ts @@ -35,7 +35,7 @@ export class CryptoService { return encrypted.toString("base64"); } catch (error) { this.logger.error(`Error: ${ErrorCodes.ENCRYPTION}`, error); - throw new Error(ErrorCodes.ENCRYPTION); + throw new Error(ErrorCodes.ENCRYPTION.toString()); } } @@ -53,7 +53,7 @@ export class CryptoService { return decryptedData.toString(); } catch (error) { this.logger.error(`Error: ${ErrorCodes.DECRYPTION}`, error); - throw new Error(ErrorCodes.DECRYPTION); + throw new Error(ErrorCodes.DECRYPTION.toString()); } } } diff --git a/packages/coordinator/ts/file/__tests__/file.service.test.ts b/packages/coordinator/ts/file/__tests__/file.service.test.ts index 5256994f..9ae20740 100644 --- a/packages/coordinator/ts/file/__tests__/file.service.test.ts +++ b/packages/coordinator/ts/file/__tests__/file.service.test.ts @@ -99,7 +99,7 @@ describe("FileService", () => { test("should throw an error if there are no zkey filepaths", () => { const service = new FileService(); - expect(() => service.getZkeyFilePaths("unknown", false)).toThrow(ErrorCodes.FILE_NOT_FOUND); + expect(() => service.getZkeyFilePaths("unknown", false)).toThrow(ErrorCodes.FILE_NOT_FOUND.toString()); }); test("should throw an error if there are no wasm and witgen filepaths", () => { @@ -109,7 +109,7 @@ describe("FileService", () => { const service = new FileService(); expect(() => service.getZkeyFilePaths(process.env.COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME!, false)).toThrow( - ErrorCodes.FILE_NOT_FOUND, + ErrorCodes.FILE_NOT_FOUND.toString(), ); }); }); diff --git a/packages/coordinator/ts/file/file.service.ts b/packages/coordinator/ts/file/file.service.ts index c9b93998..f4ab026e 100644 --- a/packages/coordinator/ts/file/file.service.ts +++ b/packages/coordinator/ts/file/file.service.ts @@ -113,7 +113,7 @@ export class FileService { if (!fs.existsSync(zkey) || (!fs.existsSync(wasm) && !fs.existsSync(witgen))) { this.logger.error(`Error: ${ErrorCodes.FILE_NOT_FOUND}, zkey: ${zkey}, wasm: ${wasm}, witgen: ${witgen}`); - throw new Error(ErrorCodes.FILE_NOT_FOUND); + throw new Error(ErrorCodes.FILE_NOT_FOUND.toString()); } return { diff --git a/packages/coordinator/ts/proof/__tests__/proof.service.test.ts b/packages/coordinator/ts/proof/__tests__/proof.service.test.ts index 55c860a5..0cb5e8bb 100644 --- a/packages/coordinator/ts/proof/__tests__/proof.service.test.ts +++ b/packages/coordinator/ts/proof/__tests__/proof.service.test.ts @@ -123,7 +123,7 @@ describe("ProofGeneratorService", () => { const service = new ProofGeneratorService(defaultCryptoService, fileService, sessionKeysService); - await expect(service.generate(defaultProofArgs)).rejects.toThrow(ErrorCodes.NOT_MERGED_STATE_TREE); + await expect(service.generate(defaultProofArgs)).rejects.toThrow(ErrorCodes.NOT_MERGED_STATE_TREE.toString()); }); test("should throw error if private key is wrong", async () => { @@ -132,28 +132,24 @@ describe("ProofGeneratorService", () => { const service = new ProofGeneratorService(defaultCryptoService, fileService, sessionKeysService); - await expect(service.generate(defaultProofArgs)).rejects.toThrow(ErrorCodes.PRIVATE_KEY_MISMATCH); - }); - - test("should throw error if there is no any poll", async () => { - mockContract.getMainRoot.mockResolvedValue(0n); - - const service = new ProofGeneratorService(defaultCryptoService, fileService, sessionKeysService); - - await expect(service.generate(defaultProofArgs)).rejects.toThrow(ErrorCodes.NOT_MERGED_MESSAGE_TREE); + await expect(service.generate(defaultProofArgs)).rejects.toThrow(ErrorCodes.PRIVATE_KEY_MISMATCH.toString()); }); test("should throw error if poll is not found", async () => { const service = new ProofGeneratorService(defaultCryptoService, fileService, sessionKeysService); - await expect(service.generate({ ...defaultProofArgs, poll: 2 })).rejects.toThrow(ErrorCodes.POLL_NOT_FOUND); + await expect(service.generate({ ...defaultProofArgs, poll: 2 })).rejects.toThrow( + ErrorCodes.POLL_NOT_FOUND.toString(), + ); }); test("should throw error if poll is not found in maci contract", async () => { mockContract.polls.mockResolvedValue({ poll: zeroAddress }); const service = new ProofGeneratorService(defaultCryptoService, fileService, sessionKeysService); - await expect(service.generate({ ...defaultProofArgs, poll: 2 })).rejects.toThrow(ErrorCodes.POLL_NOT_FOUND); + await expect(service.generate({ ...defaultProofArgs, poll: 2 })).rejects.toThrow( + ErrorCodes.POLL_NOT_FOUND.toString(), + ); }); test("should throw error if coordinator key cannot be decrypted", async () => { diff --git a/packages/coordinator/ts/proof/proof.service.ts b/packages/coordinator/ts/proof/proof.service.ts index 73da566c..1d9c82c6 100644 --- a/packages/coordinator/ts/proof/proof.service.ts +++ b/packages/coordinator/ts/proof/proof.service.ts @@ -7,10 +7,8 @@ import { ProofGenerator, type Poll, type MACI, - type AccQueue, type IGenerateProofsOptions, Poll__factory as PollFactory, - AccQueueQuinaryMaci__factory as AccQueueQuinaryMaciFactory, MACI__factory as MACIFactory, } from "maci-contracts"; import { Keypair, PrivKey, PubKey } from "maci-domainobjs"; @@ -18,7 +16,7 @@ import { Hex } from "viem"; import path from "path"; -import type { IGenerateArgs, IGenerateData, IMergeArgs, IMergeMessageSubTreesArgs } from "./types"; +import type { IGenerateArgs, IGenerateData, IMergeArgs } from "./types"; import { ErrorCodes } from "../common"; import { getPublicClient } from "../common/accountAbstraction"; @@ -49,7 +47,7 @@ export class ProofGeneratorService { private readonly fileService: FileService, private readonly sessionKeysService: SessionKeysService, ) { - this.deployment = Deployment.getInstance(hre); + this.deployment = Deployment.getInstance({ hre }); this.deployment.setHre(hre); this.logger = new Logger(ProofGeneratorService.name); } @@ -83,35 +81,21 @@ export class ProofGeneratorService { if (pollContracts.poll.toLowerCase() === ZeroAddress.toLowerCase()) { this.logger.error(`Error: ${ErrorCodes.POLL_NOT_FOUND}, Poll ${poll} not found`); - throw new Error(ErrorCodes.POLL_NOT_FOUND); + throw new Error(ErrorCodes.POLL_NOT_FOUND.toString()); } const pollContract = await this.deployment.getContract({ name: EContracts.Poll, address: pollContracts.poll, }); - const [{ messageAq: messageAqAddress }, coordinatorPublicKey, isStateAqMerged, messageTreeDepth] = - await Promise.all([ - pollContract.extContracts(), - pollContract.coordinatorPubKey(), - pollContract.stateMerged(), - pollContract.treeDepths().then((depths) => Number(depths[2])), - ]); - const messageAq = await this.deployment.getContract({ - name: EContracts.AccQueue, - address: messageAqAddress, - }); + const [coordinatorPublicKey, isStateAqMerged] = await Promise.all([ + pollContract.coordinatorPubKey(), + pollContract.stateMerged(), + ]); if (!isStateAqMerged) { this.logger.error(`Error: ${ErrorCodes.NOT_MERGED_STATE_TREE}, state tree is not merged`); - throw new Error(ErrorCodes.NOT_MERGED_STATE_TREE); - } - - const mainRoot = await messageAq.getMainRoot(messageTreeDepth.toString()); - - if (mainRoot.toString() === "0") { - this.logger.error(`Error: ${ErrorCodes.NOT_MERGED_MESSAGE_TREE}, message tree is not merged`); - throw new Error(ErrorCodes.NOT_MERGED_MESSAGE_TREE); + throw new Error(ErrorCodes.NOT_MERGED_STATE_TREE.toString()); } const { privateKey } = await this.fileService.getPrivateKey(); @@ -126,7 +110,7 @@ export class ProofGeneratorService { if (!coordinatorKeypair.pubKey.equals(publicKey)) { this.logger.error(`Error: ${ErrorCodes.PRIVATE_KEY_MISMATCH}, wrong private key`); - throw new Error(ErrorCodes.PRIVATE_KEY_MISMATCH); + throw new Error(ErrorCodes.PRIVATE_KEY_MISMATCH.toString()); } const outputDir = path.resolve("./proofs"); @@ -134,7 +118,6 @@ export class ProofGeneratorService { const maciState = await ProofGenerator.prepareState({ maciContract, pollContract, - messageAq, maciPrivateKey, coordinatorKeypair, pollId: poll, @@ -151,7 +134,7 @@ export class ProofGeneratorService { if (!foundPoll) { this.logger.error(`Error: ${ErrorCodes.POLL_NOT_FOUND}, Poll ${poll} not found in maci state`); - throw new Error(ErrorCodes.POLL_NOT_FOUND); + throw new Error(ErrorCodes.POLL_NOT_FOUND.toString()); } const proofGenerator = new ProofGenerator({ @@ -180,64 +163,6 @@ export class ProofGeneratorService { } } - /** - * Merge message accumular queue sub trees - * - * @param args - merge message sub trees arguments - */ - async mergeMessageSubTrees({ - publicClient, - kernelClient, - pollAddress, - messageAqAddress, - }: IMergeMessageSubTreesArgs): Promise { - let subTreesMerged = false; - - while (!subTreesMerged) { - // eslint-disable-next-line no-await-in-loop - subTreesMerged = await publicClient.readContract({ - address: messageAqAddress, - abi: AccQueueQuinaryMaciFactory.abi, - functionName: "subTreesMerged", - }); - - if (subTreesMerged) { - this.logger.debug("All subtrees are merged"); - } else { - // eslint-disable-next-line no-await-in-loop - const indices = await publicClient.readContract({ - address: messageAqAddress, - abi: AccQueueQuinaryMaciFactory.abi, - functionName: "getSrIndices", - }); - - this.logger.debug(`Merging message subroots ${indices[0] + 1n} / ${indices[1] + 1n}`); - - // eslint-disable-next-line no-await-in-loop - const { request } = await publicClient.simulateContract({ - account: kernelClient.account.address, - address: pollAddress, - abi: PollFactory.abi, - functionName: "mergeMessageAqSubRoots", - args: [4n], - }); - - // eslint-disable-next-line no-await-in-loop - const txHash = await kernelClient.writeContract(request); - - // eslint-disable-next-line no-await-in-loop - const txReceipt = await publicClient.waitForTransactionReceipt({ - hash: txHash, - }); - - if (txReceipt.status !== "success") { - this.logger.error(`Error: ${ErrorCodes.FAILED_TO_MERGE_MESSAGE_SUBTREES}, message subtree merge failed`); - throw new Error(ErrorCodes.FAILED_TO_MERGE_MESSAGE_SUBTREES); - } - } - } - } - /** * Merge state and message trees * @@ -258,19 +183,12 @@ export class ProofGeneratorService { if (pollAddress.toLowerCase() === ZeroAddress.toLowerCase()) { this.logger.error(`Error: ${ErrorCodes.POLL_NOT_FOUND}, Poll ${pollId} not found`); - throw new Error(ErrorCodes.POLL_NOT_FOUND); + throw new Error(ErrorCodes.POLL_NOT_FOUND.toString()); } // get a kernel client const kernelClient = await this.sessionKeysService.generateClientFromSessionKey(sessionKeyAddress, approval, chain); - // get external contracts - const externalContracts = await publicClient.readContract({ - address: pollAddress, - abi: PollFactory.abi, - functionName: "extContracts", - }); - // start with the state tree const isStateMerged = await publicClient.readContract({ address: pollAddress, @@ -287,7 +205,7 @@ export class ProofGeneratorService { account: kernelClient.account, address: pollAddress, abi: PollFactory.abi, - functionName: "mergeMaciState", + functionName: "mergeState", }); const txHash = await kernelClient.writeContract(request); @@ -297,61 +215,10 @@ export class ProofGeneratorService { if (txReceipt.status !== "success") { this.logger.error(`Error: ${ErrorCodes.FAILED_TO_MERGE_STATE_TREE}, state tree merge failed`); - throw new Error(ErrorCodes.FAILED_TO_MERGE_STATE_TREE); + throw new Error(ErrorCodes.FAILED_TO_MERGE_STATE_TREE.toString()); } } - // merge the message sub trees first - await this.mergeMessageSubTrees({ - publicClient, - kernelClient, - pollAddress, - messageAqAddress: externalContracts[1], - }); - - // then merge the main root - const messageTreeDepth = await publicClient - .readContract({ - address: pollAddress, - abi: PollFactory.abi, - functionName: "treeDepths", - }) - .then((depths) => BigInt(depths[2])); - - const mainRoot = await publicClient.readContract({ - address: externalContracts[1], - abi: AccQueueQuinaryMaciFactory.abi, - functionName: "getMainRoot", - args: [messageTreeDepth], - }); - - if (mainRoot.toString() === "0") { - this.logger.debug(`Message tree is not merged yet`); - - const { request } = await publicClient.simulateContract({ - // @ts-expect-error type error between permissionless.js and viem - account: kernelClient.account, - address: pollAddress, - abi: PollFactory.abi, - functionName: "mergeMessageAq", - args: [], - }); - - const txHash = await kernelClient.writeContract(request); - const txReceipt = await publicClient.waitForTransactionReceipt({ - hash: txHash, - }); - - if (txReceipt.status === "success") { - this.logger.debug(`Message tree has been merged`); - } else { - this.logger.error(`Error: ${ErrorCodes.FAILED_TO_MERGE_MESSAGE_TREE}, message tree merge failed`); - throw new Error(ErrorCodes.FAILED_TO_MERGE_MESSAGE_TREE); - } - } else { - this.logger.debug(`Message tree has already been merged`); - } - return true; } } diff --git a/packages/coordinator/ts/proof/types.ts b/packages/coordinator/ts/proof/types.ts index 34d44bdf..3fe7aa21 100644 --- a/packages/coordinator/ts/proof/types.ts +++ b/packages/coordinator/ts/proof/types.ts @@ -1,8 +1,6 @@ -import type { KernelAccountClient, KernelSmartAccount } from "@zerodev/sdk"; import type { TallyData } from "maci-cli"; import type { Proof } from "maci-contracts"; -import type { ENTRYPOINT_ADDRESS_V07_TYPE } from "permissionless/types"; -import type { Chain, Hex, HttpTransport, PublicClient, Transport } from "viem"; +import type { Hex } from "viem"; import { ESupportedNetworks } from "../common"; @@ -121,30 +119,3 @@ export interface IMergeArgs { */ chain: ESupportedNetworks; } - -/** - * Merge message sub-trees - */ -export interface IMergeMessageSubTreesArgs { - /** - * Public client - */ - publicClient: PublicClient; - /** - * Kernel client - */ - kernelClient: KernelAccountClient< - ENTRYPOINT_ADDRESS_V07_TYPE, - Transport, - Chain, - KernelSmartAccount - >; - /** - * Poll address - */ - pollAddress: Hex; - /** - * Message AQ address - */ - messageAqAddress: Hex; -} diff --git a/packages/coordinator/ts/sessionKeys/__tests__/sessionKeys.service.test.ts b/packages/coordinator/ts/sessionKeys/__tests__/sessionKeys.service.test.ts index 6ee18d9a..9ba2c7c5 100644 --- a/packages/coordinator/ts/sessionKeys/__tests__/sessionKeys.service.test.ts +++ b/packages/coordinator/ts/sessionKeys/__tests__/sessionKeys.service.test.ts @@ -52,14 +52,14 @@ describe("SessionKeysService", () => { "0xinvalid", ESupportedNetworks.OPTIMISM_SEPOLIA, ), - ).rejects.toThrow(ErrorCodes.INVALID_APPROVAL); + ).rejects.toThrow(ErrorCodes.INVALID_APPROVAL.toString()); }); test("should throw when given a non existent session key address", async () => { const approval = await mockSessionKeyApproval(zeroAddress); await expect( sessionKeysService.generateClientFromSessionKey(zeroAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA), - ).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND); + ).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND.toString()); }); test("should generate a client from a session key", async () => { diff --git a/packages/coordinator/ts/sessionKeys/sessionKeys.service.ts b/packages/coordinator/ts/sessionKeys/sessionKeys.service.ts index b3b1f51f..7bde26ae 100644 --- a/packages/coordinator/ts/sessionKeys/sessionKeys.service.ts +++ b/packages/coordinator/ts/sessionKeys/sessionKeys.service.ts @@ -83,7 +83,7 @@ export class SessionKeysService { if (!sessionKey) { this.logger.error(`Session key not found: ${sessionKeyAddress}`); - throw new Error(ErrorCodes.SESSION_KEY_NOT_FOUND); + throw new Error(ErrorCodes.SESSION_KEY_NOT_FOUND.toString()); } // create a public client @@ -112,7 +112,7 @@ export class SessionKeysService { }); } catch (error) { this.logger.error(`Error: ${ErrorCodes.INVALID_APPROVAL}`, error); - throw new Error(ErrorCodes.INVALID_APPROVAL); + throw new Error(ErrorCodes.INVALID_APPROVAL.toString()); } } diff --git a/packages/coordinator/ts/subgraph/__tests__/subgraph.service.test.ts b/packages/coordinator/ts/subgraph/__tests__/subgraph.service.test.ts index a01304f0..384eb0be 100644 --- a/packages/coordinator/ts/subgraph/__tests__/subgraph.service.test.ts +++ b/packages/coordinator/ts/subgraph/__tests__/subgraph.service.test.ts @@ -52,7 +52,7 @@ describe("SubgraphService", () => { const service = new SubgraphService(); - await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY); + await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY.toString()); }); test("should throw error if network is invalid", async () => { @@ -61,7 +61,7 @@ describe("SubgraphService", () => { const service = new SubgraphService(); await expect(service.deploy({ ...defaultArgs, network: "unknown" as ESupportedNetworks })).rejects.toThrow( - ErrorCodes.SUBGRAPH_DEPLOY, + ErrorCodes.SUBGRAPH_DEPLOY.toString(), ); }); @@ -70,7 +70,7 @@ describe("SubgraphService", () => { const service = new SubgraphService(); - await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY); + await expect(service.deploy(defaultArgs)).rejects.toThrow(ErrorCodes.SUBGRAPH_DEPLOY.toString()); }); test("should return deployed subgraph url properly", async () => { diff --git a/packages/coordinator/ts/subgraph/subgraph.service.ts b/packages/coordinator/ts/subgraph/subgraph.service.ts index 3090de4c..dcaf0f06 100644 --- a/packages/coordinator/ts/subgraph/subgraph.service.ts +++ b/packages/coordinator/ts/subgraph/subgraph.service.ts @@ -111,7 +111,7 @@ export class SubgraphService { const url = deployOutput.stdout.match(URL_REGEX)?.[1]?.trim().replace("\u001b[0m", ""); if (!url) { - throw new Error(ErrorCodes.SUBGRAPH_DEPLOY); + throw new Error(ErrorCodes.SUBGRAPH_DEPLOY.toString()); } options?.onSuccess(url); @@ -120,7 +120,7 @@ export class SubgraphService { } catch (error) { this.logger.error("Error: ", error); options?.onFail(error as Error); - throw new Error(ErrorCodes.SUBGRAPH_DEPLOY); + throw new Error(ErrorCodes.SUBGRAPH_DEPLOY.toString()); } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 639325ad..69d115ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,13 +112,13 @@ importers: version: 0.0.0-ci.6bdb342(2iw2nmc3wxvgxq6fukvsab2tzq) maci-core: specifier: ^2.4.0 - version: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) maci-crypto: specifier: ^2.4.0 - version: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) maci-domainobjs: specifier: ^2.4.0 - version: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) solidity-docgen: specifier: ^0.6.0-beta.36 version: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) @@ -238,20 +238,20 @@ importers: specifier: ^1.0.0 version: 1.0.0 maci-circuits: - specifier: ^2.4.0 - version: 2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + specifier: 0.0.0-ci.30f517a + version: 0.0.0-ci.30f517a(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) maci-cli: - specifier: ^2.3.0 - version: 2.3.0(afbahbb676wb2hc2q35zcy2wou) + specifier: 0.0.0-ci.30f517a + version: 0.0.0-ci.30f517a(afbahbb676wb2hc2q35zcy2wou) maci-contracts: - specifier: ^2.3.0 - version: 2.3.0(awh3aoilns4ccyopzf6qwbd5wy) + specifier: 0.0.0-ci.30f517a + version: 0.0.0-ci.30f517a(awh3aoilns4ccyopzf6qwbd5wy) maci-domainobjs: - specifier: ^2.0.0 - version: 2.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + specifier: 0.0.0-ci.30f517a + version: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) maci-subgraph: - specifier: ^2.3.0 - version: 2.3.0(7henheoj4j7suwad7kk5q6epmy) + specifier: 0.0.0-ci.30f517a + version: 0.0.0-ci.30f517a(7henheoj4j7suwad7kk5q6epmy) mustache: specifier: ^4.2.0 version: 4.2.0 @@ -2133,13 +2133,13 @@ packages: engines: {node: '>=18'} hasBin: true - '@graphprotocol/graph-cli@0.80.0': - resolution: {integrity: sha512-vO0pSdqYZUTSFkIVNFo5/6ZfwVrMZ/XYCpg/zcKgnQH3pezR3YUV4krSV4fwKriJglbF1QC7+QWRr7h0akLe5w==} + '@graphprotocol/graph-cli@0.85.0': + resolution: {integrity: sha512-jkEgJW4R1Z1lFKSqbufmDbRRbCrtO0n9UBry5v6s/x5MOnI6I8U2oBXyt/kdK4oj+zhHqxulTaSGu5L4AAHalA==} engines: {node: '>=18'} hasBin: true - '@graphprotocol/graph-cli@0.85.0': - resolution: {integrity: sha512-jkEgJW4R1Z1lFKSqbufmDbRRbCrtO0n9UBry5v6s/x5MOnI6I8U2oBXyt/kdK4oj+zhHqxulTaSGu5L4AAHalA==} + '@graphprotocol/graph-cli@0.88.0': + resolution: {integrity: sha512-drte7+S2GLo6jZWd/0NxXpnvE6i7bfUmhioH/n+fhUhDVO66dP70ztwp0rSdG+ktgyA9yBO04A93Vd2IS1aOjw==} engines: {node: '>=18'} hasBin: true @@ -3072,6 +3072,10 @@ packages: resolution: {integrity: sha512-1QlPaHMhOORySCXkQyzjsIsy2GYTilOw3LkjeHkCgsPJQjAT4IclVytJusWktPbYNys9O+O4V23J44yomQvnBQ==} engines: {node: '>=14.0.0'} + '@oclif/core@4.0.36': + resolution: {integrity: sha512-Dk0bK2Abl/AJ3Fn6ountX037lbXGJY/xcTnBJs2SKDqex9wMcgkbnkKd6xXC/zJnRlfA+jE+niC3FnbxgTRcHg==} + engines: {node: '>=18.0.0'} + '@oclif/plugin-autocomplete@2.3.10': resolution: {integrity: sha512-Ow1AR8WtjzlyCtiWWPgzMyT8SbcDJFr47009riLioHa+MHX2BCDtVn2DVnN/E6b9JlPV5ptQpjefoRSNWBesmg==} engines: {node: '>=12.0.0'} @@ -3080,6 +3084,10 @@ packages: resolution: {integrity: sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg==} engines: {node: '>=12.0.0'} + '@oclif/plugin-warn-if-update-available@3.1.26': + resolution: {integrity: sha512-tG96vi0GvZ/azDPQ9NUnwRFhD5YQ4Z+9FpH329vTnNg2Z+WMy5sijPbaiTuEMuYMyUZyv2IKpFyGLV9BnNjaTQ==} + engines: {node: '>=18.0.0'} + '@octokit/auth-token@3.0.4': resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} engines: {node: '>= 14'} @@ -3294,6 +3302,9 @@ packages: '@pcd/util@0.5.4': resolution: {integrity: sha512-BkG3PxujAOE3K9odBJqMUzhvK97tzJwVrMTbqSqhGqHnKLVQNuzhURkbdjoNfVRSp8BwaxP516ocjyY1KrxpuA==} + '@pcd/util@0.9.0': + resolution: {integrity: sha512-PI9XR9DY7Okn8AJyOfFPhSihewh5VVTyFf5Hm+qaH09t0MlV8ZbMAo9hbiyB5NtHJo7fEEM5BHTRCPpMeVEJcA==} + '@pcd/zk-eddsa-event-ticket-pcd@0.6.6': resolution: {integrity: sha512-Gm6LBGZjuL8ZzTkhP/M6Z/vB4X2kZwmz8lvpqYeg11TWuiiEwnF6BEYcOSF5dEwgzhVKCFe5K/RIlK0kEnSL0w==} @@ -5032,6 +5043,9 @@ packages: '@zk-kit/groth16@0.3.0': resolution: {integrity: sha512-rvTrzMcpxFy0lkiIveI5HHovVbyBQ+eDuh/RGAb0SHkzIxJ8kiPjSXvRXUmEdq278ZdhHvrCZSz5J53oIBuoFw==} + '@zk-kit/imt.sol@2.0.0-beta.12': + resolution: {integrity: sha512-kKgopVO6zlfSiQgv3X9WykaCeyb8jGtthWGqdo1ZD7fY1bH8A7BWhhWxtoCuU5mPEgRbamw1cAoUynuLoEULsg==} + '@zk-kit/incremental-merkle-tree@0.4.3': resolution: {integrity: sha512-2qHfrJXtPx8/UmF0wFAUr4VqCLr3J/P859fk/e3fwKLUnf3baeIUAO6inY4wrh0NGy4bzpKUWYjDph0yTbPz6A==} @@ -5044,8 +5058,8 @@ packages: '@zk-kit/lean-imt@2.1.0': resolution: {integrity: sha512-RbG6QmTrurken7HzrJQouKiXKyGTpcoD+czQ1jvExRIA83k9w+SEsRdB7anPE8WoMKWAandDe09BzDCk6AirSw==} - '@zk-kit/poseidon-cipher@0.3.1': - resolution: {integrity: sha512-3plpr4Dk0EADSRPJ0NLNt7x+QG8zlJhT264zVGRxgl4yhraE2C/wAxrclUx1mcw8I04hYoXf1BTd0noAIwd5/A==} + '@zk-kit/lean-imt@2.2.2': + resolution: {integrity: sha512-rscIPEgBBcu9vP/DJ3J+3187G/ObKETl343G5enPawNT81oeQSdHx3e2ZapTC+GfrZ/AS2AHHUOpRS1FfdSwjg==} '@zk-kit/poseidon-cipher@0.3.2': resolution: {integrity: sha512-Ezz1e0mj/GRDlHdU5m0uhj5iHY72zWJU0BP8DsCCvPubU7LPI2tVaPpxrAjT4JQqatbVRQHLIhixW7F7BPzaFg==} @@ -5245,6 +5259,10 @@ packages: ansicolors@0.3.2: resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + ansis@3.3.2: + resolution: {integrity: sha512-cFthbBlt+Oi0i9Pv/j6YdVWJh54CtjGACaMPCIrEV4Ha7HWsIjXDwseYV79TIL0B4+KfSwD5S70PeQDkPUd1rA==} + engines: {node: '>=15'} + antlr4@4.13.2: resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} engines: {node: '>=16'} @@ -5963,14 +5981,6 @@ packages: circom_tester@0.0.19: resolution: {integrity: sha512-SNHaBsGxcBH6XsVWfsRbRPA7NF8m8AMKJI9dtJJCFGUtOTT2+zsoIqAwi50z6XCnO4TtjyXq7AeXa1PLHqT0tw==} - circomkit@0.2.1: - resolution: {integrity: sha512-7O8QsOLUq2QvwGMimvWxwdg7OgV33OT7ZBND+81dv3JrVp8ove93yV16jF3TW6XBncSY92/Aka8F4CAi/H9VQw==} - engines: {node: '>=12.0.0'} - hasBin: true - peerDependencies: - '@types/snarkjs': ^0.7.x - snarkjs: ^0.7.x - circomkit@0.3.1: resolution: {integrity: sha512-beZ3yB7ymcf1VqFt5JmdjQGZku/rwpJKY/EpEhCRJPFH+ThhZajiJO1k/wFwwUl4VyGBme8iNCC2a3CIoqnaEQ==} engines: {node: '>=12.0.0'} @@ -6611,6 +6621,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -8263,6 +8282,10 @@ packages: http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -8683,6 +8706,10 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -9274,6 +9301,10 @@ packages: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -9517,55 +9548,67 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + maci-circuits@0.0.0-ci.30f517a: + resolution: {integrity: sha512-NkKAnbwy48YEkQii5TeAYhAVDGI7SeHdT/5JVkXLFkZ+6IkH0CXVyBO/+aDyOQED8/ItHRXqrMB3xda9Eh7pWg==} + maci-circuits@0.0.0-ci.6bdb342: resolution: {integrity: sha512-c7M+tkvqh+IPEJsUt9sgheaPrIJ7saFqOioSnzYwMYhSdOznwtsnFBRpmGQU/xYQ7PATMiBuSw28CiMepOjhUQ==} - maci-circuits@2.4.0: - resolution: {integrity: sha512-5Vx1sUR+mtWMWrYu5Kkb76y+a257G8FRCyqcafngGbWolgpydtsRjZX4ltaPL5USr1sWdZXhZ73V3eAeGu316A==} + maci-circuits@2.5.0: + resolution: {integrity: sha512-Jw7IupZ2IxMawgJeE9U4wqCalCNfKe6gcJIMTzAC2DzoDWI7Gy1Wr1VsbnsNcnBj0O9IwKnqU/y91z4W3ylfZg==} - maci-cli@2.3.0: - resolution: {integrity: sha512-xs+5S+OHq6DyFx92xfhsGw1/FN/CVIk4V6mrihikoQS08FGjmIDr7KkLD+NKQLU16vMhz8AswJ3gQ0UOWL5wQA==} + maci-cli@0.0.0-ci.30f517a: + resolution: {integrity: sha512-oP7Yg4PCDloE4DXt8nGY3RBlwt3fRAMjHtn/mpcJzbnNAFEGUIR7u4XpalMrCfI8o8v6A+luM+zEhp+6UUMDxA==} hasBin: true maci-cli@2.4.0: resolution: {integrity: sha512-G7W4VGTqv96Zf808wyTZbwXRKtWTCRsxkagof4Cedup4AL0ywcDVzQumhVo/Nur3Jn9rYdfa+9FtjOSax5xU/w==} hasBin: true + maci-contracts@0.0.0-ci.30f517a: + resolution: {integrity: sha512-CYirPIzY+VP310j3lIb5E3GArV2hlriVUChV7TVHITYtlzruRTdtGn+7IbN2dIciUnfFL2qT5lM8ZBIT7V4rrw==} + hasBin: true + maci-contracts@0.0.0-ci.6bdb342: resolution: {integrity: sha512-qQ+k4GiK06VuLC62h/WYL2jtxorGP44D7i6IUhZ3ataTDHTEERe5h+JKBgh17WVV+AW52F5zVAMBL3REaRDWqw==} hasBin: true - maci-contracts@2.3.0: - resolution: {integrity: sha512-9G/aEA3CpdKgBhzGcqCVfJqI6Tjeo6r9MXaAKMejFFoobIPWqjE8m/g+IKI+QbhLjI5PTNLaja5ji4ZuOfB8Yg==} + maci-contracts@2.5.0: + resolution: {integrity: sha512-zu6C1xx3CBaj79N5Tui2jyhK17M0LMiN6b7C6u3sCtS08Qp7AWsQnsloNZGIPuuQzCUxylz1SREzXhnoFexSfg==} hasBin: true - maci-contracts@2.4.0: - resolution: {integrity: sha512-BTjP8Ml0NfZco24LIGXwPCZC8m06D9g0yKnRYZmuTplY69KqBNyPwxM0z5B8niZv+Tid+IrOteJVKYlX+AQsQg==} - hasBin: true + maci-core@0.0.0-ci.30f517a: + resolution: {integrity: sha512-RO6Irbo2VS/Iz5LI5/MsWT6zN+CETykgeJjrm27Zc8pjwl2W6DBJjKjbO6HkwYakjJ+5fy98XL3vFtnixoWEIg==} maci-core@0.0.0-ci.6bdb342: resolution: {integrity: sha512-LKvRyKYT7pQ61LBQti67nnlZXbj4JWBXvU7/7nDA2H/BhNKWJqXrdJ7DzdQZWzEnP0vHdvNuVIb1UGshSCeHEQ==} - maci-core@2.4.0: - resolution: {integrity: sha512-+x2rUL5h1uHtjogLRA3AMveQ7pv4P8gCy4Er25Stmj1yJF77dI53bozb6jgqmPS9sNDsViFcCDUBiTebwo5bSg==} + maci-core@2.5.0: + resolution: {integrity: sha512-Ko+cd7pQUR/mx8UTLcTi6zTkRXwDcX+1CWu6i9i7xYPaSPTbRkC9z8ggtJNYEKdVdTG6nJbhTV2TfCa5YV17qg==} + + maci-crypto@0.0.0-ci.30f517a: + resolution: {integrity: sha512-jJuqO/h0ksARZTMhcKV7oAwv8+igcuRax1KRNAQ3DVA6bikF5oz+J5gmmc6lrCKaVX/1pnT9Ua6kR9hD5LpZhQ==} maci-crypto@0.0.0-ci.6bdb342: resolution: {integrity: sha512-Mg6HjoxgCzI0XCPNTEHLPV7OEfsSa3qXp24ue9ODxfnP9YLLVkl06WOdKms0mWiMlUPraCmrFY/0JNBYWjEBvQ==} - maci-crypto@2.4.0: - resolution: {integrity: sha512-fQiq7Q/liWzifduQ7ARGJRhA0L2jfPdfQbiiMlQ8R4RdYqU5aSL1BYNkAhfEUEo8g9uPXChu3NIL3sKzszZClA==} + maci-crypto@2.5.0: + resolution: {integrity: sha512-ozrLDH6kaK62TomNr5tnVgrUs6szXHCwcRyPzsQy07Wg2ZX61nyY0EFgWKAuU8kXqvYRdTtQdgflw6qpVz/4+w==} + + maci-domainobjs@0.0.0-ci.30f517a: + resolution: {integrity: sha512-sMFOBbCZqginBELKNZ0A68aopra7EBdcKfIwYvlHuIWkh4LX5L6QCgi2qrxtasqKh5k/lqsR85XAFYdSM+5RHQ==} maci-domainobjs@0.0.0-ci.6bdb342: resolution: {integrity: sha512-JELR42096KT3PGdAf+8+HhU/mP8aaHLzr2eTM4SsR59ECLqU1weefVjImbIsnulqeJ3vmGeU1MtTm8ozFtH0Jg==} - maci-domainobjs@2.0.0: - resolution: {integrity: sha512-FmQdIC1omsWR/98wt8WvEJj0SDfnVTl9/2FMDp3N4WwUy1lzmmlVjUGKSFKj2+dj2Rx26DmBWsmKhbTIQeoPOQ==} - maci-domainobjs@2.4.0: resolution: {integrity: sha512-jwTaJDXmsrjL+xILb2xwfUVTE/ePKmmm4DORfDk63OopRv2zW1M+OPCqItz5oWLeus/eUEz4/HHKJwpqTOpDcw==} - maci-subgraph@2.3.0: - resolution: {integrity: sha512-3wUdXgOsADczCE1nTFn6+74zzcVo4AS7lcNRG8yV4ehJaYqi8tEeQFuii/aAEhDi32elPS+5tsI82rIWIodNJQ==} + maci-domainobjs@2.5.0: + resolution: {integrity: sha512-MKyksmw+ndPG5HS80Ka8L7dEFDCuEis8HplYb3S+GqPDFwQ+Cl4vpMxF1Mr0d1SWAM4RfD4FQgAFaum4FWr1EA==} + + maci-subgraph@0.0.0-ci.30f517a: + resolution: {integrity: sha512-lpTJIQ4vQi54iCzLPXyKKIbdpp8/8S5UZ5/5x0tBOpFDmLWlIW6onFTdO18WpoRkhz4adyEeljplYZI8yJfuZQ==} magic-string@0.30.8: resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} @@ -10788,6 +10831,9 @@ packages: poseidon-lite@0.3.0: resolution: {integrity: sha512-ilJj4MIve4uBEG7SrtPqUUNkvpJ/pLVbndxa0WvebcQqeIhe+h72JR4g0EvwchUzm9sOQDlOjiDNmRAgxNZl4A==} + poseidon-solidity@0.0.5: + resolution: {integrity: sha512-NzrvSwHzvZgT4hvg2GyGqeR+UOU/eLSEt4wAoXEua+VaR7NTKKwx1X9bPlh1VMBEVEno+IWvkRBbidFGzTeAqQ==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -11369,6 +11415,10 @@ packages: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} + registry-auth-token@5.0.3: + resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} + engines: {node: '>=14'} + registry-url@6.0.1: resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} @@ -12508,6 +12558,9 @@ packages: resolution: {integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==} engines: {node: ^16.14.0 || >=18.0.0} + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} @@ -13528,7 +13581,7 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -15201,12 +15254,12 @@ snapshots: - typescript - utf-8-validate - '@graphprotocol/graph-cli@0.80.0(@types/node@20.14.14)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.5.4)(utf-8-validate@5.0.10)': + '@graphprotocol/graph-cli@0.85.0(@types/node@22.7.5)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@3.3.2)(typescript@5.6.3)(utf-8-validate@5.0.10)': dependencies: '@float-capital/float-subgraph-uncrashable': 0.0.0-internal-testing.5 - '@oclif/core': 2.8.6(@types/node@20.14.14)(typescript@5.5.4) - '@oclif/plugin-autocomplete': 2.3.10(@types/node@20.14.14)(typescript@5.5.4) - '@oclif/plugin-not-found': 2.4.3(@types/node@20.14.14)(typescript@5.5.4) + '@oclif/core': 2.8.6(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-autocomplete': 2.3.10(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/plugin-not-found': 2.4.3(@types/node@22.7.5)(typescript@5.6.3) '@whatwg-node/fetch': 0.8.8 assemblyscript: 0.19.23 binary-install-raw: 0.0.13(debug@4.3.4) @@ -15220,7 +15273,7 @@ snapshots: gluegun: 5.1.6(debug@4.3.4) graphql: 15.5.0 immutable: 4.2.1 - ipfs-http-client: 55.0.0(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13)) + ipfs-http-client: 55.0.0(encoding@0.1.13)(node-fetch@3.3.2) jayson: 4.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) js-yaml: 3.14.1 open: 8.4.2 @@ -15242,12 +15295,13 @@ snapshots: - typescript - utf-8-validate - '@graphprotocol/graph-cli@0.85.0(@types/node@22.7.5)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@3.3.2)(typescript@5.6.3)(utf-8-validate@5.0.10)': + '@graphprotocol/graph-cli@0.88.0(@types/node@20.14.14)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.5.4)(utf-8-validate@5.0.10)': dependencies: '@float-capital/float-subgraph-uncrashable': 0.0.0-internal-testing.5 - '@oclif/core': 2.8.6(@types/node@22.7.5)(typescript@5.6.3) - '@oclif/plugin-autocomplete': 2.3.10(@types/node@22.7.5)(typescript@5.6.3) - '@oclif/plugin-not-found': 2.4.3(@types/node@22.7.5)(typescript@5.6.3) + '@oclif/core': 2.8.6(@types/node@20.14.14)(typescript@5.5.4) + '@oclif/plugin-autocomplete': 2.3.10(@types/node@20.14.14)(typescript@5.5.4) + '@oclif/plugin-not-found': 2.4.3(@types/node@20.14.14)(typescript@5.5.4) + '@oclif/plugin-warn-if-update-available': 3.1.26 '@whatwg-node/fetch': 0.8.8 assemblyscript: 0.19.23 binary-install-raw: 0.0.13(debug@4.3.4) @@ -15261,7 +15315,7 @@ snapshots: gluegun: 5.1.6(debug@4.3.4) graphql: 15.5.0 immutable: 4.2.1 - ipfs-http-client: 55.0.0(encoding@0.1.13)(node-fetch@3.3.2) + ipfs-http-client: 55.0.0(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13)) jayson: 4.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) js-yaml: 3.14.1 open: 8.4.2 @@ -15764,7 +15818,7 @@ snapshots: bufferutil: 4.0.8 cross-fetch: 4.0.0(encoding@0.1.13) date-fns: 2.30.0 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) eciesjs: 0.3.19 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -15824,7 +15878,7 @@ snapshots: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) semver: 7.6.3 superstruct: 1.0.4 transitivePeerDependencies: @@ -15837,7 +15891,7 @@ snapshots: '@noble/hashes': 1.5.0 '@scure/base': 1.1.9 '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) pony-cause: 2.1.11 semver: 7.6.3 uuid: 9.0.1 @@ -15851,7 +15905,7 @@ snapshots: '@noble/hashes': 1.5.0 '@scure/base': 1.1.9 '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) pony-cause: 2.1.11 semver: 7.6.3 uuid: 9.0.1 @@ -16378,7 +16432,7 @@ snapshots: '@nomicfoundation/ignition-core': 0.15.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@nomicfoundation/ignition-ui': 0.15.5 chalk: 4.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) fs-extra: 10.1.0 hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) prompts: 2.4.2 @@ -16393,7 +16447,7 @@ snapshots: '@nomicfoundation/ignition-core': 0.15.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@nomicfoundation/ignition-ui': 0.15.5 chalk: 4.1.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) fs-extra: 10.1.0 hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) prompts: 2.4.2 @@ -16460,7 +16514,7 @@ snapshots: '@ethersproject/address': 5.7.0 cbor: 8.1.0 chalk: 2.4.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) lodash.clonedeep: 4.5.0 semver: 6.3.1 @@ -16475,7 +16529,7 @@ snapshots: '@ethersproject/address': 5.7.0 cbor: 8.1.0 chalk: 2.4.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) lodash.clonedeep: 4.5.0 semver: 6.3.1 @@ -16489,7 +16543,7 @@ snapshots: '@ethersproject/address': 5.6.1 '@nomicfoundation/solidity-analyzer': 0.1.2 cbor: 9.0.2 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) fs-extra: 10.1.0 immer: 10.0.2 @@ -16875,6 +16929,27 @@ snapshots: - '@types/node' - typescript + '@oclif/core@4.0.36': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.3.2 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.0(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + globby: 11.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 9.0.5 + semver: 7.6.3 + string-width: 4.2.3 + supports-color: 8.1.1 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + '@oclif/plugin-autocomplete@2.3.10(@types/node@20.14.14)(typescript@5.5.4)': dependencies: '@oclif/core': 2.16.0(@types/node@20.14.14)(typescript@5.5.4) @@ -16921,6 +16996,17 @@ snapshots: - '@types/node' - typescript + '@oclif/plugin-warn-if-update-available@3.1.26': + dependencies: + '@oclif/core': 4.0.36 + ansis: 3.3.2 + debug: 4.4.0(supports-color@8.1.1) + http-call: 5.3.0 + lodash: 4.17.21 + registry-auth-token: 5.0.3 + transitivePeerDependencies: + - supports-color + '@octokit/auth-token@3.0.4': {} '@octokit/core@4.2.4(encoding@0.1.13)': @@ -17233,7 +17319,7 @@ snapshots: '@semaphore-protocol/identity': 3.15.2 '@types/json-bigint': 1.0.4 '@zk-kit/eddsa-poseidon': 1.0.3 - '@zk-kit/utils': 1.2.0 + '@zk-kit/utils': 1.2.1 js-sha256: 0.11.0 json-bigint: 1.0.0 poseidon-lite: 0.3.0 @@ -17277,6 +17363,14 @@ snapshots: secure-random: 1.1.2 uuid: 9.0.1 + '@pcd/util@0.9.0': + dependencies: + buffer: 6.0.3 + email-validator: 2.0.4 + js-sha256: 0.10.1 + secure-random: 1.1.2 + uuid: 9.0.1 + '@pcd/zk-eddsa-event-ticket-pcd@0.6.6(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@pcd/eddsa-pcd': 0.6.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -19815,6 +19909,10 @@ snapshots: circom_runtime: 0.1.24 ffjavascript: 0.2.60 + '@zk-kit/imt.sol@2.0.0-beta.12': + dependencies: + poseidon-solidity: 0.0.5 + '@zk-kit/incremental-merkle-tree@0.4.3': {} '@zk-kit/incremental-merkle-tree@1.1.0': {} @@ -19827,10 +19925,9 @@ snapshots: dependencies: '@zk-kit/utils': 1.2.0 - '@zk-kit/poseidon-cipher@0.3.1': + '@zk-kit/lean-imt@2.2.2': dependencies: - '@zk-kit/baby-jubjub': 1.0.1 - '@zk-kit/utils': 1.0.0 + '@zk-kit/utils': 1.2.1 '@zk-kit/poseidon-cipher@0.3.2': dependencies: @@ -19915,7 +20012,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20006,6 +20103,8 @@ snapshots: ansicolors@0.3.2: {} + ansis@3.3.2: {} + antlr4@4.13.2: {} antlr4ts@0.5.0-alpha.4: {} @@ -20222,7 +20321,7 @@ snapshots: axe-core@4.10.0: {} - axios-debug-log@1.0.0(axios@1.7.3): + axios-debug-log@1.0.0(axios@1.7.3(debug@4.3.6)): dependencies: '@types/debug': 4.1.12 axios: 1.7.3(debug@4.3.6) @@ -20846,14 +20945,6 @@ snapshots: tmp-promise: 3.0.3 util: 0.12.5 - circomkit@0.2.1(@types/snarkjs@0.7.8)(snarkjs@0.7.5): - dependencies: - '@types/snarkjs': 0.7.8 - circom_tester: 0.0.19 - commander: 12.1.0 - loglevel: 1.9.1 - snarkjs: 0.7.5 - circomkit@0.3.1(@types/snarkjs@0.7.8)(snarkjs@0.7.5): dependencies: '@types/snarkjs': 0.7.8 @@ -21568,6 +21659,12 @@ snapshots: optionalDependencies: supports-color: 8.1.1 + debug@4.4.0(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -21755,7 +21852,7 @@ snapshots: dns-over-http-resolver@1.2.3(node-fetch@2.7.0(encoding@0.1.13)): dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) native-fetch: 3.0.0(node-fetch@2.7.0(encoding@0.1.13)) receptacle: 1.3.2 transitivePeerDependencies: @@ -21764,7 +21861,7 @@ snapshots: dns-over-http-resolver@1.2.3(node-fetch@3.3.2): dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) native-fetch: 3.0.0(node-fetch@3.3.2) receptacle: 1.3.2 transitivePeerDependencies: @@ -22993,7 +23090,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -24084,6 +24181,17 @@ snapshots: http-cache-semantics@4.1.1: {} + http-call@5.3.0: + dependencies: + content-type: 1.0.5 + debug: 4.4.0(supports-color@8.1.1) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -24627,6 +24735,8 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.2 + is-retry-allowed@1.2.0: {} + is-set@2.0.3: {} is-shared-array-buffer@1.0.3: @@ -24767,7 +24877,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -25550,6 +25660,8 @@ snapshots: lilconfig@3.1.2: {} + lilconfig@3.1.3: {} + lines-and-columns@1.2.4: {} lines-and-columns@2.0.4: {} @@ -25800,6 +25912,20 @@ snapshots: lz-string@1.5.0: {} + maci-circuits@0.0.0-ci.30f517a(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@zk-kit/circuits': 0.4.0 + circomkit: 0.3.1(@types/snarkjs@0.7.8)(snarkjs@0.7.5) + circomlib: 2.0.5 + maci-core: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + snarkjs: 0.7.5 + transitivePeerDependencies: + - '@types/snarkjs' + - bufferutil + - utf-8-validate + maci-circuits@0.0.0-ci.6bdb342(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@zk-kit/circuits': 0.4.0 @@ -25814,21 +25940,21 @@ snapshots: - bufferutil - utf-8-validate - maci-circuits@2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10): + maci-circuits@2.5.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@zk-kit/circuits': 0.4.0 - circomkit: 0.2.1(@types/snarkjs@0.7.8)(snarkjs@0.7.5) + circomkit: 0.3.1(@types/snarkjs@0.7.8)(snarkjs@0.7.5) circomlib: 2.0.5 - maci-core: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-core: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) snarkjs: 0.7.5 transitivePeerDependencies: - '@types/snarkjs' - bufferutil - utf-8-validate - maci-cli@2.3.0(afbahbb676wb2hc2q35zcy2wou): + maci-cli@0.0.0-ci.30f517a(afbahbb676wb2hc2q35zcy2wou): dependencies: '@commander-js/extra-typings': 12.1.0(commander@12.1.0) '@nomicfoundation/hardhat-toolbox': 5.0.0(acfqap33qfnlzbyskgd7flvoze) @@ -25836,11 +25962,11 @@ snapshots: dotenv: 16.4.5 ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) - maci-circuits: 2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-contracts: 2.4.0(awh3aoilns4ccyopzf6qwbd5wy) - maci-core: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-circuits: 0.0.0-ci.30f517a(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-contracts: 0.0.0-ci.30f517a(awh3aoilns4ccyopzf6qwbd5wy) + maci-core: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) prompt: 1.3.0 transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' @@ -25873,11 +25999,11 @@ snapshots: dotenv: 16.4.5 ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) - maci-circuits: 2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-contracts: 2.4.0(awh3aoilns4ccyopzf6qwbd5wy) - maci-core: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-circuits: 2.5.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-contracts: 2.5.0(awh3aoilns4ccyopzf6qwbd5wy) + maci-core: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) prompt: 1.3.0 transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' @@ -25902,21 +26028,24 @@ snapshots: - typescript - utf-8-validate - maci-contracts@0.0.0-ci.6bdb342(2iw2nmc3wxvgxq6fukvsab2tzq): + maci-contracts@0.0.0-ci.30f517a(awh3aoilns4ccyopzf6qwbd5wy): dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-toolbox': 5.0.0(3m5usk7tylzyyaqa4hcopb3gq4) + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-toolbox': 5.0.0(acfqap33qfnlzbyskgd7flvoze) '@openzeppelin/contracts': 5.1.0 '@openzeppelin/merkle-tree': 1.0.7 + '@pcd/util': 0.9.0 + '@zk-kit/imt.sol': 2.0.0-beta.12 + '@zk-kit/lean-imt': 2.2.2 circomlibjs: 0.1.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) + hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) lowdb: 1.0.0 - maci-circuits: 0.0.0-ci.6bdb342(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-core: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) - solidity-docgen: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + maci-circuits: 0.0.0-ci.30f517a(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-core: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + solidity-docgen: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) uuid: 11.0.2 transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' @@ -25940,21 +26069,22 @@ snapshots: - typescript - utf-8-validate - maci-contracts@2.3.0(awh3aoilns4ccyopzf6qwbd5wy): + maci-contracts@0.0.0-ci.6bdb342(2iw2nmc3wxvgxq6fukvsab2tzq): dependencies: - '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-toolbox': 5.0.0(acfqap33qfnlzbyskgd7flvoze) - '@openzeppelin/contracts': 5.0.2 + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-toolbox': 5.0.0(3m5usk7tylzyyaqa4hcopb3gq4) + '@openzeppelin/contracts': 5.1.0 + '@openzeppelin/merkle-tree': 1.0.7 circomlibjs: 0.1.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) + hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) lowdb: 1.0.0 - maci-circuits: 2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-core: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - solidity-docgen: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - uuid: 10.0.0 + maci-circuits: 0.0.0-ci.6bdb342(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-core: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) + solidity-docgen: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + uuid: 11.0.2 transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' - '@nomicfoundation/hardhat-ignition-ethers' @@ -25977,22 +26107,22 @@ snapshots: - typescript - utf-8-validate - maci-contracts@2.4.0(awh3aoilns4ccyopzf6qwbd5wy): + maci-contracts@2.5.0(awh3aoilns4ccyopzf6qwbd5wy): dependencies: '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-toolbox': 5.0.0(acfqap33qfnlzbyskgd7flvoze) - '@openzeppelin/contracts': 5.0.2 + '@openzeppelin/contracts': 5.1.0 '@openzeppelin/merkle-tree': 1.0.7 circomlibjs: 0.1.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat: 2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10) lowdb: 1.0.0 - maci-circuits: 2.4.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-core: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-circuits: 2.5.0(@types/snarkjs@0.7.8)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-core: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) solidity-docgen: 0.6.0-beta.36(hardhat@2.22.15(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - uuid: 10.0.0 + uuid: 11.0.2 transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' - '@nomicfoundation/hardhat-ignition-ethers' @@ -26015,6 +26145,15 @@ snapshots: - typescript - utf-8-validate + maci-core@0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@zk-kit/lean-imt': 2.2.2 + maci-crypto: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + maci-core@0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: maci-crypto: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -26023,10 +26162,20 @@ snapshots: - bufferutil - utf-8-validate - maci-core@2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + maci-core@2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-domainobjs: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + maci-crypto@0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - maci-domainobjs: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@zk-kit/baby-jubjub': 1.0.3 + '@zk-kit/eddsa-poseidon': 1.1.0 + '@zk-kit/poseidon-cipher': 0.3.2 + ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -26041,16 +26190,23 @@ snapshots: - bufferutil - utf-8-validate - maci-crypto@2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + maci-crypto@2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@zk-kit/baby-jubjub': 1.0.3 - '@zk-kit/eddsa-poseidon': 1.0.2 - '@zk-kit/poseidon-cipher': 0.3.1 + '@zk-kit/eddsa-poseidon': 1.1.0 + '@zk-kit/poseidon-cipher': 0.3.2 ethers: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate + maci-domainobjs@0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + maci-crypto: 0.0.0-ci.30f517a(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + maci-domainobjs@0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: maci-crypto: 0.0.0-ci.6bdb342(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -26058,25 +26214,25 @@ snapshots: - bufferutil - utf-8-validate - maci-domainobjs@2.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + maci-domainobjs@2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - maci-domainobjs@2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + maci-domainobjs@2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - maci-crypto: 2.4.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + maci-crypto: 2.5.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - maci-subgraph@2.3.0(7henheoj4j7suwad7kk5q6epmy): + maci-subgraph@0.0.0-ci.30f517a(7henheoj4j7suwad7kk5q6epmy): dependencies: - '@graphprotocol/graph-cli': 0.80.0(@types/node@20.14.14)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.5.4)(utf-8-validate@5.0.10) + '@graphprotocol/graph-cli': 0.88.0(@types/node@20.14.14)(bufferutil@4.0.8)(encoding@0.1.13)(node-fetch@2.7.0(encoding@0.1.13))(typescript@5.5.4)(utf-8-validate@5.0.10) '@graphprotocol/graph-ts': 0.35.1 - maci-contracts: 2.4.0(awh3aoilns4ccyopzf6qwbd5wy) + maci-contracts: 0.0.0-ci.30f517a(awh3aoilns4ccyopzf6qwbd5wy) transitivePeerDependencies: - '@nomicfoundation/hardhat-chai-matchers' - '@nomicfoundation/hardhat-ignition-ethers' @@ -26598,7 +26754,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -27683,6 +27839,8 @@ snapshots: poseidon-lite@0.3.0: {} + poseidon-solidity@0.0.5: {} + possible-typed-array-names@1.0.0: {} postcss-import@15.1.0(postcss@8.4.47): @@ -28327,6 +28485,10 @@ snapshots: dependencies: '@pnpm/npm-conf': 2.3.1 + registry-auth-token@5.0.3: + dependencies: + '@pnpm/npm-conf': 2.3.1 + registry-url@6.0.1: dependencies: rc: 1.2.8 @@ -28834,7 +28996,7 @@ snapshots: socks-proxy-agent@8.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -28849,7 +29011,7 @@ snapshots: '@aduh95/viz.js': 3.7.0 '@solidity-parser/parser': 0.16.2 axios: 1.7.3(debug@4.3.6) - axios-debug-log: 1.0.0(axios@1.7.3) + axios-debug-log: 1.0.0(axios@1.7.3(debug@4.3.6)) cli-color: 2.0.4 commander: 11.1.0 convert-svg-to-png: 0.6.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) @@ -29778,11 +29940,15 @@ snapshots: tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) make-fetch-happen: 13.0.1 transitivePeerDependencies: - supports-color + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + tweetnacl-util@0.15.1: {} tweetnacl@1.0.3: {} @@ -29823,7 +29989,7 @@ snapshots: typechain@8.3.2(typescript@5.5.4): dependencies: '@types/prettier': 2.7.3 - debug: 4.3.6(supports-color@8.1.1) + debug: 4.4.0(supports-color@8.1.1) fs-extra: 7.0.1 glob: 7.1.7 js-sha3: 0.8.0