diff --git a/packages/poseidon/index.test.mjs b/packages/poseidon/index.test.mjs new file mode 100644 index 0000000..40dd878 --- /dev/null +++ b/packages/poseidon/index.test.mjs @@ -0,0 +1,67 @@ +import { generate } from '@zk-kit/poseidon-proof' +import { unpackGroth16Proof } from '@zk-kit/utils/proof-packing' +import { keccak256 } from 'ethers/crypto' +import { toBeHex } from 'ethers/utils' +import { getCurveFromName } from 'ffjavascript' +import assert from 'node:assert/strict' +import { readFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { after, before, describe, test } from 'node:test' +import * as poseidons from 'poseidon-lite' +import { groth16 } from 'snarkjs' + +function hash(message) { + return (BigInt(keccak256(toBeHex(message, 32))) >> BigInt(8)).toString() +} + +const PWD = dirname(import.meta.url.replace('file://', '')) +const SCOPE = 'scope' +const INPUTS = Array.from({ length: 16 }, (_, i) => i + 1).map(i => Array.from({ length: i }, (_, j) => j + 1)) + +async function generateProof(inputs) { + const numParams = inputs.length + + return generate(inputs, SCOPE, { + wasm: join(PWD, `poseidon-${numParams}.wasm`), + zkey: join(PWD, `poseidon-${numParams}.zkey`), + }) +} + +async function verifyProof({ digest, numberOfInputs, proof, scope }) { + const verifKey = JSON.parse(readFileSync(join(PWD, `poseidon-${numberOfInputs}.json`))) + return groth16.verify(verifKey, [digest, hash(scope)], unpackGroth16Proof(proof)) +} + +describe('poseidon', () => { + const scope = 'scope' + let curve + let digest + const proofs = [] + + before(async () => { + curve = await getCurveFromName('bn128') + + for (const inputs of INPUTS) { + const proof = await generateProof(inputs) + proofs.push(proof) + } + }, 30_000) + + after(async () => { + await curve.terminate() + }) + + test('Should verify all Poseidon proofs', async (t) => { + for (const proof of proofs) { + const { numberOfInputs } = proof + await t.test(`Should verify a Poseidon proof with ${numberOfInputs} parameter(s)`, async (t) => { + const result = await verifyProof(proof) + assert.strictEqual( + result, + true, + `Proof verification failed for ${numberOfInputs} parameter${numberOfInputs > 1 ? 's' : ''}`, + ) + }) + } + }) +}) diff --git a/packages/poseidon/package.json b/packages/poseidon/package.json index 3626508..7eb46e8 100644 --- a/packages/poseidon/package.json +++ b/packages/poseidon/package.json @@ -13,5 +13,18 @@ }, "publishConfig": { "access": "public" + }, + "scripts": { + "test": "node --test index.test.mjs" + }, + "files": ["poseidon-*"], + "devDependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@zk-kit/poseidon-proof": "1.0.0-beta.4", + "@zk-kit/utils": "^1.2.0", + "ethers": "^6.13.1", + "ffjavascript": "^0.3.0", + "poseidon-lite": "^0.2.0", + "snarkjs": "^0.7.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14ce033..8617bc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,7 +34,7 @@ importers: version: 0.45.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + version: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) lefthook: specifier: ^1.7.11 version: 1.7.11 @@ -46,7 +46,7 @@ importers: version: 4.20.0 ts-jest: specifier: ^29.1.3 - version: 29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4) + version: 29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)))(typescript@5.5.4) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@20.14.14)(typescript@5.5.4) @@ -80,7 +80,7 @@ importers: devDependencies: '@preact/preset-vite': specifier: ^2.8.2 - version: 2.8.2(@babel/core@7.25.2)(preact@10.22.0)(vite@5.3.1) + version: 2.8.2(@babel/core@7.25.2)(preact@10.22.0)(vite@5.3.1(@types/node@22.2.0)) '@types/semver': specifier: ^7.5.8 version: 7.5.8 @@ -92,13 +92,13 @@ importers: version: 8.4.39 tailwindcss: specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2) + version: 3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.2.2)) typescript: specifier: ^5.2.2 version: 5.2.2 vite: specifier: ^5.3.1 - version: 5.3.1(@types/node@20.14.14) + version: 5.3.1(@types/node@22.2.0) packages/artifacts: dependencies: @@ -134,7 +134,29 @@ importers: specifier: ^4.18.1 version: 4.20.0 - packages/poseidon: {} + packages/poseidon: + devDependencies: + '@ethersproject/bignumber': + specifier: ^5.7.0 + version: 5.7.0 + '@zk-kit/poseidon-proof': + specifier: 1.0.0-beta.4 + version: 1.0.0-beta.4 + '@zk-kit/utils': + specifier: ^1.2.0 + version: 1.2.1 + ethers: + specifier: ^6.13.1 + version: 6.13.2 + ffjavascript: + specifier: ^0.3.0 + version: 0.3.0 + poseidon-lite: + specifier: ^0.2.0 + version: 0.2.1 + snarkjs: + specifier: ^0.7.4 + version: 0.7.4 packages/semaphore: {} @@ -142,6 +164,9 @@ importers: packages: + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -617,6 +642,15 @@ packages: cpu: [x64] os: [win32] + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + '@iden3/bigarray@0.0.2': resolution: {integrity: sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g==} @@ -751,6 +785,13 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1014,6 +1055,9 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@18.15.13': + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + '@types/node@20.12.10': resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} @@ -1041,9 +1085,21 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@zk-kit/artifacts@1.4.1': + resolution: {integrity: sha512-OR1mrDBWJNT2NYdQpRmVL5pWxeNmQTzLy9Q5vDMtDISkoYW7l2cs2aLsNREBzy4wcxdR/52lE45AtShMmKQVIg==} + '@zk-kit/artifacts@1.9.0': resolution: {integrity: sha512-Dl8bJLWnSw0NGT1/p5UKmp4Zgr+evyyvgyi2pwDzdPuT0RKMRkgNIC4ai1j58utwWR9tczGNQlDPdpdZNqFfmA==} + '@zk-kit/poseidon-proof@1.0.0-beta.4': + resolution: {integrity: sha512-F4H6GA18NRh/nqJLYKsgysX29rMbUSwam5dBBIaeWryFzJ0iHYMYgdnKQamBt00tsSMgOTxW4UiT/oK5ioyswQ==} + + '@zk-kit/utils@1.0.0': + resolution: {integrity: sha512-v5UjrZiaRNAN2UJmTFHvlMktaA2Efc2qN1Mwd4060ExX12yRhY8ZhzdlDODhnuHkvW5zPukuBHgQhHMScNP3Pg==} + + '@zk-kit/utils@1.2.1': + resolution: {integrity: sha512-H2nTsyWdicVOyvqC5AjgU7tsTgmR6PDrruFJNmlmdhKp7RxEia/E1B1swMZjaasYa2QMp4Zc6oB7cWchty7B2Q==} + acorn-walk@8.3.3: resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} engines: {node: '>=0.4.0'} @@ -1053,6 +1109,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1189,6 +1248,9 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1223,6 +1285,9 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1556,6 +1621,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + ethers@6.13.2: + resolution: {integrity: sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==} + engines: {node: '>=14.0.0'} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2397,6 +2466,9 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + poseidon-lite@0.2.1: + resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} + possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} @@ -2813,6 +2885,9 @@ packages: '@swc/wasm': optional: true + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -2975,6 +3050,18 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.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 + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -3012,6 +3099,8 @@ packages: snapshots: + '@adraffy/ens-normalize@1.10.1': {} + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -3535,6 +3624,18 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/logger@5.7.0': {} + '@iden3/bigarray@0.0.2': {} '@iden3/binfileutils@0.0.11': @@ -3610,7 +3711,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2)': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -3624,7 +3725,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3801,6 +3902,12 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/hashes@1.3.2': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3877,12 +3984,12 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@preact/preset-vite@2.8.2(@babel/core@7.25.2)(preact@10.22.0)(vite@5.3.1)': + '@preact/preset-vite@2.8.2(@babel/core@7.25.2)(preact@10.22.0)(vite@5.3.1(@types/node@22.2.0))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) - '@prefresh/vite': 2.4.6(preact@10.22.0)(vite@5.3.1) + '@prefresh/vite': 2.4.6(preact@10.22.0)(vite@5.3.1(@types/node@22.2.0)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.2) debug: 4.3.6 @@ -3892,7 +3999,7 @@ snapshots: resolve: 1.22.8 source-map: 0.7.4 stack-trace: 1.0.0-pre2 - vite: 5.3.1(@types/node@20.14.14) + vite: 5.3.1(@types/node@22.2.0) transitivePeerDependencies: - preact - supports-color @@ -3905,7 +4012,7 @@ snapshots: '@prefresh/utils@1.2.0': {} - '@prefresh/vite@2.4.6(preact@10.22.0)(vite@5.3.1)': + '@prefresh/vite@2.4.6(preact@10.22.0)(vite@5.3.1(@types/node@22.2.0))': dependencies: '@babel/core': 7.25.2 '@prefresh/babel-plugin': 0.5.1 @@ -3913,22 +4020,24 @@ snapshots: '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 preact: 10.22.0 - vite: 5.3.1(@types/node@20.14.14) + vite: 5.3.1(@types/node@22.2.0) transitivePeerDependencies: - supports-color '@rollup/plugin-alias@5.1.0(rollup@4.20.0)': dependencies: - rollup: 4.20.0 slash: 4.0.0 + optionalDependencies: + rollup: 4.20.0 '@rollup/plugin-typescript@11.1.6(rollup@4.20.0)(tslib@2.6.3)(typescript@5.5.4)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.20.0) resolve: 1.22.8 + typescript: 5.5.4 + optionalDependencies: rollup: 4.20.0 tslib: 2.6.3 - typescript: 5.5.4 '@rollup/pluginutils@4.2.1': dependencies: @@ -3940,6 +4049,7 @@ snapshots: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 4.20.0 '@rollup/rollup-android-arm-eabi@4.20.0': @@ -4056,6 +4166,8 @@ snapshots: '@types/node@12.20.55': {} + '@types/node@18.15.13': {} + '@types/node@20.12.10': dependencies: undici-types: 5.26.5 @@ -4082,14 +4194,36 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@zk-kit/artifacts@1.4.1': {} + '@zk-kit/artifacts@1.9.0': {} + '@zk-kit/poseidon-proof@1.0.0-beta.4': + dependencies: + '@zk-kit/artifacts': 1.4.1 + '@zk-kit/utils': 1.0.0 + ethers: 6.13.2 + snarkjs: 0.7.4 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@zk-kit/utils@1.0.0': + dependencies: + buffer: 6.0.3 + + '@zk-kit/utils@1.2.1': + dependencies: + buffer: 6.0.3 + acorn-walk@8.3.3: dependencies: acorn: 8.12.1 acorn@8.12.1: {} + aes-js@4.0.0-beta.5: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -4240,6 +4374,8 @@ snapshots: bluebird@3.7.2: {} + bn.js@5.2.1: {} + boolbase@1.0.0: {} brace-expansion@1.1.11: @@ -4288,6 +4424,11 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -4422,13 +4563,13 @@ snapshots: convert-source-map@2.0.0: {} - create-jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + create-jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4619,6 +4760,19 @@ snapshots: esutils@2.0.3: {} + ethers@6.13.2: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -4994,16 +5148,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + jest-cli@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -5013,12 +5167,11 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + jest-config@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.14.14 babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.9.0 @@ -5038,6 +5191,8 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.14.14 ts-node: 10.9.2(@types/node@20.14.14)(typescript@5.5.4) transitivePeerDependencies: - babel-plugin-macros @@ -5120,7 +5275,7 @@ snapshots: jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - dependencies: + optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} @@ -5258,12 +5413,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2): + jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5273,7 +5428,7 @@ snapshots: jiti@1.21.6: {} jotai@2.8.3(react@18.3.1): - dependencies: + optionalDependencies: react: 18.3.1 js-sha3@0.8.0: {} @@ -5596,6 +5751,8 @@ snapshots: dependencies: find-up: 4.1.0 + poseidon-lite@0.2.1: {} + possible-typed-array-names@1.0.0: {} postcss-import@15.1.0(postcss@8.4.39): @@ -5610,12 +5767,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.39 - postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2): + postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.2.2)): dependencies: lilconfig: 3.1.2 - postcss: 8.4.39 - ts-node: 10.9.2(@types/node@20.14.14)(typescript@5.5.4) yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.39 + ts-node: 10.9.2(@types/node@22.2.0)(typescript@5.2.2) postcss-nested@6.2.0(postcss@8.4.39): dependencies: @@ -5932,7 +6090,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - tailwindcss@3.4.4(ts-node@10.9.2): + tailwindcss@3.4.4(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.2.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -5951,7 +6109,7 @@ snapshots: postcss: 8.4.39 postcss-import: 15.1.0(postcss@8.4.39) postcss-js: 4.0.1(postcss@8.4.39) - postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2) + postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@22.2.0)(typescript@5.2.2)) postcss-nested: 6.2.0(postcss@8.4.39) postcss-selector-parser: 6.1.1 resolve: 1.22.8 @@ -5999,13 +6157,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.5.4): + ts-jest@29.2.4(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)))(typescript@5.5.4): dependencies: - '@babel/core': 7.25.2 bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2) + jest: 29.7.0(@types/node@20.14.14)(ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -6013,6 +6170,11 @@ snapshots: semver: 7.6.2 typescript: 5.5.4 yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.25.2 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) ts-node@10.9.2(@types/node@20.14.14)(typescript@5.5.4): dependencies: @@ -6032,6 +6194,27 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + ts-node@10.9.2(@types/node@22.2.0)(typescript@5.2.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.2.0 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + + tslib@2.4.0: {} + tslib@2.6.3: {} type-check@0.3.2: @@ -6087,13 +6270,13 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vite@5.3.1(@types/node@20.14.14): + vite@5.3.1(@types/node@22.2.0): dependencies: - '@types/node': 20.14.14 esbuild: 0.21.5 postcss: 8.4.39 rollup: 4.20.0 optionalDependencies: + '@types/node': 22.2.0 fsevents: 2.3.3 walker@1.0.8: @@ -6173,6 +6356,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@8.17.1: {} + y18n@5.0.8: {} yallist@2.1.2: {}