diff --git a/.gitignore b/.gitignore index 97174f8..fce236f 100644 --- a/.gitignore +++ b/.gitignore @@ -26,11 +26,11 @@ typechain-types generated-types artifacts cache -tests/tests/inputs/* +test/tests/inputs/* temp_asn1.der -tests/tests/__pycache__ -!tests/tests/*.py -!tests/tests/inputs/credValidExceedsPassportInput.json -!tests/tests/inputs/passportExpiredInput.json -!tests/tests/inputs/isNotAdultInput.json -!tests/tests/inputs/validInput.json \ No newline at end of file +test/tests/__pycache__ +!test/tests/*.py +!test/tests/inputs/credValidExceedsPassportInput.json +!test/tests/inputs/passportExpiredInput.json +!test/tests/inputs/isNotAdultInput.json +!test/tests/inputs/validInput.json diff --git a/.mocharc.json b/.mocharc.json index d238df2..d8079d9 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -1,5 +1,5 @@ { "require": "hardhat/register", - "timeout": 40000, + "timeout": 100000, "_": ["test/**/*.ts"] -} \ No newline at end of file +} diff --git a/README.md b/README.md index bc3bd7f..3eb3e25 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,19 @@ -# passport-zk-circuits +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -Circuits for a voting system based on the passport scanning +# Passport ZK Circuits -Install the `circomlib` package before running the circuits. +**Circuits for a voting system based on biometric passports scanning.** -```console -npm install circomlib -``` - -**scripts** directory contains scripts to simplify interaction with circuits. - -- ***compile-circuit*** - compiles circom circuit (receive *R1CS*, *WASM* & *CPP* for witness generation); Usage: ```compile-circuit ``` - -- ***trusted-setup*** - *Powers-of-Tau* ceremony for trusted setup generation. Usage: ```trusted-setup ``` - -- ***export-keys*** - generates proving and verification keys. Do not forget to perform a trusted setup first. Usage: ```export-keys ``` +## Usage -- ***gen-witness*** - generates witness. Can be done without a trusted setup. Do not forget to compile circuit first. Usage: ```gen-witness ``` +The repository leverages `hardhat-zkit` environment to carry out the management of circuits. There are several scripts available: -- ***prove*** - generates witness and proof. Do not forget to compile the circuit and export keys first. Usage: ```prove ``` +- `npm run zkit-make`, to compile and set up the keys for the circuits. +- `npm run zkit-compile`, to compile just compile the circuits (witness testing). +- `npm run zkit-verifiers`, to generate Solidity (or Vyper) smart contract verifiers. -- ***verify*** - verifies the proof. Usage: ```verify ``` +> [!NOTE] +> Install the necessary packages via `npm install` before proceeding with the circuits. ## @@ -28,7 +21,7 @@ npm install circomlib ## Biometric Passport Authentication -Data in a passport is separated into data groups. Not all of them are required to be present in the passport. Document Security Object (SOD) has **encapculated content** field that contains hashes of all datagroups. During passive authentication verification party hashes data from the datagroups and compare it with hashes stored in the **encapculated content** with *ASN1* encoding. The hash of the **encapculated content** itself is stored in the **signed attributes** field, which is also *ASN1* encoded. +Data in a passport is separated into data groups. Not all of them are required to be present in the passport. Document Security Object (SOD) has **encapsulated content** field that contains hashes of all datagroups. During passive authentication verification party hashes data from the datagroups and compare it with hashes stored in the **encapsulated content** with *ASN1* encoding. The hash of the **encapsulated content** itself is stored in the **signed attributes** field, which is also *ASN1* encoded. To verify **signed attributes**, verification party uses the passport signature, which is also stored in the **SOD**. To confirm that the passport is authenticated by a legitimate authority (ensuring the signer's public key is genuinely owned by a passport-issuing entity), the corresponding **PKI x509** certificate is stored in the **SOD**. Utilizing a Public Key Infrastructure (PKI) allows for the establishment of a verification path to a trusted anchor. This trusted anchor should be a publicly recognized list of master certificates. Specifically, a *Master List* comprises *Country Signing Certification Authority (CSCA)* certificates that have been issued and digitally signed by the respective issuing State, providing a robust framework for ensuring the authenticity and integrity of passport data. ## Circuits @@ -43,53 +36,42 @@ The Merkle Tree is built upon participants registration. After proving that the By using the knowledge of the commitment preimage and generating the corresponding proof, users can express their votes. -#### Circuit parameter - -**depth** - depth of a Merkle Tree used to prove leaf inclusion. - -#### Inputs - -- ***root***: *public*; Poseidon Hash is used for tree hashing; +#### Circuit parameters -- ***nullifierHash***: *public*; Poseidon Hash is used for the *nullifier* hashing; +- **depth** - depth of a Merkle Tree used to prove leaf inclusion. -- ***vote***: *public*; not taking part in any computations; binds the vote to the proof +#### Circuit public inputs -- ***nullifier***: *private* +- [0] **root** - Poseidon Hash is used for tree hashing; +- [1] **nullifierHash** - Poseidon Hash is used for the *nullifier* hashing; +- [2] **vote** - not taking part in any computations; binds the vote to the proof -- ***secret***: *private* +#### Circuit private inputs -- ***pathElements[levels]***: *private*; Merkle Branch - -- ***pathIndices[levels]***: *private*; `0` - left, `1` - right +- **nullifier** +- **secret** +- **pathElements[levels]** - Merkle Branch +- **pathIndices[levels]** - `0` - left, `1` - right ### Passport Verification circuits Passport Verification circuits are used to prove that user is eligible to vote. Currently following checks are made: - Date of passport expiracy is less than the current date; - - Current date is after date of birth + **18** years; (for now **18** years is a constant); - - Passport issuer code is used as an output signal; -### Circuit public inputs - -- **currentDateYear** - -- **currentDateMonth** - -- **currentDateDay** +#### Circuit public inputs -- **credValidYear** +- [0] **currentDateYear** +- [1] **currentDateMonth** +- [2] **currentDateDay** +- [3] **credValidYear** +- [4] **credValidMonth** +- [5] **credValidDay** +- [6] **ageLowerbound** - age limit for voting rights. The circuit verifies that the passport owner is older than *ageLowerbound* years at the *currentDate*. -- **credValidMonth** - -- **credValidDay** - -- **ageLowerbound** - age limit for voting rights. The circuit verifies that the passport owner is older than *ageLowerbound* years at the *currentDate*. - -### Circuits private inputs +#### Circuits private inputs - **in** - passport **DG1** serialized in binary. @@ -97,20 +79,6 @@ The current date is needed to timestamp the date of proof generation. The circui Passport data is separated into *DataGroups*. The hashes of these datagroups are stored in **SOD** *(Security Object of the Document)*. All neccesary data is stored in *Data Group 1 (DG1)*. Currently, **SHA1** and **SHA256** hashes are supported (```passportDG1VerificationSHA256``` and ```passportDG1VerificationSHA256```). -### Testing - -To run tests enter ***tests*** directory and run: - -```mocha -p -r ts-node/register 'passportTests.js'``` - -Inputs are not provided, as they contain personal data. May be mocked later. - -To test query circuits: -```mocha -p -r ts-node/register 'queryIdentityTests.js'``` - -To test identity registration circuits: -```mocha -p -r ts-node/register 'registerIdentityTests'.js'``` - ### Identity platform To enhance user experience and eliminate the repetitive need for passport rescanning, we have implemented a user identity management platform. This platform streamlines the process, making it easier and more efficient for users to verify their identity. @@ -202,7 +170,7 @@ Poseidon(SHA256(signed_attributes\[:252bits])), while `dg15PubKeyHash` will be s - [1] **output** passportHash; - [2] **output** dg1Commitment; - [3] **output** pkIdentityHash; -- [4] **input** slaveMerkleRoot; // public +- [4] **input** slaveMerkleRoot; #### Query circuit @@ -242,9 +210,8 @@ The query circuit allows you to prove arbitrary data from a passport. } ``` -***IMPORTANT!*** - -If date input is **NOT** used, put “0x303030303030” (52983525027888 - decimal). This is equal to “000000” in UTF-8 encoding, which is used to encode date in the passport. Otherwise date verification constraints will fail. +> [!IMPORTANT] +> If date input is **NOT** used, put “0x303030303030” (52983525027888 - decimal). This is equal to “000000” in UTF-8 encoding, which is used to encode date in the passport. Otherwise date verification constraints will fail. #### Query circuit public signals @@ -315,6 +282,7 @@ By applying the selector, we can use the same circuit for any set of revealed an ```markdown QUERY SELECTOR: + 0 - nullifier (+) 1 - birth date (+) 2 - expiration date (+) diff --git a/hardhat.config.ts b/hardhat.config.ts index 307a06f..1f585ec 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -3,6 +3,7 @@ import "@nomicfoundation/hardhat-toolbox"; import "tsconfig-paths/register"; import "@solarity/hardhat-zkit"; +import "@solarity/chai-zkit"; import { HardhatUserConfig } from "hardhat/config"; @@ -24,7 +25,6 @@ const config: HardhatUserConfig = { }, zkit: { circuitsDir: "circuits", - nativeCompiler: true, compilationSettings: { c: true, onlyFiles: ["participationProof.circom"], diff --git a/package-lock.json b/package-lock.json index 6d5a7cd..2430d4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,36 +9,37 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "chai": "^4.3.6", - "circomlib": "^2.0.5", - "ffjavascript": "^0.2.60", - "fnv-plus": "^1.3.1", - "r1csfile": "^0.0.47", - "snarkjs": "^0.7.0", - "tmp-promise": "^3.0.3", - "util": "^0.12.5" + "circomlib": "^2.0.5" }, "devDependencies": { "@iden3/js-crypto": "^1.0.3", "@nomicfoundation/hardhat-toolbox": "^5.0.0", - "@solarity/hardhat-zkit": "^0.3.2", + "@solarity/chai-zkit": "^0.2.5", + "@solarity/hardhat-zkit": "^0.4.2", "@typechain/ethers-v6": "^0.5.1", "@types/chai": "^4.3.14", "@types/mocha": "^10.0.6", "@types/node": "^18.16.0", "@types/snarkjs": "^0.7.8", + "chai": "^4.3.6", "circomlibjs": "^0.1.7", "dotenv": "^16.4.5", "ethers": "^6.11.1", + "ffjavascript": "^0.2.60", + "fnv-plus": "^1.3.1", "hardhat": "^2.20.1", "logplease": "^1.2.15", "mocha": "^10.3.0", "prettier": "^3.2.5", "prettier-plugin-solidity": "^1.3.1", + "r1csfile": "^0.0.47", + "snarkjs": "^0.7.0", + "tmp-promise": "^3.0.3", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typechain": "^8.3.2", - "typescript": "^5.4.3" + "typescript": "^5.4.3", + "util": "^0.12.5" } }, "node_modules/@adraffy/ens-normalize": { @@ -69,6 +70,16 @@ "node": ">=12" } }, + "node_modules/@distributedlab/circom-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@distributedlab/circom-parser/-/circom-parser-0.1.2.tgz", + "integrity": "sha512-q5IaKs60LPxQhLCdMH8fcpvUP2IKItukrDdLFurdHVfrIypEZRSTW3FeFwqSC/ruFcWwdDhHIZd0tG2x5iFryA==", + "dev": true, + "dependencies": { + "antlr4": "4.13.1-patch-1", + "ejs": "3.1.10" + } + }, "node_modules/@distributedlab/circom2": { "version": "0.2.18-rc.4", "resolved": "https://registry.npmjs.org/@distributedlab/circom2/-/circom2-0.2.18-rc.4.tgz", @@ -896,12 +907,14 @@ "node_modules/@iden3/bigarray": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/@iden3/bigarray/-/bigarray-0.0.2.tgz", - "integrity": "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==" + "integrity": "sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==", + "dev": true }, "node_modules/@iden3/binfileutils": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/@iden3/binfileutils/-/binfileutils-0.0.11.tgz", "integrity": "sha512-LylnJoZ0CTdgErnKY8OxohvW4K+p6UHD3sxt+3P9AmMyBQjYR4IpoqoYZZ+9aMj89cmCQ21UvdhndAx04er3NA==", + "dev": true, "dependencies": { "fastfile": "0.0.20", "ffjavascript": "^0.2.48" @@ -1059,81 +1072,81 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.5.2.tgz", - "integrity": "sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.6.2.tgz", + "integrity": "sha512-yPUegN3sTWiAkRatCmGRkuvMgD9HSSpivl2ebAqq0aU2xgC7qmIO+YQPxQ3Z46MUoi7MrTf4e6GpbT4S/8x0ew==", "dev": true, "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.5.2", - "@nomicfoundation/edr-darwin-x64": "0.5.2", - "@nomicfoundation/edr-linux-arm64-gnu": "0.5.2", - "@nomicfoundation/edr-linux-arm64-musl": "0.5.2", - "@nomicfoundation/edr-linux-x64-gnu": "0.5.2", - "@nomicfoundation/edr-linux-x64-musl": "0.5.2", - "@nomicfoundation/edr-win32-x64-msvc": "0.5.2" + "@nomicfoundation/edr-darwin-arm64": "0.6.2", + "@nomicfoundation/edr-darwin-x64": "0.6.2", + "@nomicfoundation/edr-linux-arm64-gnu": "0.6.2", + "@nomicfoundation/edr-linux-arm64-musl": "0.6.2", + "@nomicfoundation/edr-linux-x64-gnu": "0.6.2", + "@nomicfoundation/edr-linux-x64-musl": "0.6.2", + "@nomicfoundation/edr-win32-x64-msvc": "0.6.2" }, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.5.2.tgz", - "integrity": "sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.6.2.tgz", + "integrity": "sha512-o4A9SaPlxJ1MS6u8Ozqq7Y0ri2XO0jASw+qkytQyBYowNFNReoGqVSs7SCwenYCDiN+1il8+M0VAUq7wOovnCQ==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.5.2.tgz", - "integrity": "sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.6.2.tgz", + "integrity": "sha512-WG8BeG2eR3rFC+2/9V1hoPGW7tmNRUcuztdHUijO1h2flRsf2YWv+kEHO+EEnhGkEbgBUiwOrwlwlSMxhe2cGA==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.5.2.tgz", - "integrity": "sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.6.2.tgz", + "integrity": "sha512-wvHaTmOwuPjRIOqBB+paI3RBdNlG8f3e1F2zWj75EdeWwefimPzzFUs05JxOYuPO0JhDQIn2tbYUgdZbBQ+mqg==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.5.2.tgz", - "integrity": "sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.6.2.tgz", + "integrity": "sha512-UrOAxnsywUcEngQM2ZxIuucci0VX29hYxX7jcpwZU50HICCjxNsxnuXYPxv+IM+6gbhBY1FYvYJGW4PJcP1Nyw==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.5.2.tgz", - "integrity": "sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.6.2.tgz", + "integrity": "sha512-gYxlPLi7fkNcmDmCwZWQa5eOfNcTDundE+TWjpyafxLAjodQuKBD4I0p4XbnuocHjoBEeNzLWdE5RShbZEXEJA==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.5.2.tgz", - "integrity": "sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.6.2.tgz", + "integrity": "sha512-ev5hy9wmiHZi1GKQ1l6PJ2+UpsUh+DvK9AwiCZVEdaicuhmTfO6fdL4szgE4An8RU+Ou9DeiI1tZcq6iw++Wuw==", "dev": true, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.5.2.tgz", - "integrity": "sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.6.2.tgz", + "integrity": "sha512-2ZXVVcmdmEeX0Hb3IAurHUjgU3H1GIk9h7Okosdjgl3tl+BaNHxi84Us+DblynO1LRj8nL/ATeVtSfBuW3Z1vw==", "dev": true, "engines": { "node": ">= 18" @@ -1205,9 +1218,9 @@ } }, "node_modules/@nomicfoundation/hardhat-chai-matchers": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.7.tgz", - "integrity": "sha512-RQfsiTwdf0SP+DtuNYvm4921X6VirCQq0Xyh+mnuGlTwEFSPZ/o27oQC+l+3Y/l48DDU7+ZcYBR+Fp+Rp94LfQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", + "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", "dev": true, "peer": true, "dependencies": { @@ -1224,9 +1237,9 @@ } }, "node_modules/@nomicfoundation/hardhat-ethers": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.7.tgz", - "integrity": "sha512-pxLWpDiqC208shoz/lMbVFbxcVxE+qIs8qDrwdcubWH99UO1p6uwXakMa36ICRfB/IEToSLDJGSsKhwY84feCQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz", + "integrity": "sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==", "dev": true, "peer": true, "dependencies": { @@ -1235,21 +1248,22 @@ }, "peerDependencies": { "ethers": "^6.1.0", - "hardhat": "^2.22.92.0.0" + "hardhat": "^2.0.0" } }, "node_modules/@nomicfoundation/hardhat-ignition": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.5.tgz", - "integrity": "sha512-Y5nhFXFqt4owA6Ooag8ZBFDF2RAZElMXViknVIsi3m45pbQimS50ti6FU8HxfRkDnBARa40CIn7UGV0hrelzDw==", + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.6.tgz", + "integrity": "sha512-PcMf4xlYvwHYej2jcuOd/rBNNMM5FO11vh9c+MF8+m7NxV4b6NOameL3uscoD7ghg0H2GNgnGXgQ67ryRqtdIQ==", "dev": true, "peer": true, "dependencies": { - "@nomicfoundation/ignition-core": "^0.15.5", - "@nomicfoundation/ignition-ui": "^0.15.5", + "@nomicfoundation/ignition-core": "^0.15.6", + "@nomicfoundation/ignition-ui": "^0.15.6", "chalk": "^4.0.0", "debug": "^4.3.2", "fs-extra": "^10.0.0", + "json5": "^2.2.3", "prompts": "^2.4.2" }, "peerDependencies": { @@ -1258,23 +1272,23 @@ } }, "node_modules/@nomicfoundation/hardhat-ignition-ethers": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.5.tgz", - "integrity": "sha512-W6s1QN9CFxzSVZS6w9Jcj3WLaK32z2FP5MxNU2OKY1Fn9ZzLr+miXbUbWYuRHl6dxrrl6sE8cv33Cybv19pmCg==", + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.6.tgz", + "integrity": "sha512-+jXDGWdfkuIGm0W+aFEZ9SLQz2MIj7Cf4j7ANTXUIIbK8sUkvnVOhTTAQEdqa0KgGEb45XS88BPg0w8fixwrXQ==", "dev": true, "peer": true, "peerDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.4", - "@nomicfoundation/hardhat-ignition": "^0.15.5", - "@nomicfoundation/ignition-core": "^0.15.5", + "@nomicfoundation/hardhat-ignition": "^0.15.6", + "@nomicfoundation/ignition-core": "^0.15.6", "ethers": "^6.7.0", "hardhat": "^2.18.0" } }, "node_modules/@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz", - "integrity": "sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.12.tgz", + "integrity": "sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==", "dev": true, "peer": true, "dependencies": { @@ -1311,9 +1325,9 @@ } }, "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.9.tgz", - "integrity": "sha512-7kD8hu1+zlnX87gC+UN4S0HTKBnIsDfXZ/pproq1gYsK94hgCk+exvzXbwR0X2giiY/RZPkqY9oKRi0Uev91hQ==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.11.tgz", + "integrity": "sha512-lGIo4dNjVQFdsiEgZp3KP6ntLiF7xJEJsbNHfSyIiFCyI0Yv0518ElsFtMC5uCuHEChiBBMrib9jWQvHHT+X3Q==", "dev": true, "peer": true, "dependencies": { @@ -1328,7 +1342,7 @@ "undici": "^5.14.0" }, "peerDependencies": { - "hardhat": "^2.22.72.0.4" + "hardhat": "^2.0.4" } }, "node_modules/@nomicfoundation/hardhat-verify/node_modules/ansi-styles": { @@ -1410,9 +1424,9 @@ } }, "node_modules/@nomicfoundation/ignition-core": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.5.tgz", - "integrity": "sha512-FgvuoIXhakRSP524JzNQ4BviyzBBKpsFaOWubPZ4XACLT4/7vGqlJ/7DIn0D2NL2anQ2qs98/BNBY9WccXUX1Q==", + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.6.tgz", + "integrity": "sha512-9eD1NJ2G4vh7IleRNmCz/3bGVoNEPYrRVPqx0uvWzG2xD226GGQcTgtK+NovyxsQOE/AcLF1xjX3/+8kNc1sSg==", "dev": true, "peer": true, "dependencies": { @@ -1465,9 +1479,9 @@ } }, "node_modules/@nomicfoundation/ignition-ui": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.5.tgz", - "integrity": "sha512-ZcE4rIn10qKahR4OqS8rl8NM2Fbg2QYiBXgMgj74ZI0++LlCcZgB5HyaBbX+lsnKHjTXtjYD3b+2mtg7jFbAMQ==", + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.6.tgz", + "integrity": "sha512-CW14g/BVcGZtBSF1K4eZSCjyvtz1fr9yppkFKC+Z0+sm/lXFWpwcwaVN+UiugQ/9wz9HAfSk4Y0gagdAMiSs0w==", "dev": true, "peer": true }, @@ -1560,9 +1574,9 @@ } }, "node_modules/@scure/base": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", - "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, "funding": { "url": "https://paulmillr.com/funding/" @@ -1774,15 +1788,42 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/@solarity/chai-zkit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@solarity/chai-zkit/-/chai-zkit-0.2.5.tgz", + "integrity": "sha512-VRl6YXd/uQruz0U48B85hmeA7sMn1WUjUcGtMMKovFJjFY4xKjUrtGAuXfUCM8ZB9nt6iuTulsPEijLWgayIHg==", + "dev": true, + "dependencies": { + "chai-as-promised": "7.1.1" + }, + "peerDependencies": { + "@solarity/hardhat-zkit": ">=0.3.1 <0.5.0", + "@solarity/zkit": ">=0.2.4 <0.4.0", + "chai": "^4.0.0" + } + }, + "node_modules/@solarity/chai-zkit/node_modules/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "dev": true, + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" + } + }, "node_modules/@solarity/hardhat-zkit": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@solarity/hardhat-zkit/-/hardhat-zkit-0.3.2.tgz", - "integrity": "sha512-xmfINuwRPNFoDZcLkaBb5HRkw5s4AdWl1+5EdrwBlAUSXjjUftYjNHohEmqaSrgmoTZiM9YrkvZgKPglgvs5EA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@solarity/hardhat-zkit/-/hardhat-zkit-0.4.2.tgz", + "integrity": "sha512-hiofTNDHEnArzpbfIo4TrzSjXCPuI2XAlWA1BsdRuc1Km0WnGlgfAFcYY8t05V6Ec7/YLDuXYR/LT7ScykFadQ==", "dev": true, "dependencies": { + "@distributedlab/circom-parser": "0.1.2", "@distributedlab/circom2": "0.2.18-rc.4", "@solarity/zkit": "0.2.6", - "@solarity/zktype": "0.2.7", + "@solarity/zktype": "0.3.1", "chalk": "4.1.2", "cli-progress": "3.12.0", "cli-table3": "0.6.5", @@ -1790,8 +1831,10 @@ "lodash": "4.17.21", "ora": "5.4.1", "resolve": "1.22.8", + "semver": "7.6.3", "snarkjs": "0.7.3", - "uuid": "9.0.1" + "uuid": "9.0.1", + "zod": "3.23.8" }, "peerDependencies": { "hardhat": "^2.16.0" @@ -1837,6 +1880,24 @@ } } }, + "node_modules/@solarity/hardhat-zkit/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@solarity/hardhat-zkit/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@solarity/hardhat-zkit/node_modules/snarkjs": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.7.3.tgz", @@ -1913,9 +1974,9 @@ } }, "node_modules/@solarity/zktype": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@solarity/zktype/-/zktype-0.2.7.tgz", - "integrity": "sha512-L9Z0YweqBMtaKpkrlREifgasHKWUR7iNkHaL6BUefjjtZnPj6Ft8ycLVh5V+mn+vixVkHjPRyTVTWu04plmq1Q==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@solarity/zktype/-/zktype-0.3.1.tgz", + "integrity": "sha512-MPpnqE6dg1gobaLYdIV1IYzxiGxeQDfNnewDcnPr9nhDxIOGb8T+YMXI5JhRITRMQJHwjdfX/feyQIgjiGab1Q==", "dev": true, "dependencies": { "ejs": "3.1.10", @@ -1929,6 +1990,19 @@ "@solarity/zkit": "^0.2.4" } }, + "node_modules/@solarity/zktype/node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", @@ -2011,18 +2085,18 @@ } }, "node_modules/@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/chai": { - "version": "4.3.18", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.18.tgz", - "integrity": "sha512-2UfJzigyNa8kYTKn7o4hNMPphkxtu4WTJyobK3m4FBpyj7EK5xgtPcOtxLm7Dznk/Qxr0QXn+gQbkg7mCZKdfg==", + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -2080,15 +2154,15 @@ "peer": true }, "node_modules/@types/mocha": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", - "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.8.tgz", + "integrity": "sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw==", "dev": true }, "node_modules/@types/node": { - "version": "18.19.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.46.tgz", - "integrity": "sha512-vnRgMS7W6cKa1/0G3/DTtQYpVrZ8c0Xm6UkLaVFrb9jtcVC3okokW09Ki1Qdrj9ISokszD69nY4WDLRlvHlhAA==", + "version": "18.19.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.54.tgz", + "integrity": "sha512-+BRgt0G5gYjTvdLac9sIeE0iZcJxi4Jc4PV5EUzqi+88jmQLr+fRZdv2tCTV7IHKSGxM6SaLoOXQWWUiLUItMw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -2110,9 +2184,9 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true, "peer": true }, @@ -2163,9 +2237,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "dependencies": { "acorn": "^8.11.0" @@ -2235,6 +2309,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true, "optional": true, "engines": { "node": ">=0.4.2" @@ -2286,6 +2361,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2296,6 +2372,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/antlr4": { + "version": "4.13.1-patch-1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1-patch-1.tgz", + "integrity": "sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==", + "dev": true, + "engines": { + "node": ">=16" + } + }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", @@ -2368,6 +2453,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, "engines": { "node": "*" } @@ -2385,7 +2471,8 @@ "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true }, "node_modules/asynckit": { "version": "0.4.0", @@ -2408,6 +2495,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2419,9 +2507,9 @@ } }, "node_modules/axios": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", - "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "peer": true, "dependencies": { @@ -2431,14 +2519,16 @@ } }, "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base-x": { "version": "3.0.10", @@ -2479,6 +2569,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", + "dev": true, "dependencies": { "bluebird": "^3.7.2", "check-types": "^11.2.3", @@ -2598,6 +2689,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", "integrity": "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==", + "dev": true, "dependencies": { "b4a": "^1.0.1", "nanoassert": "^2.0.0" @@ -2612,7 +2704,8 @@ "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", @@ -2658,6 +2751,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2782,6 +2876,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2832,6 +2927,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -2862,6 +2958,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2887,6 +2984,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, "dependencies": { "get-func-name": "^2.0.2" }, @@ -2897,30 +2995,22 @@ "node_modules/check-types": { "version": "11.2.3", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", - "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==" + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "dev": true }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/chownr": { @@ -2950,6 +3040,7 @@ "version": "0.1.25", "resolved": "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.1.25.tgz", "integrity": "sha512-xBGsBFF5Uv6AKvbpgExYqpHfmfawH2HKe+LyjfKSRevqEV8u63i9KGHVIILsbJNW+0c5bm/66f0PUYQ7qZSkJA==", + "dev": true, "dependencies": { "ffjavascript": "0.3.0" }, @@ -2961,6 +3052,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.3.0.tgz", "integrity": "sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==", + "dev": true, "dependencies": { "wasmbuilder": "0.0.16", "wasmcurves": "0.2.2", @@ -3128,6 +3220,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3138,7 +3231,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", @@ -3300,7 +3394,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/concat-stream": { "version": "1.6.2", @@ -3418,12 +3513,12 @@ "peer": true }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3450,6 +3545,7 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, "dependencies": { "type-detect": "^4.0.0" }, @@ -3469,7 +3565,8 @@ "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/defaults": { "version": "1.0.4", @@ -3487,6 +3584,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -3569,6 +3667,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, "dependencies": { "jake": "^10.8.5" }, @@ -3632,6 +3731,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -3643,14 +3743,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "engines": { "node": ">= 0.4" } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -3672,6 +3773,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", + "dev": true, "dependencies": { "esprima": "^2.7.1", "estraverse": "^1.9.1", @@ -3693,6 +3795,7 @@ "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3705,6 +3808,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3717,6 +3821,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3725,6 +3830,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -3944,13 +4050,13 @@ } }, "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", "dev": true, "peer": true, "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -4037,9 +4143,9 @@ } }, "node_modules/ethers": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", - "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", + "version": "6.13.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.3.tgz", + "integrity": "sha512-/DzbZOLVtoO4fKvvQwpEucHAQgIwBGWuRvBdwE/lMXgXvvHHTSkn7XqAQ2b+gjJzZDJjWA9OD05bVceVOsBHbg==", "dev": true, "funding": [ { @@ -4143,19 +4249,21 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", "dev": true, "peer": true }, "node_modules/fastfile": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/fastfile/-/fastfile-0.0.20.tgz", - "integrity": "sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==" + "integrity": "sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==", + "dev": true }, "node_modules/fastq": { "version": "1.17.1", @@ -4171,6 +4279,7 @@ "version": "0.2.63", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.63.tgz", "integrity": "sha512-dBgdsfGks58b66JnUZeZpGxdMIDQ4QsD3VYlRJyFVrKQHb2kJy4R2gufx5oetrTxXPT+aEjg0dOvOLg1N0on4A==", + "dev": true, "dependencies": { "wasmbuilder": "0.0.16", "wasmcurves": "0.2.2", @@ -4181,6 +4290,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, "dependencies": { "minimatch": "^5.0.1" } @@ -4189,6 +4299,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -4197,6 +4308,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4252,12 +4364,13 @@ "node_modules/fnv-plus": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", - "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" + "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==", + "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -4278,6 +4391,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -4362,6 +4476,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4379,6 +4494,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, "engines": { "node": "*" } @@ -4387,6 +4503,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -4588,6 +4705,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4634,14 +4752,14 @@ } }, "node_modules/hardhat": { - "version": "2.22.9", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.9.tgz", - "integrity": "sha512-sWiuI/yRdFUPfndIvL+2H18Vs2Gav0XacCFYY5msT5dHOWkhLxESJySIk9j83mXL31aXL8+UMA9OgViFLexklg==", + "version": "2.22.12", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.12.tgz", + "integrity": "sha512-yok65M+LsOeTBHQsjg//QreGCyrsaNmeLVzhTFqlOvZ4ZE5y69N0wRxH1b2BC9dGK8S8OPUJMNiL9X0RAvbm8w==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.5.2", + "@nomicfoundation/edr": "^0.6.1", "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", @@ -4654,7 +4772,7 @@ "ansi-escapes": "^4.3.0", "boxen": "^5.1.2", "chalk": "^2.4.2", - "chokidar": "^3.4.0", + "chokidar": "^4.0.0", "ci-info": "^2.0.0", "debug": "^4.1.1", "enquirer": "^2.3.0", @@ -4667,6 +4785,7 @@ "glob": "7.2.0", "immutable": "^4.0.0-rc.12", "io-ts": "1.10.4", + "json-stream-stringify": "^3.1.4", "keccak": "^3.0.2", "lodash": "^4.17.11", "mnemonist": "^0.38.0", @@ -4920,6 +5039,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } @@ -4928,6 +5048,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -4939,6 +5060,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -4950,6 +5072,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -4961,6 +5084,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -4999,6 +5123,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -5047,6 +5172,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true, "engines": { "node": ">= 6.0.0" } @@ -5195,7 +5321,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "1.3.8", @@ -5227,6 +5354,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -5254,6 +5382,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -5298,6 +5427,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -5361,6 +5491,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -5401,6 +5532,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -5417,7 +5549,8 @@ "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -5438,6 +5571,15 @@ "dev": true, "peer": true }, + "node_modules/json-stream-stringify": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.5.tgz", + "integrity": "sha512-wurRuTiw27mck9MWaUIGAunfwqhPDxnXQVN/+Rzi+IEQUUALU10AZs1nWkSdtjH7PAVuAUcqQjH11S/JHOWeaA==", + "dev": true, + "engines": { + "node": ">=7.10.1" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -5474,6 +5616,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dev": true, "dependencies": { "esprima": "1.2.2", "static-eval": "2.0.2", @@ -5535,6 +5678,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -5615,12 +5759,14 @@ "node_modules/logplease": { "version": "1.2.15", "resolved": "https://registry.npmjs.org/logplease/-/logplease-1.2.15.tgz", - "integrity": "sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==" + "integrity": "sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==", + "dev": true }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, "dependencies": { "get-func-name": "^2.0.1" } @@ -5743,6 +5889,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5851,6 +5998,30 @@ "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -5914,12 +6085,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5959,6 +6124,18 @@ "node": ">=8" } }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -5975,15 +6152,16 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/nanoassert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", - "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==" + "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", + "dev": true }, "node_modules/ndjson": { "version": "2.0.0", @@ -6029,9 +6207,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", "dev": true, "bin": { "node-gyp-build": "bin.js", @@ -6150,6 +6328,7 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -6300,6 +6479,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, "engines": { "node": "*" } @@ -6346,6 +6526,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -6354,6 +6535,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -6496,6 +6678,7 @@ "version": "0.0.47", "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.47.tgz", "integrity": "sha512-oI4mAwuh1WwuFg95eJDNDDL8hCaZkwnPuNZrQdLBWvDoRU7EG+L/MOHL7SwPW2Y+ZuYcTLpj3rBkgllBQZN/JA==", + "dev": true, "dependencies": { "@iden3/bigarray": "0.0.2", "@iden3/binfileutils": "0.0.11", @@ -6507,6 +6690,7 @@ "version": "0.2.60", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.60.tgz", "integrity": "sha512-T/9bnEL5xAZRDbQoEMf+pM9nrhK+C3JyZNmqiWub26EQorW7Jt+jR54gpqDhceA4Nj0YctPQwYnl8xa52/A26A==", + "dev": true, "dependencies": { "wasmbuilder": "0.0.16", "wasmcurves": "0.2.2", @@ -6562,15 +6746,16 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.1.tgz", + "integrity": "sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/rechoir": { @@ -6989,6 +7174,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7122,6 +7308,7 @@ "version": "0.7.4", "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.7.4.tgz", "integrity": "sha512-x4cOCR4YXSyBlLtfnUUwfbZrw8wFd/Y0lk83eexJzKwZB8ELdpH+10ts8YtDsm2/a3WK7c7p514bbE8NpqxW8w==", + "dev": true, "dependencies": { "@iden3/binfileutils": "0.0.12", "bfj": "^7.0.2", @@ -7142,6 +7329,7 @@ "version": "0.0.12", "resolved": "https://registry.npmjs.org/@iden3/binfileutils/-/binfileutils-0.0.12.tgz", "integrity": "sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ==", + "dev": true, "dependencies": { "fastfile": "0.0.20", "ffjavascript": "^0.3.0" @@ -7151,6 +7339,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.3.0.tgz", "integrity": "sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==", + "dev": true, "dependencies": { "wasmbuilder": "0.0.16", "wasmcurves": "0.2.2", @@ -7161,6 +7350,7 @@ "version": "0.0.48", "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.48.tgz", "integrity": "sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw==", + "dev": true, "dependencies": { "@iden3/bigarray": "0.0.2", "@iden3/binfileutils": "0.0.12", @@ -7199,9 +7389,9 @@ } }, "node_modules/solidity-coverage": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.12.tgz", - "integrity": "sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==", + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.13.tgz", + "integrity": "sha512-RiBoI+kF94V3Rv0+iwOj3HQVSqNzA9qm/qDP1ZDXK5IX0Cvho1qiz8hAXTsAo6KOIUeP73jfscq0KlLqVxzGWA==", "dev": true, "peer": true, "dependencies": { @@ -7369,6 +7559,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", + "dev": true, "optional": true, "dependencies": { "amdefine": ">=0.0.4" @@ -7438,6 +7629,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dev": true, "dependencies": { "escodegen": "^1.8.1" } @@ -7530,6 +7722,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -7713,6 +7906,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, "dependencies": { "tmp": "^0.2.0" } @@ -7721,6 +7915,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, "engines": { "node": ">=14.14" } @@ -7759,7 +7954,8 @@ "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true }, "node_modules/ts-command-line-args": { "version": "2.5.1", @@ -7879,6 +8075,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, "dependencies": { "prelude-ls": "~1.1.2" }, @@ -7890,6 +8087,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, "engines": { "node": ">=4" } @@ -8018,9 +8216,9 @@ "peer": true }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8040,9 +8238,9 @@ } }, "node_modules/uglify-js": { - "version": "3.19.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.2.tgz", - "integrity": "sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "optional": true, "peer": true, @@ -8056,7 +8254,8 @@ "node_modules/underscore": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", - "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", + "dev": true }, "node_modules/undici": { "version": "5.28.4", @@ -8120,6 +8319,7 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8156,12 +8356,14 @@ "node_modules/wasmbuilder": { "version": "0.0.16", "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz", - "integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==" + "integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==", + "dev": true }, "node_modules/wasmcurves": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/wasmcurves/-/wasmcurves-0.2.2.tgz", "integrity": "sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==", + "dev": true, "dependencies": { "wasmbuilder": "0.0.16" } @@ -8178,7 +8380,8 @@ "node_modules/web-worker": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", - "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==", + "dev": true }, "node_modules/web3-utils": { "version": "1.10.4", @@ -8275,6 +8478,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -8305,6 +8509,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -8466,6 +8671,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index 9efdb42..9798b81 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,12 @@ "version": "0.1.0", "description": "Verifying biometric passports with zero knowledge proofs (SNARKs)", "scripts": { - "test": "./node_modules/.bin/mocha -p 'test/*.js'", + "test": "npx hardhat test", "compile": "npm run zkit-make && npm run zkit-verifiers && npm run solidity-compile", "solidity-compile": "npx hardhat compile --force", - "zkit-make": "npx hardhat zkit:make", - "zkit-compile": "npx hardhat zkit:compile", - "zkit-verifiers": "npx hardhat zkit:verifiers" + "zkit-make": "npx hardhat zkit make", + "zkit-compile": "npx hardhat zkit compile", + "zkit-verifiers": "npx hardhat zkit verifiers" }, "repository": { "type": "git", @@ -27,35 +27,36 @@ }, "homepage": "https://github.com/rarimo/passport-zk-circuits#readme", "dependencies": { - "chai": "^4.3.6", - "circomlib": "^2.0.5", - "ffjavascript": "^0.2.60", - "fnv-plus": "^1.3.1", - "r1csfile": "^0.0.47", - "snarkjs": "^0.7.0", - "tmp-promise": "^3.0.3", - "util": "^0.12.5" + "circomlib": "^2.0.5" }, "devDependencies": { "@iden3/js-crypto": "^1.0.3", "@nomicfoundation/hardhat-toolbox": "^5.0.0", - "@solarity/hardhat-zkit": "^0.3.2", + "@solarity/chai-zkit": "^0.2.5", + "@solarity/hardhat-zkit": "^0.4.2", "@typechain/ethers-v6": "^0.5.1", "@types/chai": "^4.3.14", "@types/mocha": "^10.0.6", "@types/node": "^18.16.0", "@types/snarkjs": "^0.7.8", + "chai": "^4.3.6", "circomlibjs": "^0.1.7", "dotenv": "^16.4.5", "ethers": "^6.11.1", + "ffjavascript": "^0.2.60", + "fnv-plus": "^1.3.1", "hardhat": "^2.20.1", "logplease": "^1.2.15", "mocha": "^10.3.0", "prettier": "^3.2.5", "prettier-plugin-solidity": "^1.3.1", + "r1csfile": "^0.0.47", + "snarkjs": "^0.7.0", + "tmp-promise": "^3.0.3", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typechain": "^8.3.2", - "typescript": "^5.4.3" + "typescript": "^5.4.3", + "util": "^0.12.5" } } diff --git a/tests/c/tester.js b/test/c/tester.js similarity index 100% rename from tests/c/tester.js rename to test/c/tester.js diff --git a/tests/index.js b/test/index.js similarity index 100% rename from tests/index.js rename to test/index.js diff --git a/tests/tests/automatisationTest.js b/test/tests/automatisationTest.js similarity index 97% rename from tests/tests/automatisationTest.js rename to test/tests/automatisationTest.js index 4c0360f..8bd2ec3 100644 --- a/tests/tests/automatisationTest.js +++ b/test/tests/automatisationTest.js @@ -16,7 +16,7 @@ function generateFilesForAll(filenames, done) { let pending = filenames.length; filenames.forEach((filename) => { console.log("executing for", filename); - exec(`python3 tests/tests/generate_files.py ${filename}`, (error, stdout, stderr) => { + exec(`python3 test/tests/generate_files.py ${filename}`, (error, stdout, stderr) => { if (error) { console.error(`Error executing script: ${error.message}`); return done(error); diff --git a/tests/tests/circuits/identityManagement/main_alimpolos.circom b/test/tests/circuits/identityManagement/main_alimpolos.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_alimpolos.circom rename to test/tests/circuits/identityManagement/main_alimpolos.circom diff --git a/tests/tests/circuits/identityManagement/main_amanda.circom b/test/tests/circuits/identityManagement/main_amanda.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_amanda.circom rename to test/tests/circuits/identityManagement/main_amanda.circom diff --git a/tests/tests/circuits/identityManagement/main_ashimine.circom b/test/tests/circuits/identityManagement/main_ashimine.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_ashimine.circom rename to test/tests/circuits/identityManagement/main_ashimine.circom diff --git a/tests/tests/circuits/identityManagement/main_bustos.circom b/test/tests/circuits/identityManagement/main_bustos.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_bustos.circom rename to test/tests/circuits/identityManagement/main_bustos.circom diff --git a/tests/tests/circuits/identityManagement/main_francis.circom b/test/tests/circuits/identityManagement/main_francis.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_francis.circom rename to test/tests/circuits/identityManagement/main_francis.circom diff --git a/tests/tests/circuits/identityManagement/main_goncharenko.circom b/test/tests/circuits/identityManagement/main_goncharenko.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_goncharenko.circom rename to test/tests/circuits/identityManagement/main_goncharenko.circom diff --git a/tests/tests/circuits/identityManagement/main_ishchuk.circom b/test/tests/circuits/identityManagement/main_ishchuk.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_ishchuk.circom rename to test/tests/circuits/identityManagement/main_ishchuk.circom diff --git a/tests/tests/circuits/identityManagement/main_khrapach.circom b/test/tests/circuits/identityManagement/main_khrapach.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_khrapach.circom rename to test/tests/circuits/identityManagement/main_khrapach.circom diff --git a/tests/tests/circuits/identityManagement/main_masarate.circom b/test/tests/circuits/identityManagement/main_masarate.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_masarate.circom rename to test/tests/circuits/identityManagement/main_masarate.circom diff --git a/tests/tests/circuits/identityManagement/main_ruiz.circom b/test/tests/circuits/identityManagement/main_ruiz.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_ruiz.circom rename to test/tests/circuits/identityManagement/main_ruiz.circom diff --git a/tests/tests/circuits/identityManagement/main_stenum.circom b/test/tests/circuits/identityManagement/main_stenum.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_stenum.circom rename to test/tests/circuits/identityManagement/main_stenum.circom diff --git a/tests/tests/circuits/identityManagement/main_tuffin.circom b/test/tests/circuits/identityManagement/main_tuffin.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_tuffin.circom rename to test/tests/circuits/identityManagement/main_tuffin.circom diff --git a/tests/tests/circuits/identityManagement/main_unguryan.circom b/test/tests/circuits/identityManagement/main_unguryan.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_unguryan.circom rename to test/tests/circuits/identityManagement/main_unguryan.circom diff --git a/tests/tests/circuits/identityManagement/main_wenxing.circom b/test/tests/circuits/identityManagement/main_wenxing.circom similarity index 100% rename from tests/tests/circuits/identityManagement/main_wenxing.circom rename to test/tests/circuits/identityManagement/main_wenxing.circom diff --git a/tests/tests/circuits/passportVerification/main_alimpolos.circom b/test/tests/circuits/passportVerification/main_alimpolos.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_alimpolos.circom rename to test/tests/circuits/passportVerification/main_alimpolos.circom diff --git a/tests/tests/circuits/passportVerification/main_amanda.circom b/test/tests/circuits/passportVerification/main_amanda.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_amanda.circom rename to test/tests/circuits/passportVerification/main_amanda.circom diff --git a/tests/tests/circuits/passportVerification/main_ashimine.circom b/test/tests/circuits/passportVerification/main_ashimine.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_ashimine.circom rename to test/tests/circuits/passportVerification/main_ashimine.circom diff --git a/tests/tests/circuits/passportVerification/main_bustos.circom b/test/tests/circuits/passportVerification/main_bustos.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_bustos.circom rename to test/tests/circuits/passportVerification/main_bustos.circom diff --git a/tests/tests/circuits/passportVerification/main_francis.circom b/test/tests/circuits/passportVerification/main_francis.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_francis.circom rename to test/tests/circuits/passportVerification/main_francis.circom diff --git a/tests/tests/circuits/passportVerification/main_goncharenko.circom b/test/tests/circuits/passportVerification/main_goncharenko.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_goncharenko.circom rename to test/tests/circuits/passportVerification/main_goncharenko.circom diff --git a/tests/tests/circuits/passportVerification/main_ishchuk.circom b/test/tests/circuits/passportVerification/main_ishchuk.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_ishchuk.circom rename to test/tests/circuits/passportVerification/main_ishchuk.circom diff --git a/tests/tests/circuits/passportVerification/main_khrapach.circom b/test/tests/circuits/passportVerification/main_khrapach.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_khrapach.circom rename to test/tests/circuits/passportVerification/main_khrapach.circom diff --git a/tests/tests/circuits/passportVerification/main_masarate.circom b/test/tests/circuits/passportVerification/main_masarate.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_masarate.circom rename to test/tests/circuits/passportVerification/main_masarate.circom diff --git a/tests/tests/circuits/passportVerification/main_ruiz.circom b/test/tests/circuits/passportVerification/main_ruiz.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_ruiz.circom rename to test/tests/circuits/passportVerification/main_ruiz.circom diff --git a/tests/tests/circuits/passportVerification/main_stenum.circom b/test/tests/circuits/passportVerification/main_stenum.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_stenum.circom rename to test/tests/circuits/passportVerification/main_stenum.circom diff --git a/tests/tests/circuits/passportVerification/main_tuffin.circom b/test/tests/circuits/passportVerification/main_tuffin.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_tuffin.circom rename to test/tests/circuits/passportVerification/main_tuffin.circom diff --git a/tests/tests/circuits/passportVerification/main_unguryan.circom b/test/tests/circuits/passportVerification/main_unguryan.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_unguryan.circom rename to test/tests/circuits/passportVerification/main_unguryan.circom diff --git a/tests/tests/circuits/passportVerification/main_wenxing.circom b/test/tests/circuits/passportVerification/main_wenxing.circom similarity index 100% rename from tests/tests/circuits/passportVerification/main_wenxing.circom rename to test/tests/circuits/passportVerification/main_wenxing.circom diff --git a/tests/tests/ecdsaTest.js b/test/tests/ecdsaTest.js similarity index 100% rename from tests/tests/ecdsaTest.js rename to test/tests/ecdsaTest.js diff --git a/tests/tests/generate_files.py b/test/tests/generate_files.py similarity index 96% rename from tests/tests/generate_files.py rename to test/tests/generate_files.py index 6872bdf..6a4bbc3 100644 --- a/tests/tests/generate_files.py +++ b/test/tests/generate_files.py @@ -398,7 +398,7 @@ def decode_base64_and_print(file_path): short_file_path = file_path.split(".json")[0].split("/")[-1] # print(short_file_path) - padded_output_file = "./tests/tests/inputs/generated/input_{short_file_path}.dev.json".format(short_file_path = short_file_path) + padded_output_file = "./test/tests/inputs/generated/input_{short_file_path}.dev.json".format(short_file_path = short_file_path) with open(padded_output_file, 'w') as f_out: json.dump({ @@ -410,7 +410,7 @@ def decode_base64_and_print(file_path): "signature": signature_arr }, f_out, indent=4) - padded_output_file2 = "./tests/tests/inputs/generated/input_{short_file_path}_2.dev.json".format(short_file_path = short_file_path) + padded_output_file2 = "./test/tests/inputs/generated/input_{short_file_path}_2.dev.json".format(short_file_path = short_file_path) sk_iden = int(sha256_hash_from_hex(ec)[:62], 16) @@ -463,7 +463,7 @@ def decode_base64_and_print(file_path): circom_code += ");" - with open('./tests/tests/circuits/identityManagement/main_{short_file_path}.circom'.format(short_file_path = short_file_path), 'w') as file: + with open('./test/tests/circuits/identityManagement/main_{short_file_path}.circom'.format(short_file_path = short_file_path), 'w') as file: file.write(circom_code) circom_code = "pragma circom 2.1.6;\n\n" @@ -493,7 +493,7 @@ def decode_base64_and_print(file_path): sa_arr = sa_arr ) circom_code += ");" - with open('./tests/tests/circuits/passportVerification/main_{short_file_path}.circom'.format(short_file_path = short_file_path), 'w') as file: + with open('./test/tests/circuits/passportVerification/main_{short_file_path}.circom'.format(short_file_path = short_file_path), 'w') as file: file.write(circom_code) @@ -506,4 +506,4 @@ def decode_base64_and_print(file_path): parser.add_argument('passport_file_path', type=str, help='Path to the passport.json file') args = parser.parse_args() - decode_base64_and_print(args.passport_file_path) \ No newline at end of file + decode_base64_and_print(args.passport_file_path) diff --git a/tests/tests/hashTester.js b/test/tests/hashTester.js similarity index 100% rename from tests/tests/hashTester.js rename to test/tests/hashTester.js diff --git a/tests/tests/inputs/credValidExceedsPassportInput.json b/test/tests/inputs/credValidExceedsPassportInput.json similarity index 100% rename from tests/tests/inputs/credValidExceedsPassportInput.json rename to test/tests/inputs/credValidExceedsPassportInput.json diff --git a/tests/tests/inputs/isNotAdultInput.json b/test/tests/inputs/isNotAdultInput.json similarity index 100% rename from tests/tests/inputs/isNotAdultInput.json rename to test/tests/inputs/isNotAdultInput.json diff --git a/tests/tests/inputs/passportExpiredInput.json b/test/tests/inputs/passportExpiredInput.json similarity index 100% rename from tests/tests/inputs/passportExpiredInput.json rename to test/tests/inputs/passportExpiredInput.json diff --git a/tests/tests/inputs/validInput.json b/test/tests/inputs/validInput.json similarity index 100% rename from tests/tests/inputs/validInput.json rename to test/tests/inputs/validInput.json diff --git a/tests/tests/passportTests.js b/test/tests/passportTests.js similarity index 98% rename from tests/tests/passportTests.js rename to test/tests/passportTests.js index 07d24c6..3506001 100644 --- a/tests/tests/passportTests.js +++ b/test/tests/passportTests.js @@ -1,6 +1,6 @@ const chai = require("chai"); const path = require("path"); -const wasm_tester = require("./tester"); +const wasm_tester = require("../index").wasm; const F1Field = require("ffjavascript").F1Field; const Scalar = require("ffjavascript").Scalar; diff --git a/tests/tests/passportVerificationTester.js b/test/tests/passportVerificationTester.js similarity index 100% rename from tests/tests/passportVerificationTester.js rename to test/tests/passportVerificationTester.js diff --git a/tests/tests/pocTests.js b/test/tests/pocTests.js similarity index 97% rename from tests/tests/pocTests.js rename to test/tests/pocTests.js index 9cf1242..07705af 100644 --- a/tests/tests/pocTests.js +++ b/test/tests/pocTests.js @@ -1,10 +1,10 @@ const path = require("path"); -const wasm_tester = require("./tester"); +const wasm_tester = require("../index").wasm; const Scalar = require("ffjavascript").Scalar; exports.p = Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617" ); -describe("POC tests", function () { +describe("POC test", function () { this.timeout(100000); it("POC for invalid days and months", async function () { const circuit = await wasm_tester( @@ -45,4 +45,4 @@ const w = await circuit.calculateWitness({ }); await circuit.checkConstraints(w); }) -}) \ No newline at end of file +}) diff --git a/tests/tests/pointInteractionsTest.js b/test/tests/pointInteractionsTest.js similarity index 100% rename from tests/tests/pointInteractionsTest.js rename to test/tests/pointInteractionsTest.js diff --git a/tests/tests/poseidon_constants.py b/test/tests/poseidon_constants.py similarity index 100% rename from tests/tests/poseidon_constants.py rename to test/tests/poseidon_constants.py diff --git a/tests/tests/python_poseidon.py b/test/tests/python_poseidon.py similarity index 100% rename from tests/tests/python_poseidon.py rename to test/tests/python_poseidon.py diff --git a/tests/tests/queryIdentityTests.js b/test/tests/queryIdentityTests.js similarity index 98% rename from tests/tests/queryIdentityTests.js rename to test/tests/queryIdentityTests.js index 32cf167..09199e0 100644 --- a/tests/tests/queryIdentityTests.js +++ b/test/tests/queryIdentityTests.js @@ -1,6 +1,6 @@ const chai = require("chai"); const path = require("path"); -const wasm_tester = require("./tester"); +const wasm_tester = require("../index").wasm; const F1Field = require("ffjavascript").F1Field; const Scalar = require("ffjavascript").Scalar; diff --git a/tests/tests/registerIdentityTest.js b/test/tests/registerIdentityTest.js similarity index 100% rename from tests/tests/registerIdentityTest.js rename to test/tests/registerIdentityTest.js diff --git a/tests/tests/registerIdentityTests.js b/test/tests/registerIdentityTests.js similarity index 98% rename from tests/tests/registerIdentityTests.js rename to test/tests/registerIdentityTests.js index 14d4078..0c60b3f 100644 --- a/tests/tests/registerIdentityTests.js +++ b/test/tests/registerIdentityTests.js @@ -1,6 +1,6 @@ const chai = require("chai"); const path = require("path"); -const wasm_tester = require("./tester"); +const wasm_tester = require("../index").wasm; const F1Field = require("ffjavascript").F1Field; const Scalar = require("ffjavascript").Scalar; diff --git a/tests/tests/rsaPssTest.js b/test/tests/rsaPssTest.js similarity index 100% rename from tests/tests/rsaPssTest.js rename to test/tests/rsaPssTest.js diff --git a/tests/tests/rsaTest.js b/test/tests/rsaTest.js similarity index 100% rename from tests/tests/rsaTest.js rename to test/tests/rsaTest.js diff --git a/test/vote.test.ts b/test/vote.test.ts deleted file mode 100644 index 3083f09..0000000 --- a/test/vote.test.ts +++ /dev/null @@ -1,35 +0,0 @@ -// import { expect } from "chai"; -// import { ethers, zkit } from "hardhat"; - -// import { VoteVerifier } from "@ethers-v6"; -// import { Vote } from "@zkit"; - -// describe.only("Commitment", () => { -// let voteVerifier: VoteVerifier; -// let voteCircuit: Vote; - -// before("setup", async () => { -// console.log("HERE"); -// voteCircuit = await zkit.getCircuit("Vote"); -// const VoteVerifier = await ethers.getContractFactory("VoteVerifier"); - -// voteVerifier = await VoteVerifier.deploy() as VoteVerifier; -// }); - -// it("test", async () => { -// const proof = await voteCircuit.generateProof({ -// root : "20044536444086118591887109164436364136320990398424186763077840515405091245125", -// nullifierHash: "19014214495641488759237505126948346942972912379615652741039992445865937985820", -// nullifier: "0", -// vote: "0", -// secret: "0", -// pathElements: ["19014214495641488759237505126948346942972912379615652741039992445865937985820", "10447686833432518214645507207530993719569269870494442919228205482093666444588", "2186774891605521484511138647132707263205739024356090574223746683689524510919", "6624528458765032300068640025753348171674863396263322163275160878496476761795", "17621094343163687115133447910975434564869602694443155644084608475290066932181", "21545791430054675679721663567345713395464273214026699272957697111075114407152", "792508374812064496349952600148548816899123600522533230070209098983274365937", "19099089739310512670052334354801295180468996808740953306205199022348496584760", "1343295825314773980905176364810862207662071643483131058898955641727916222615", "16899046943457659513232595988635409932880678645111808262227296196974010078534", "4978389689432283653287395535267662892150042177938506928108984372770188067714", "9761894086225021818188968785206790816885919715075386907160173350566467311501", "13558719211472510351154804954267502807430687253403060703311957777648054137517", "15093063772197360439942670764347374738539884999170539844715519374005555450641", "8536725160056600348017064378079921187897118401199171112659606555966521727181", "17731960725993409205647629535433695139708451502526773527161126281730851312303", "12378336118662422402312038713508977861617293534645772054906298430730335052258", "15746370922467144378022955960137552273962623515478055069197781668972427980569", "12833304663529859056360652781553170470307618587436982477441419650866727735640", "19675769322130325405595465035336399585577759990829087793049230689392015057069"], -// pathIndices: ["1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"] -// }); - -// const data = await voteCircuit.generateCalldata(proof); - -// console.log(await voteCircuit.verifyProof(proof)); -// console.log(await voteVerifier.verifyProof(...data)); -// }); -// }); \ No newline at end of file diff --git a/tests/wasm/tester.js b/test/wasm/tester.js similarity index 98% rename from tests/wasm/tester.js rename to test/wasm/tester.js index 27a6159..f317d8f 100644 --- a/tests/wasm/tester.js +++ b/test/wasm/tester.js @@ -12,9 +12,7 @@ const exec = util.promisify(require("child_process").exec); const readR1cs = require("r1csfile").readR1cs; const ZqField = require("ffjavascript").ZqField; -module.exports = wasm_tester; - -async function wasm_tester(circomInput, _options) { +module.exports = async function wasm_tester(circomInput, _options) { assert(await compiler_above_version("2.0.0"), "Wrong compiler version. Must be at least 2.0.0"); diff --git a/tests/wasm/utils.js b/test/wasm/utils.js similarity index 100% rename from tests/wasm/utils.js rename to test/wasm/utils.js diff --git a/tests/wasm/witness_calculator.js b/test/wasm/witness_calculator.js similarity index 100% rename from tests/wasm/witness_calculator.js rename to test/wasm/witness_calculator.js