diff --git a/.github/workflows/pod-tests.yml b/.github/workflows/pod-tests.yml new file mode 100644 index 0000000..5ec52aa --- /dev/null +++ b/.github/workflows/pod-tests.yml @@ -0,0 +1,37 @@ +name: POD Tests + +on: + pull_request: + branches: + - develop + workflow_dispatch: + +jobs: + pod-tests: + runs-on: ubuntu-latest + + steps: + - name: Get Repo + uses: actions/checkout@v4 + + - name: Install Node.JS + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Install pnpm + run: npm install -g pnpm + + - name: Navigate to the pods directory + run: | + cd pods + + - name: Install packages + run: | + pnpm install --no-frozen-lockfile + working-directory: pods + + - name: Run tests + run: | + pnpm test + working-directory: pods \ No newline at end of file diff --git a/pods/package.json b/pods/package.json index dabe020..452cb6e 100644 --- a/pods/package.json +++ b/pods/package.json @@ -5,17 +5,19 @@ "description": "Example of how to create and verify PODs and ZK Proofs", "main": "index.js", "scripts": { - "create": "pnpm tsx create.tsx", - "verify": "pnpm tsx verify.tsx", - "zkCreate": "pnpm tsx zkCreate.tsx", - "zkVerify": "pnpm tsx zkVerify.tsx", - "keyGen": "node privateKeyGen.js" + "create": "pnpm tsx create.ts", + "verify": "pnpm tsx verify.ts", + "zkCreate": "pnpm tsx zkCreate.ts", + "zkVerify": "pnpm tsx zkVerify.ts", + "keyGen": "node privateKeyGen.js", + "test": "jest" }, "author": "CCP Red Dragon", "dependencies": { "@pcd/gpc": "^0.4.0", "@pcd/pod": "^0.5.0", "tsx": "^4.19.3", - "@pcd/proto-pod-gpc-artifacts": "0.13.0" + "@pcd/proto-pod-gpc-artifacts": "0.13.0", + "jest": "30.0.5" } } \ No newline at end of file diff --git a/pods/pnpm-lock.yaml b/pods/pnpm-lock.yaml deleted file mode 100644 index 09d0f94..0000000 --- a/pods/pnpm-lock.yaml +++ /dev/null @@ -1,1151 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@pcd/gpc': - specifier: ^0.4.0 - version: 0.4.0 - '@pcd/pod': - specifier: ^0.5.0 - version: 0.5.0 - '@pcd/proto-pod-gpc-artifacts': - specifier: 0.13.0 - version: 0.13.0 - tsx: - specifier: ^4.19.3 - version: 4.19.3 - -packages: - - '@adraffy/ens-normalize@1.10.1': - resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} - - '@esbuild/aix-ppc64@0.25.2': - resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.2': - resolution: {integrity: sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.2': - resolution: {integrity: sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.2': - resolution: {integrity: sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.2': - resolution: {integrity: sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.2': - resolution: {integrity: sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.2': - resolution: {integrity: sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.2': - resolution: {integrity: sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.2': - resolution: {integrity: sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.2': - resolution: {integrity: sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.2': - resolution: {integrity: sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.2': - resolution: {integrity: sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.2': - resolution: {integrity: sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.2': - resolution: {integrity: sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.2': - resolution: {integrity: sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.2': - resolution: {integrity: sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.2': - resolution: {integrity: sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.2': - resolution: {integrity: sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.2': - resolution: {integrity: sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.2': - resolution: {integrity: sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.2': - resolution: {integrity: sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.25.2': - resolution: {integrity: sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.2': - resolution: {integrity: sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.2': - resolution: {integrity: sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.2': - resolution: {integrity: sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@ethersproject/bignumber@5.8.0': - resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} - - '@ethersproject/bytes@5.8.0': - resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} - - '@ethersproject/constants@5.8.0': - resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} - - '@ethersproject/keccak256@5.8.0': - resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} - - '@ethersproject/logger@5.8.0': - resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} - - '@ethersproject/random@5.8.0': - resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} - - '@ethersproject/strings@5.8.0': - resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} - - '@iden3/bigarray@0.0.2': - resolution: {integrity: sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==} - - '@iden3/binfileutils@0.0.12': - resolution: {integrity: sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ==} - - '@noble/curves@1.2.0': - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} - - '@noble/hashes@1.3.2': - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - - '@pcd/gpc@0.4.0': - resolution: {integrity: sha512-VE95hTf/Fi/j0Lz6s15cULnQAqaeHaMgRn8wR8xmxA99Bv9KEPD7KZkkrV20WtIf9/Rc+YuFIYEaBFakl4D8Ng==} - - '@pcd/gpcircuits@0.5.0': - resolution: {integrity: sha512-+liYDmxPBEX8SGGPB95/oJliT3Sj+WKeXOldA+7AulqtDEuF+u266NcGOkLqOA0bRPFtzAYO2fQJTvWaK+ws+A==} - - '@pcd/pod@0.5.0': - resolution: {integrity: sha512-Zm8G6BXXjFtSBooYi4cHWAe44US3NjdsPtKmv1Zpcl0EejxYG0wU6GrUpnhSwJfjEpGm35Wes9BUT7wHThGnGg==} - - '@pcd/proto-pod-gpc-artifacts@0.13.0': - resolution: {integrity: sha512-SFKV8gmFCyZ6WIOcJPXCdx4I1gNavIw+5u7TFU8L6/DqtUPWZ1/SubyAChb7aTetfwNgJTyid/VL9fEkJYSThA==} - - '@pcd/semaphore-identity-v3-wrapper@0.1.0': - resolution: {integrity: sha512-NlLT6Pu+ua0agmPO2bulQiF5vaNv1XbGwSyrTEH/eONq1I0LL5Yd2qdPpZbUnnCUE+Wa6yi4jUqB6i6vh8kv8g==} - - '@pcd/util@0.9.0': - resolution: {integrity: sha512-PI9XR9DY7Okn8AJyOfFPhSihewh5VVTyFf5Hm+qaH09t0MlV8ZbMAo9hbiyB5NtHJo7fEEM5BHTRCPpMeVEJcA==} - - '@semaphore-protocol/core@4.9.2': - resolution: {integrity: sha512-Dc0ZVCcWuCiCA2Y6GXmsRVjpA+sA06dUiGlx+e6CY/8B6xQtz8TQm10DNWayqe0YkL9Bld/JWyN3rdIoZf3uEA==} - - '@semaphore-protocol/group@4.9.2': - resolution: {integrity: sha512-NkCYtl3BcaNaGy1Oc5LvDScimDPu47bebqYH9cm+21nLKOsCFNmFcG70if2TY2e1Q/eyvB8tnK01a39nHs4pLw==} - - '@semaphore-protocol/identity@3.15.2': - resolution: {integrity: sha512-MJ1MO5QL+oX+OFK2rHAPjQ6+kKgGxCsVJLNdn1soRawxbrxH9A6tV9AsVHV0DN4saegQ4qaOOy1XO1PAN6PiQA==} - - '@semaphore-protocol/identity@4.9.2': - resolution: {integrity: sha512-kHxcAfOyJ5yfo5Y82JCsIc+UD1+nsYg0NA7tRLg/FqYYnkLd/YZ1BkvRGRccZOKUW7S9VQERN7CVqBzXprxjTg==} - - '@semaphore-protocol/proof@4.9.2': - resolution: {integrity: sha512-bf8xg12R3mWsywIarEFOFTP/atmrEGPJIwneRliC3dFKT7kzdrZvta2czJGejNURp3PIVIKNRONPkp+JyThNAw==} - peerDependencies: - '@semaphore-protocol/group': 4.9.2 - '@semaphore-protocol/identity': 4.9.2 - - '@semaphore-protocol/utils@4.9.2': - resolution: {integrity: sha512-cSDwsk5ADLUaQv++3dX+GhCPm3dJB4/gTUK+Rhv6mPc9JEPk2xrmmDDB7DM+/wOAIK7wfo1IksMLwEK+/Du95Q==} - - '@types/node@22.7.5': - resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} - - '@zk-kit/artifacts@1.8.0': - resolution: {integrity: sha512-G2rQ1BxYt9CuVyU4Egc4ceSLLWx9BRrtFGZWS0RWwHhAMfSV/Fq9Qz6OX02leFzTbi7Tr3bTP6DgDSqr28OQnw==} - - '@zk-kit/baby-jubjub@1.0.3': - resolution: {integrity: sha512-Wl+QfV6XGOMk1yU2JTqHXeKWfJVXp83is0+dtqfj9wx4wsAPpb+qzYvwAxW5PBx5/Nu71Bh7jp/5vM+6QgHSwA==} - - '@zk-kit/eddsa-poseidon@1.0.4': - resolution: {integrity: sha512-w0HrF5F+Kh+77+VK/p9qzB7wvitiZMAoWnqrmzPUM+MWlaNp0ipmtuO8KTLxnj8ACjt98GAK4voxl7XeWjC4XQ==} - - '@zk-kit/lean-imt@2.2.3': - resolution: {integrity: sha512-T6NXLzMuwFjp+hg6WJZqzJ2qyyTmbS9JmxiWW/lmp+VxxJLAO9byAvqd5p/7616AXdHyTbwku0tdX0JDq9Pkng==} - - '@zk-kit/utils@1.2.1': - resolution: {integrity: sha512-H2nTsyWdicVOyvqC5AjgU7tsTgmR6PDrruFJNmlmdhKp7RxEia/E1B1swMZjaasYa2QMp4Zc6oB7cWchty7B2Q==} - - '@zk-kit/utils@1.3.0': - resolution: {integrity: sha512-Gqsq5KLDf2WPuZSsNc2KZy25XeK5d5UV9hwLaPEM5wq+GD2qCi1ZBFzNs0OptiJ9GRGtP2J/xptrszWri+pRqQ==} - - '@zk-kit/utils@1.4.1': - resolution: {integrity: sha512-IoXzy3ElfkvRfC/s6uk3eFQO8uxkCdAOVxKlJlaEjM7pgckX5AK46Q+7n5yMQD/v/o6OL0mMtet065o5EpUocA==} - - aes-js@4.0.0-beta.5: - resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bfj@7.1.0: - resolution: {integrity: sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==} - engines: {node: '>= 8.0.0'} - - bignumber.js@9.2.1: - resolution: {integrity: sha512-+NzaKgOUvInq9TIUZ1+DRspzf/HApkCwD4btfuasFTdrfnOxqx853TgDpMolp+uv4RpRp7bPcEU2zKr9+fRmyw==} - - blake2b-wasm@2.4.0: - resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} - - bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-types@11.2.3: - resolution: {integrity: sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==} - - circom_runtime@0.1.25: - resolution: {integrity: sha512-xBGsBFF5Uv6AKvbpgExYqpHfmfawH2HKe+LyjfKSRevqEV8u63i9KGHVIILsbJNW+0c5bm/66f0PUYQ7qZSkJA==} - hasBin: true - - circom_runtime@0.1.28: - resolution: {integrity: sha512-ACagpQ7zBRLKDl5xRZ4KpmYIcZDUjOiNRuxvXLqhnnlLSVY1Dbvh73TI853nqoR0oEbihtWmMSjgc5f+pXf/jQ==} - hasBin: true - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - email-validator@2.0.4: - resolution: {integrity: sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==} - engines: {node: '>4.0'} - - esbuild@0.25.2: - resolution: {integrity: sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==} - engines: {node: '>=18'} - hasBin: true - - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - - esprima@1.2.2: - resolution: {integrity: sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==} - engines: {node: '>=0.4.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - ethers@6.13.4: - resolution: {integrity: sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==} - engines: {node: '>=14.0.0'} - - ethers@6.13.5: - resolution: {integrity: sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==} - engines: {node: '>=14.0.0'} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastfile@0.0.20: - resolution: {integrity: sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA==} - - ffjavascript@0.3.0: - resolution: {integrity: sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ==} - - ffjavascript@0.3.1: - resolution: {integrity: sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - hoopy@0.1.4: - resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} - engines: {node: '>= 6.0.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - js-sha256@0.10.1: - resolution: {integrity: sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - js-sha512@0.8.0: - resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} - - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - - jsonpath@1.1.1: - resolution: {integrity: sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - logplease@1.2.15: - resolution: {integrity: sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - nanoassert@2.0.0: - resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - poseidon-lite@0.3.0: - resolution: {integrity: sha512-ilJj4MIve4uBEG7SrtPqUUNkvpJ/pLVbndxa0WvebcQqeIhe+h72JR4g0EvwchUzm9sOQDlOjiDNmRAgxNZl4A==} - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - r1csfile@0.0.48: - resolution: {integrity: sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw==} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - secure-random@1.1.2: - resolution: {integrity: sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ==} - - snarkjs@0.7.4: - resolution: {integrity: sha512-x4cOCR4YXSyBlLtfnUUwfbZrw8wFd/Y0lk83eexJzKwZB8ELdpH+10ts8YtDsm2/a3WK7c7p514bbE8NpqxW8w==} - hasBin: true - - snarkjs@0.7.5: - resolution: {integrity: sha512-h+3c4rXZKLhLuHk4LHydZCk/h5GcNvk5GjVKRRkHmfb6Ntf8gHOA9zea3g656iclRuhqQ3iKDWFgiD9ypLrKiA==} - hasBin: true - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - static-eval@2.0.2: - resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - tryer@1.0.1: - resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - underscore@1.12.1: - resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - valibot@0.42.1: - resolution: {integrity: sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - - wasmbuilder@0.0.16: - resolution: {integrity: sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA==} - - wasmcurves@0.2.2: - resolution: {integrity: sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==} - - web-worker@1.2.0: - resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - -snapshots: - - '@adraffy/ens-normalize@1.10.1': {} - - '@esbuild/aix-ppc64@0.25.2': - optional: true - - '@esbuild/android-arm64@0.25.2': - optional: true - - '@esbuild/android-arm@0.25.2': - optional: true - - '@esbuild/android-x64@0.25.2': - optional: true - - '@esbuild/darwin-arm64@0.25.2': - optional: true - - '@esbuild/darwin-x64@0.25.2': - optional: true - - '@esbuild/freebsd-arm64@0.25.2': - optional: true - - '@esbuild/freebsd-x64@0.25.2': - optional: true - - '@esbuild/linux-arm64@0.25.2': - optional: true - - '@esbuild/linux-arm@0.25.2': - optional: true - - '@esbuild/linux-ia32@0.25.2': - optional: true - - '@esbuild/linux-loong64@0.25.2': - optional: true - - '@esbuild/linux-mips64el@0.25.2': - optional: true - - '@esbuild/linux-ppc64@0.25.2': - optional: true - - '@esbuild/linux-riscv64@0.25.2': - optional: true - - '@esbuild/linux-s390x@0.25.2': - optional: true - - '@esbuild/linux-x64@0.25.2': - optional: true - - '@esbuild/netbsd-arm64@0.25.2': - optional: true - - '@esbuild/netbsd-x64@0.25.2': - optional: true - - '@esbuild/openbsd-arm64@0.25.2': - optional: true - - '@esbuild/openbsd-x64@0.25.2': - optional: true - - '@esbuild/sunos-x64@0.25.2': - optional: true - - '@esbuild/win32-arm64@0.25.2': - optional: true - - '@esbuild/win32-ia32@0.25.2': - optional: true - - '@esbuild/win32-x64@0.25.2': - optional: true - - '@ethersproject/bignumber@5.8.0': - dependencies: - '@ethersproject/bytes': 5.8.0 - '@ethersproject/logger': 5.8.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.8.0': - dependencies: - '@ethersproject/logger': 5.8.0 - - '@ethersproject/constants@5.8.0': - dependencies: - '@ethersproject/bignumber': 5.8.0 - - '@ethersproject/keccak256@5.8.0': - dependencies: - '@ethersproject/bytes': 5.8.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.8.0': {} - - '@ethersproject/random@5.8.0': - dependencies: - '@ethersproject/bytes': 5.8.0 - '@ethersproject/logger': 5.8.0 - - '@ethersproject/strings@5.8.0': - dependencies: - '@ethersproject/bytes': 5.8.0 - '@ethersproject/constants': 5.8.0 - '@ethersproject/logger': 5.8.0 - - '@iden3/bigarray@0.0.2': {} - - '@iden3/binfileutils@0.0.12': - dependencies: - fastfile: 0.0.20 - ffjavascript: 0.3.1 - - '@noble/curves@1.2.0': - dependencies: - '@noble/hashes': 1.3.2 - - '@noble/hashes@1.3.2': {} - - '@pcd/gpc@0.4.0': - dependencies: - '@pcd/gpcircuits': 0.5.0 - '@pcd/pod': 0.5.0 - '@pcd/semaphore-identity-v3-wrapper': 0.1.0 - '@pcd/util': 0.9.0 - '@semaphore-protocol/core': 4.9.2 - json-bigint: 1.0.0 - lodash: 4.17.21 - snarkjs: 0.7.5 - url-join: 4.0.1 - valibot: 0.42.1 - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - '@pcd/gpcircuits@0.5.0': - dependencies: - '@pcd/pod': 0.5.0 - fastfile: 0.0.20 - snarkjs: 0.7.5 - url-join: 4.0.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@pcd/pod@0.5.0': - dependencies: - '@pcd/util': 0.9.0 - '@zk-kit/eddsa-poseidon': 1.0.4 - '@zk-kit/lean-imt': 2.2.3 - '@zk-kit/utils': 1.4.1 - js-sha256: 0.10.1 - poseidon-lite: 0.3.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@pcd/proto-pod-gpc-artifacts@0.13.0': {} - - '@pcd/semaphore-identity-v3-wrapper@0.1.0': - dependencies: - '@semaphore-protocol/identity': 3.15.2 - - '@pcd/util@0.9.0': - dependencies: - buffer: 6.0.3 - email-validator: 2.0.4 - js-sha256: 0.10.1 - secure-random: 1.1.2 - uuid: 9.0.1 - - '@semaphore-protocol/core@4.9.2': - dependencies: - '@semaphore-protocol/group': 4.9.2 - '@semaphore-protocol/identity': 4.9.2 - '@semaphore-protocol/proof': 4.9.2(@semaphore-protocol/group@4.9.2)(@semaphore-protocol/identity@4.9.2) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@semaphore-protocol/group@4.9.2': - dependencies: - '@zk-kit/lean-imt': 2.2.3 - '@zk-kit/utils': 1.3.0 - poseidon-lite: 0.3.0 - - '@semaphore-protocol/identity@3.15.2': - dependencies: - '@ethersproject/bignumber': 5.8.0 - '@ethersproject/keccak256': 5.8.0 - '@ethersproject/random': 5.8.0 - '@ethersproject/strings': 5.8.0 - js-sha512: 0.8.0 - - '@semaphore-protocol/identity@4.9.2': - dependencies: - '@zk-kit/baby-jubjub': 1.0.3 - '@zk-kit/eddsa-poseidon': 1.0.4 - '@zk-kit/utils': 1.3.0 - poseidon-lite: 0.3.0 - - '@semaphore-protocol/proof@4.9.2(@semaphore-protocol/group@4.9.2)(@semaphore-protocol/identity@4.9.2)': - dependencies: - '@semaphore-protocol/group': 4.9.2 - '@semaphore-protocol/identity': 4.9.2 - '@semaphore-protocol/utils': 4.9.2 - '@zk-kit/artifacts': 1.8.0 - '@zk-kit/utils': 1.3.0 - ethers: 6.13.4 - snarkjs: 0.7.4 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@semaphore-protocol/utils@4.9.2': - dependencies: - ethers: 6.13.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@types/node@22.7.5': - dependencies: - undici-types: 6.19.8 - - '@zk-kit/artifacts@1.8.0': {} - - '@zk-kit/baby-jubjub@1.0.3': - dependencies: - '@zk-kit/utils': 1.2.1 - - '@zk-kit/eddsa-poseidon@1.0.4': - dependencies: - '@zk-kit/baby-jubjub': 1.0.3 - '@zk-kit/utils': 1.2.1 - buffer: 6.0.3 - poseidon-lite: 0.3.0 - - '@zk-kit/lean-imt@2.2.3': - dependencies: - '@zk-kit/utils': 1.3.0 - - '@zk-kit/utils@1.2.1': - dependencies: - buffer: 6.0.3 - - '@zk-kit/utils@1.3.0': - dependencies: - buffer: 6.0.3 - - '@zk-kit/utils@1.4.1': - dependencies: - buffer: 6.0.3 - ethers: 6.13.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - aes-js@4.0.0-beta.5: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - async@3.2.6: {} - - b4a@1.6.7: {} - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - bfj@7.1.0: - dependencies: - bluebird: 3.7.2 - check-types: 11.2.3 - hoopy: 0.1.4 - jsonpath: 1.1.1 - tryer: 1.0.1 - - bignumber.js@9.2.1: {} - - blake2b-wasm@2.4.0: - dependencies: - b4a: 1.6.7 - nanoassert: 2.0.0 - - bluebird@3.7.2: {} - - bn.js@5.2.1: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-types@11.2.3: {} - - circom_runtime@0.1.25: - dependencies: - ffjavascript: 0.3.0 - - circom_runtime@0.1.28: - dependencies: - ffjavascript: 0.3.1 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - concat-map@0.0.1: {} - - deep-is@0.1.4: {} - - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - email-validator@2.0.4: {} - - esbuild@0.25.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.2 - '@esbuild/android-arm': 0.25.2 - '@esbuild/android-arm64': 0.25.2 - '@esbuild/android-x64': 0.25.2 - '@esbuild/darwin-arm64': 0.25.2 - '@esbuild/darwin-x64': 0.25.2 - '@esbuild/freebsd-arm64': 0.25.2 - '@esbuild/freebsd-x64': 0.25.2 - '@esbuild/linux-arm': 0.25.2 - '@esbuild/linux-arm64': 0.25.2 - '@esbuild/linux-ia32': 0.25.2 - '@esbuild/linux-loong64': 0.25.2 - '@esbuild/linux-mips64el': 0.25.2 - '@esbuild/linux-ppc64': 0.25.2 - '@esbuild/linux-riscv64': 0.25.2 - '@esbuild/linux-s390x': 0.25.2 - '@esbuild/linux-x64': 0.25.2 - '@esbuild/netbsd-arm64': 0.25.2 - '@esbuild/netbsd-x64': 0.25.2 - '@esbuild/openbsd-arm64': 0.25.2 - '@esbuild/openbsd-x64': 0.25.2 - '@esbuild/sunos-x64': 0.25.2 - '@esbuild/win32-arm64': 0.25.2 - '@esbuild/win32-ia32': 0.25.2 - '@esbuild/win32-x64': 0.25.2 - - escodegen@1.14.3: - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - - esprima@1.2.2: {} - - esprima@4.0.1: {} - - estraverse@4.3.0: {} - - esutils@2.0.3: {} - - ethers@6.13.4: - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - ethers@6.13.5: - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@types/node': 22.7.5 - aes-js: 4.0.0-beta.5 - tslib: 2.7.0 - ws: 8.17.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - fast-levenshtein@2.0.6: {} - - fastfile@0.0.20: {} - - ffjavascript@0.3.0: - dependencies: - wasmbuilder: 0.0.16 - wasmcurves: 0.2.2 - web-worker: 1.2.0 - - ffjavascript@0.3.1: - dependencies: - wasmbuilder: 0.0.16 - wasmcurves: 0.2.2 - web-worker: 1.2.0 - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - fsevents@2.3.3: - optional: true - - get-tsconfig@4.10.0: - dependencies: - resolve-pkg-maps: 1.0.0 - - has-flag@4.0.0: {} - - hoopy@0.1.4: {} - - ieee754@1.2.1: {} - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - js-sha256@0.10.1: {} - - js-sha3@0.8.0: {} - - js-sha512@0.8.0: {} - - json-bigint@1.0.0: - dependencies: - bignumber.js: 9.2.1 - - jsonpath@1.1.1: - dependencies: - esprima: 1.2.2 - static-eval: 2.0.2 - underscore: 1.12.1 - - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - - lodash@4.17.21: {} - - logplease@1.2.15: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - nanoassert@2.0.0: {} - - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - poseidon-lite@0.3.0: {} - - prelude-ls@1.1.2: {} - - r1csfile@0.0.48: - dependencies: - '@iden3/bigarray': 0.0.2 - '@iden3/binfileutils': 0.0.12 - fastfile: 0.0.20 - ffjavascript: 0.3.0 - - resolve-pkg-maps@1.0.0: {} - - secure-random@1.1.2: {} - - snarkjs@0.7.4: - dependencies: - '@iden3/binfileutils': 0.0.12 - bfj: 7.1.0 - blake2b-wasm: 2.4.0 - circom_runtime: 0.1.25 - ejs: 3.1.10 - fastfile: 0.0.20 - ffjavascript: 0.3.0 - js-sha3: 0.8.0 - logplease: 1.2.15 - r1csfile: 0.0.48 - - snarkjs@0.7.5: - dependencies: - '@iden3/binfileutils': 0.0.12 - bfj: 7.1.0 - blake2b-wasm: 2.4.0 - circom_runtime: 0.1.28 - ejs: 3.1.10 - fastfile: 0.0.20 - ffjavascript: 0.3.1 - js-sha3: 0.8.0 - logplease: 1.2.15 - r1csfile: 0.0.48 - - source-map@0.6.1: - optional: true - - static-eval@2.0.2: - dependencies: - escodegen: 1.14.3 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - tryer@1.0.1: {} - - tslib@2.7.0: {} - - tsx@4.19.3: - dependencies: - esbuild: 0.25.2 - get-tsconfig: 4.10.0 - optionalDependencies: - fsevents: 2.3.3 - - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - - underscore@1.12.1: {} - - undici-types@6.19.8: {} - - url-join@4.0.1: {} - - uuid@9.0.1: {} - - valibot@0.42.1: {} - - wasmbuilder@0.0.16: {} - - wasmcurves@0.2.2: - dependencies: - wasmbuilder: 0.0.16 - - web-worker@1.2.0: {} - - word-wrap@1.2.5: {} - - ws@8.17.1: {} diff --git a/pods/tests/create.test.js b/pods/tests/create.test.js new file mode 100644 index 0000000..3147632 --- /dev/null +++ b/pods/tests/create.test.js @@ -0,0 +1,37 @@ +const { execSync } = require('child_process'); +const path = require('path'); + +const expected_pod_object = { + entries: { + expiry_date: { date: '2026-04-10T00:00:00.000Z' }, + holder_smart_character_address: '0x6d11ac8f376b6284a7e5d62a340f71869b3063ae', + issued_date: { date: '2025-04-10T00:00:00.000Z' }, + pod_type: 'corpName.security_badge', + security_level: 4 + }, + signature: 'GfpAbL4XJzSVZUg2XmnPLlIl0Yt1e0JCG+CKNfNQi5FFT3P7L2aCxnmNmSoDGXahvaqhOcXtjGybD1ZH39ZXAQ', + signerPublicKey: '3iREOe5OdCEZ0KaF4pOfFc5nMvG6iZbY7GeaMy2P3xw' +} + +test('create.ts output should match expected POD structure', () => { + // Run the create.ts script + const output = execSync('npx tsx create.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + + const lines = output.split('\n'); + const stringifiedLine = lines.find(line => + line.trim().startsWith('{"entries":') && + line.includes('"security_level":4') && + line.includes('"holder_smart_character_address":"0x6d11ac8f376b6284a7e5d62a340f71869b3063ae"') + ); + + if (!stringifiedLine) { + throw new Error('Could not find stringified JSON output in create.ts'); + } + + const actualPodData = JSON.parse(stringifiedLine); + + expect(actualPodData).toEqual(expected_pod_object); +}); \ No newline at end of file diff --git a/pods/tests/verify.test.js b/pods/tests/verify.test.js new file mode 100644 index 0000000..a502396 --- /dev/null +++ b/pods/tests/verify.test.js @@ -0,0 +1,27 @@ +const { execSync } = require('child_process'); +const path = require('path'); + +test('verify.ts should output expected verification messages', () => { + // Run the verify.ts script + const output = execSync('npx tsx verify.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + + // Check that all expected verification messages are present + expect(output).toContain('Verified POD'); + expect(output).toContain('Verified Official Signer'); + expect(output).toContain('Verified Official Pod Type'); + expect(output).toContain('Level:'); + expect(output).toContain('4n'); +}); + +test('verify.ts should complete successfully without errors', () => { + // Run the verify.ts script and ensure it doesn't throw + expect(() => { + execSync('npx tsx verify.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + }).not.toThrow(); +}); \ No newline at end of file diff --git a/pods/tests/zkCreate.test.js b/pods/tests/zkCreate.test.js new file mode 100644 index 0000000..7351375 --- /dev/null +++ b/pods/tests/zkCreate.test.js @@ -0,0 +1,39 @@ +const { execSync } = require('child_process'); +const path = require('path'); + +const expected_proof_object = { "proof": { "pi_a": ["19422264465599120829413134707921120792898747441591092480110226800152887771632", "76668257518837011009133165568118868082109118870224914950059612658819936337", "1"], "pi_b": [["4751652970105025117938707035093134573565924324166271307597793324099305626945", "13000436457844789009451957634837948759190753576765008061726979029295173565072"], ["19679450527765739065612224512657260314485025347050953832111182431691642962423", "21674794968335730448278634775576330173189820174499301537884436703007112889680"], ["1", "0"]], "pi_c": ["3895276841122257935955558819701669544891619058280315081667699610724664954703", "21825778419765792265241267634764374651144907315174272222386073015015838587194", "1"], "protocol": "groth16", "curve": "bn128" }, "boundConfig": { "circuitIdentifier": "proto-pod-gpc_1o-12e-5md-4nv-0ei-1x5l-0x0t-0ov3-1ov4", "pods": { "security_badge": { "entries": { "expiry_date": { "isRevealed": false, "inRange": { "min": 1746835200000, "max": 1902009600000 } }, "holder_smart_character_address": { "isRevealed": true }, "issued_date": { "isRevealed": false, "inRange": { "min": 0, "max": 1746835200000 } }, "pod_type": { "isRevealed": true }, "security_level": { "isRevealed": false, "inRange": { "min": 3, "max": 10 } } } } } }, "revealedClaims": { "pods": { "security_badge": { "entries": { "holder_smart_character_address": "0x6d11ac8f376b6284a7e5d62a340f71869b3063ae", "pod_type": "corpName.security_badge" }, "signerPublicKey": "3iREOe5OdCEZ0KaF4pOfFc5nMvG6iZbY7GeaMy2P3xw" } } } } + +test('zkCreate.ts output should match expected Proof structure', () => { + // Run the create.ts script + const output = execSync('npx tsx zkCreate.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8', + timeout: 10000 + }); + + const lines = output.split('\n'); + const stringifiedLine = lines.find(line => + line.trim().startsWith('{"proof":') && + line.includes('"protocol":"groth16"') && + line.includes('"curve":"bn128"') + ); + + if (!stringifiedLine) { + throw new Error('Could not find stringified JSON output in create.ts'); + } + + const actualProofData = JSON.parse(stringifiedLine); + + expect(actualProofData.revealedClaims).toEqual(expected_proof_object.revealedClaims); + expect(actualProofData.boundConfig).toEqual(expected_proof_object.boundConfig); +}); + +test('zkCreate.ts should complete successfully without errors', () => { + // Run the zkCreate.ts script and ensure it doesn't throw + expect(() => { + execSync('npx tsx zkCreate.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + }).not.toThrow(); +}); \ No newline at end of file diff --git a/pods/tests/zkVerify.test.js b/pods/tests/zkVerify.test.js new file mode 100644 index 0000000..a31ec71 --- /dev/null +++ b/pods/tests/zkVerify.test.js @@ -0,0 +1,26 @@ +const { execSync } = require('child_process'); +const path = require('path'); + +test('zkVerify.ts should output expected verification messages', () => { + // Run the zkVerify.ts script + const output = execSync('npx tsx zkVerify.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + + // Check that all expected verification messages are present + expect(output).toContain('Proof is valid'); + expect(output).toContain('Correct POD Type'); + expect(output).toContain('Verified security badge for character'); + expect(output).toContain('0x6d11ac8f376b6284a7e5d62a340f71869b3063ae'); +}); + +test('zkVerify.ts should complete successfully without errors', () => { + // Run the zkVerify.ts script and ensure it doesn't throw + expect(() => { + execSync('npx tsx zkVerify.ts', { + cwd: path.join(__dirname, '..'), + encoding: 'utf8' + }); + }).not.toThrow(); +}); \ No newline at end of file diff --git a/pods/verify.ts b/pods/verify.ts index f12512a..9eef409 100644 --- a/pods/verify.ts +++ b/pods/verify.ts @@ -2,7 +2,7 @@ import { POD, PODEntries, JSONPOD, PODValue, podValueFromJSON } from "@pcd/pod"; //Fetch the POD String -const serializedPOD = '{"entries":{"expiry_date":{"date":"2026-04-10T00:00:00.000Z"},"holder_smart_character_address":"0x6d11ac8f376b6284a7e5d62a340f71869b3063ae","issued_date":{"date":"2025-04-10T00:00:00.000Z"},"level":4,"pod_type":"corpName.access_badge"},"signature":"IQkqxOjjxbiJNHd2mfxOmLEFsWFluw+ZL93MnRGcXJoZWLdUc5Y9p/qgZ/gL72250U6XBVZnEIahn2M3leuBAg","signerPublicKey":"xDP3ppa3qjpSJO+zmTuvDM2eku7O4MKaP2yCCKnoHZ4"}' +const serializedPOD = '{"entries":{"expiry_date":{"date":"2026-04-10T00:00:00.000Z"},"holder_smart_character_address":"0x6d11ac8f376b6284a7e5d62a340f71869b3063ae","issued_date":{"date":"2025-04-10T00:00:00.000Z"},"pod_type":"corpName.security_badge","security_level":4},"signature":"GfpAbL4XJzSVZUg2XmnPLlIl0Yt1e0JCG+CKNfNQi5FFT3P7L2aCxnmNmSoDGXahvaqhOcXtjGybD1ZH39ZXAQ","signerPublicKey":"3iREOe5OdCEZ0KaF4pOfFc5nMvG6iZbY7GeaMy2P3xw"}' //Create the POD from the String const receivedPOD: POD = POD.fromJSON(JSON.parse(serializedPOD)); @@ -14,7 +14,7 @@ if(!receivedPOD.verifySignature()){ console.log("Verified POD") -const officialPublicKey = "xDP3ppa3qjpSJO+zmTuvDM2eku7O4MKaP2yCCKnoHZ4" +const officialPublicKey = "3iREOe5OdCEZ0KaF4pOfFc5nMvG6iZbY7GeaMy2P3xw" if(receivedPOD.signerPublicKey != officialPublicKey){ throw new Error("Not the official signer"); diff --git a/pods/zkCreate.ts b/pods/zkCreate.ts index 85be3a5..7eb95bb 100644 --- a/pods/zkCreate.ts +++ b/pods/zkCreate.ts @@ -99,6 +99,8 @@ async function CreateProof(){ //Output the proof console.log(proofMessage) + + process.exit(0); } CreateProof() \ No newline at end of file diff --git a/pods/zkVerify.ts b/pods/zkVerify.ts index e9c8df3..ff3967e 100644 --- a/pods/zkVerify.ts +++ b/pods/zkVerify.ts @@ -90,7 +90,7 @@ async function VerifyProof(){ console.log("Correct POD Type") - console.log("Verfied security badge for character", badgeEntries.holder_smart_character_address.value); + console.log("Verified security badge for character", badgeEntries.holder_smart_character_address.value); //Exit the program process.exit(0);