From 4618dc601477ae8a33eb537c3f839774251d19f8 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 24 May 2024 15:43:52 +0300 Subject: [PATCH 01/49] init registration scripts --- contracts/examples/verax/TestArrModule.sol | 28 + contracts/examples/verax/ZKPVerifyModule.sol | 41 + .../verax/abstracts/AbstractModule.sol | 38 + contracts/examples/verax/types/Structs.sol | 47 + hardhat.config.ts | 13 +- package-lock.json | 8471 +++++++++++++++-- package.json | 3 +- scripts/verax/create-attestation.ts | 61 + scripts/verax/create-default-portal.ts | 34 + scripts/verax/create-schema.ts | 48 + scripts/verax/deploy-module.ts | 34 + scripts/verax/get-attestation.ts | 28 + 12 files changed, 7908 insertions(+), 938 deletions(-) create mode 100644 contracts/examples/verax/TestArrModule.sol create mode 100644 contracts/examples/verax/ZKPVerifyModule.sol create mode 100644 contracts/examples/verax/abstracts/AbstractModule.sol create mode 100644 contracts/examples/verax/types/Structs.sol create mode 100644 scripts/verax/create-attestation.ts create mode 100644 scripts/verax/create-default-portal.ts create mode 100644 scripts/verax/create-schema.ts create mode 100644 scripts/verax/deploy-module.ts create mode 100644 scripts/verax/get-attestation.ts diff --git a/contracts/examples/verax/TestArrModule.sol b/contracts/examples/verax/TestArrModule.sol new file mode 100644 index 0000000..83526ef --- /dev/null +++ b/contracts/examples/verax/TestArrModule.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AttestationPayload } from "./types/Structs.sol"; +import { AbstractModule } from "./abstracts/AbstractModule.sol"; +import {IZKPVerifier} from '@iden3/contracts/interfaces/IZKPVerifier.sol'; + +contract TestArrModule is AbstractModule { + IZKPVerifier public zkpVerifier; + + constructor(IZKPVerifier _zkpVerifier) { + zkpVerifier = _zkpVerifier; + } + + function run( + AttestationPayload memory /*attestationPayload*/, + bytes memory validationPayload, + address txSender, + uint256 /*value*/ + ) public override { + (uint256[] memory inputs, uint256[] memory a) = + abi.decode(validationPayload, (uint256[], uint256[])); + + require(inputs[0] == 1, "invalid first input"); + require(inputs[1] == 2, "invalid second input"); + + } +} diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol new file mode 100644 index 0000000..2b53daa --- /dev/null +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AttestationPayload } from "./types/Structs.sol"; +import { AbstractModule } from "./abstracts/AbstractModule.sol"; +import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; +import { IVerifier } from '@iden3/contracts/interfaces/IVerifier.sol'; + +contract ZKPVerifyModule is AbstractModule { + IZKPVerifier public zkpVerifier; + IVerifier public verifier; + + constructor(address _zkpVerifier) { + zkpVerifier = IZKPVerifier(_zkpVerifier); + verifier = IVerifier(0x35178273C828E08298EcB0C6F1b97B3aFf14C4cb); + } + + function run( + AttestationPayload memory attestationPayload, + bytes memory validationPayload, + address txSender, + uint256 /*value*/ + ) public override { + require(msg.sender == 0x3C443B9f0c8ed3A3270De7A4815487BA3223C2Fa, "invalid sender"); + (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = + abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); + + (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = + abi.decode(attestationPayload.attestationData, (uint64, uint256)); + + (uint256 attestationSubject) = + abi.decode(attestationPayload.subject, (uint256)); + require(attestationSubject == inputs[0], "attestation subject doesn't match to user id input"); + + require(attestationRequestId == inputs[7], "request Id doesn't match"); + // require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); + zkpVerifier.submitZKPResponse(requestId, inputs, a, b, c); + // require(verifier.verify(a, b, c, inputs), "Proof is not valid"); + } + +} diff --git a/contracts/examples/verax/abstracts/AbstractModule.sol b/contracts/examples/verax/abstracts/AbstractModule.sol new file mode 100644 index 0000000..caf60be --- /dev/null +++ b/contracts/examples/verax/abstracts/AbstractModule.sol @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AttestationPayload } from "../types/Structs.sol"; +import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; + +/** + * @title Abstract Module + * @author Consensys + * @notice Defines the minimal Module interface + */ +abstract contract AbstractModule is IERC165 { + /// @notice Error thrown when someone else than the portal's owner is trying to revoke + error OnlyPortalOwner(); + + /** + * @notice Executes the module's custom logic. + * @param attestationPayload The incoming attestation data. + * @param validationPayload Additional data required for verification. + * @param txSender The transaction sender's address. + * @param value The transaction value. + */ + function run( + AttestationPayload memory attestationPayload, + bytes memory validationPayload, + address txSender, + uint256 value + ) public virtual; + + /** + * @notice Checks if the contract implements the Module interface. + * @param interfaceID The ID of the interface to check. + * @return A boolean indicating interface support. + */ + function supportsInterface(bytes4 interfaceID) public pure virtual override returns (bool) { + return interfaceID == type(AbstractModule).interfaceId || interfaceID == type(IERC165).interfaceId; + } +} diff --git a/contracts/examples/verax/types/Structs.sol b/contracts/examples/verax/types/Structs.sol new file mode 100644 index 0000000..2b004cf --- /dev/null +++ b/contracts/examples/verax/types/Structs.sol @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +struct AttestationPayload { + bytes32 schemaId; // The identifier of the schema this attestation adheres to. + uint64 expirationDate; // The expiration date of the attestation. + bytes subject; // The ID of the attestee, EVM address, DID, URL etc. + bytes attestationData; // The attestation data. +} + +struct Attestation { + bytes32 attestationId; // The unique identifier of the attestation. + bytes32 schemaId; // The identifier of the schema this attestation adheres to. + bytes32 replacedBy; // Whether the attestation was replaced by a new one. + address attester; // The address issuing the attestation to the subject. + address portal; // The id of the portal that created the attestation. + uint64 attestedDate; // The date the attestation is issued. + uint64 expirationDate; // The expiration date of the attestation. + uint64 revocationDate; // The date when the attestation was revoked. + uint16 version; // Version of the registry when the attestation was created. + bool revoked; // Whether the attestation is revoked or not. + bytes subject; // The ID of the attestee, EVM address, DID, URL etc. + bytes attestationData; // The attestation data. +} + +struct Schema { + string name; // The name of the schema. + string description; // A description of the schema. + string context; // The context of the schema. + string schema; // The schema definition. +} + +struct Portal { + address id; // The unique identifier of the portal. + address ownerAddress; // The address of the owner of this portal. + address[] modules; // Addresses of modules implemented by the portal. + bool isRevocable; // Whether attestations issued can be revoked. + string name; // The name of the portal. + string description; // A description of the portal. + string ownerName; // The name of the owner of this portal. +} + +struct Module { + address moduleAddress; // The address of the module. + string name; // The name of the module. + string description; // A description of the module. +} diff --git a/hardhat.config.ts b/hardhat.config.ts index 5cf94d5..8b2b2e1 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -32,10 +32,15 @@ const config: HardhatUserConfig = { // accounts: [`0x${process.env.MAIN_PRIVATE_KEY}`], // gasPrice: 200000000000 // }, - amoy: { - chainId: 80002, - url: `${process.env.AMOY_RPC_URL}`, - accounts: [`0x${process.env.AMOY_PRIVATE_KEY}`] + // amoy: { + // chainId: 80002, + // url: `${process.env.AMOY_RPC_URL}`, + // accounts: [`0x${process.env.AMOY_PRIVATE_KEY}`] + // }, + sepolia: { + chainId: 59141, + url: `${process.env.SEPOLIA_RPC_URL}`, + accounts: [`0x${process.env.SEPOLIA_PRIVATE_KEY}`] }, localhost: { url: 'http://127.0.0.1:8545', diff --git a/package-lock.json b/package-lock.json index 0ee8827..d72c5d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^10.0.6", "@typescript-eslint/eslint-plugin": "^7.6.0", + "@verax-attestation-registry/verax-sdk": "^1.6.0", "async": "^3.2.3", "circomlibjs": "^0.1.7", "dotenv": "^16.4.5", @@ -53,6 +54,277 @@ "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", "dev": true }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@apollo/client": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.10.4.tgz", + "integrity": "sha512-51gk0xOwN6Ls1EbTG5svFva1kdm2APHYTzmFhaAdvUQoJFDxfc0UwQgDxGptzH84vkPlo1qunY1FuboyF9LI3Q==", + "dev": true, + "optional": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@wry/caches": "^1.0.0", + "@wry/equality": "^0.5.6", + "@wry/trie": "^0.5.0", + "graphql-tag": "^2.12.6", + "hoist-non-react-statics": "^3.3.2", + "optimism": "^0.18.0", + "prop-types": "^15.7.2", + "rehackt": "^0.1.0", + "response-iterator": "^0.2.6", + "symbol-observable": "^4.0.0", + "ts-invariant": "^0.10.3", + "tslib": "^2.3.0", + "zen-observable-ts": "^1.2.5" + }, + "peerDependencies": { + "graphql": "^15.0.0 || ^16.0.0", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" + }, + "peerDependenciesMeta": { + "graphql-ws": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "subscriptions-transport-ws": { + "optional": true + } + } + }, + "node_modules/@apollo/client/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, + "node_modules/@ardatan/relay-compiler": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz", + "integrity": "sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/runtime": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "chalk": "^4.0.0", + "fb-watchman": "^2.0.0", + "fbjs": "^3.0.0", + "glob": "^7.1.1", + "immutable": "~3.7.6", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "relay-runtime": "12.0.0", + "signedsource": "^1.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "relay-compiler": "bin/relay-compiler" + }, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/immutable": { + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@ardatan/relay-compiler/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@ardatan/sync-fetch": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz", + "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/@aws-crypto/sha256-js": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", @@ -122,999 +394,3946 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", + "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.24.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "semver": "^6.3.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, - "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=12" + "node": ">=6.9.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", + "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "@babel/types": "^7.24.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, - "peer": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", "dev": true, - "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "dev": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=6.9.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, - "peer": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, - "bin": { - "rlp": "bin/rlp" + "dependencies": { + "@babel/types": "^7.24.5" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", - "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", "dev": true, - "peer": true, "dependencies": { - "@ethereumjs/rlp": "^4.0.1", - "ethereum-cryptography": "^2.0.0", - "micro-ftch": "^0.3.1" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, - "peer": true, "dependencies": { - "@noble/hashes": "1.3.3" + "@babel/types": "^7.24.5" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "dev": true, - "peer": true, "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=6.9.0" } }, - "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, - "peer": true, - "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "color-name": "1.1.3" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", + "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", + "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", + "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.24.5", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", + "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", + "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-flow": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", + "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@envelop/core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@envelop/core/-/core-5.0.1.tgz", + "integrity": "sha512-wxA8EyE1fPnlbP0nC/SFI7uU8wSNf4YjxZhAPu0P63QbgIvqHtHsH4L3/u+rsTruzhk3OvNRgQyLsMfaR9uzAQ==", + "dev": true, + "dependencies": { + "@envelop/types": "5.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@envelop/extended-validation": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@envelop/extended-validation/-/extended-validation-4.0.0.tgz", + "integrity": "sha512-pvJ/OL+C+lpNiiCXezHT+vP3PTq37MQicoOB1l5MdgOOZZWRAp0NDOgvEKcXUY7AWNpvNHgSE0QFSRfGwsfwFQ==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@envelop/core": "^5.0.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/extended-validation/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@envelop/graphql-jit": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@envelop/graphql-jit/-/graphql-jit-8.0.3.tgz", + "integrity": "sha512-IZnKc7dVOQV9jEi5s5RkG8fVKqc6Ss/mBN9PRt2iYFa9o6XkL/haPLJRfWFsS/CSJfFOQuzLyxYuALA8DaoOYw==", + "dev": true, + "dependencies": { + "graphql-jit": "0.8.6", + "tslib": "^2.5.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@envelop/core": "^5.0.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/fast-json-stringify": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.0.tgz", + "integrity": "sha512-A4bg6E15QrkuVO3f0SwIASgzMzR6XC4qTyTqhf3hYXy0iazbAdZKwkE+ox4WgzKyzM6ygvbdq3r134UjOaaAnA==", + "dev": true, + "dependencies": { + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/graphql-jit": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/graphql-jit/-/graphql-jit-0.8.6.tgz", + "integrity": "sha512-oVJteh/uYDpIA/M4UHrI+DmzPnX1zTD0a7Je++JA8q8P68L/KbuepimDyrT5FhL4HAq3filUxaFvfsL6/A4msw==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "fast-json-stringify": "^5.8.0", + "generate-function": "^2.3.1", + "lodash.memoize": "^4.1.2", + "lodash.merge": "4.6.2", + "lodash.mergewith": "4.6.2" + }, + "peerDependencies": { + "graphql": ">=15" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@envelop/graphql-jit/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@envelop/types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@envelop/types/-/types-5.0.0.tgz", + "integrity": "sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA==", + "dev": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dev": true, + "peer": true, + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", + "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/curves": "1.3.0", + "@noble/hashes": "1.3.3", + "@scure/bip32": "1.3.3", + "@scure/bip39": "1.2.2" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, { "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ], + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", + "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "node_modules/@graphprotocol/client-block-tracking": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-block-tracking/-/client-block-tracking-2.0.2.tgz", + "integrity": "sha512-gVOUq77kxniXk3kQ+Bl2GHB5HvYYDChV/e2YMxHieVgCVEmQ/CzRRDdSfBf898ZAyqeY3QNsdbR/EpcEyM4bFw==", + "dev": true, + "dependencies": { + "@graphql-mesh/fusion-runtime": "^0.3.0", + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-tools/delegate": "^9.0.32 || ^10.0.0", + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-block-tracking/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphprotocol/client-cli": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-cli/-/client-cli-3.0.3.tgz", + "integrity": "sha512-cFukNLDqkPLEtZYfz8xDOLbX8/Wslv30QOL8RHsqodnlpMCJYB52VSj8qzNE+KM8/AWCDMZk+7+tgmThraVbPA==", + "dev": true, + "dependencies": { + "@graphprotocol/client-add-source-name": "^2.0.3", + "@graphprotocol/client-auto-pagination": "^2.0.3", + "@graphprotocol/client-auto-type-merging": "^2.0.3", + "@graphprotocol/client-block-tracking": "^2.0.2", + "@graphprotocol/client-polling-live": "^2.0.1", + "@graphql-mesh/cli": "^0.90.0", + "@graphql-mesh/graphql": "^0.98.0", + "tslib": "^2.4.0" + }, + "bin": { + "graphclient": "cjs/bin.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphprotocol/client-add-source-name": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-add-source-name/-/client-add-source-name-2.0.3.tgz", + "integrity": "sha512-30VxjW8yEytySAJ7S+6pC3SII8BGyzQbLTIDr7FPEdj5FHvVKq3WQxDNHwWPEoEYYEEWDlapw3+e7leDwW9MCQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.78.0 || ^0.79.0 || ^0.80.0 || ^0.81.0 || ^0.82.0 || ^0.83.0 || ^0.84.0 || ^0.85.0 || ^0.89.0 || ^0.90.0 || ^0.91.0 || ^0.93.0 || ^0.94.0 || ^0.97.0 || ^0.98.0", + "@graphql-tools/delegate": "^9.0.32 || ^10.0.0", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "@graphql-tools/wrap": "^9.4.2 || ^10.0.0", + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphprotocol/client-auto-pagination": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-auto-pagination/-/client-auto-pagination-2.0.3.tgz", + "integrity": "sha512-ZYMO4/tQ5ndSYeaZ+uucJYFNVc1DYSC6jK5AfJYElEfRMRZrj7jXL6RViBNmsSYuOXR2EIyEqPBOAdy2oDLWdw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.78.0 || ^0.79.0 || ^0.80.0 || ^0.81.0 || ^0.82.0 || ^0.83.0 || ^0.84.0 || ^0.85.0 || ^0.89.0 || ^0.90.0 || ^0.91.0 || ^0.93.0 || ^0.94.0 || ^0.97.0 || ^0.98.0", + "@graphql-tools/delegate": "^9.0.32 || ^10.0.0", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "@graphql-tools/wrap": "^9.4.2 || ^10.0.0", + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphprotocol/client-auto-type-merging": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-auto-type-merging/-/client-auto-type-merging-2.0.3.tgz", + "integrity": "sha512-vJVzvxk3FRwHc4w9+GP4QBrQ3oxNbveH1k3bEGokSo5DbGMQ2HIYFrGRZ+hICUQBIcqgK+beWa35BZtEMnBWaw==", + "dev": true, + "dependencies": { + "@graphql-mesh/transform-type-merging": "^0.98.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.78.0 || ^0.79.0 || ^0.80.0 || ^0.81.0 || ^0.82.0 || ^0.83.0 || ^0.84.0 || ^0.85.0 || ^0.89.0 || ^0.90.0 || ^0.91.0 || ^0.93.0 || ^0.94.0 || ^0.97.0 || ^0.98.0", + "@graphql-tools/delegate": "^9.0.32 || ^10.0.0", + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/graphql": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/graphql/-/graphql-0.98.5.tgz", + "integrity": "sha512-0ASbWhhRdnFopELrq9/anaHJpN99TK3W5ks5Y7CaWqqJC7Akupmu8T9v5ZASlY0WCRwSOC/59eBnngHk9m/evg==", + "dev": true, + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/federation": "^1.1.35", + "@graphql-tools/url-loader": "^8.0.0", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/store": "^0.98.5", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/store": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/store/-/store-0.98.5.tgz", + "integrity": "sha512-s47ppD8ZaJAmg9HYJbhdWU3bB8+d80QmQk2TYss/tx0ZEhNCDH1xgMn7CkF4f+ejdHT9sAOi3kIhILo53STsOQ==", + "dev": true, + "peer": true, + "dependencies": { + "@graphql-inspector/core": "5.0.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/string-interpolation": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@graphql-mesh/string-interpolation/-/string-interpolation-0.5.4.tgz", + "integrity": "sha512-Luw/AFPcvTBBNr3KC7d9REyAEC8ZS6HUZiGMKOGYp+uviHUjX30loEVMOkLdrVNPN4Qf35k6yt4NpapTXqcl/Q==", + "dev": true, + "dependencies": { + "dayjs": "1.11.11", + "json-pointer": "0.6.2", + "lodash.get": "4.4.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/transform-type-merging": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/transform-type-merging/-/transform-type-merging-0.98.5.tgz", + "integrity": "sha512-1R7wv2qEb9KtXifo0LkGOYCflwPbRXKAjcJtgpVwtRTdqgrbgQECV+lDEwhNBmn0KKC5XbwGtMpdnK/nrgyZqg==", + "dev": true, + "dependencies": { + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/stitching-directives": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/types": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/types/-/types-0.98.5.tgz", + "integrity": "sha512-bFqpSGL6wygPJ97M3rkyvMck4oCIpCeLFapgcgnXzFh0lBebA3VHi+Fs09md8dsTBAvVuY8UFdqHDkniJE2Pdg==", + "dev": true, + "peer": true, + "dependencies": { + "@graphql-tools/batch-delegate": "^9.0.2", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-typed-document-node/core": "^3.2.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/store": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/@graphql-mesh/utils": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/utils/-/utils-0.98.5.tgz", + "integrity": "sha512-QORPwn3AWKIRpDjJWCWlaZTEvV1A71ap9OHgAFfSEYskKVKrhFmGEpMA5K2XKWYvPCpDceMMPo+RI8KANpXodg==", + "dev": true, + "peer": true, + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/delegate": "^10.0.10", + "@whatwg-node/fetch": "^0.9.13", + "dset": "^3.1.2", + "js-yaml": "^4.1.0", + "lodash.get": "^4.4.2", + "lodash.topath": "^4.5.2", + "tiny-lru": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphprotocol/client-cli/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphprotocol/client-polling-live": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@graphprotocol/client-polling-live/-/client-polling-live-2.0.1.tgz", + "integrity": "sha512-jE+9cOM5gAC18uMA7nC7w5X/ru4U4ZrZxWqh3N+gxoLIPpnNYerwzRfFJskPyzl0QQjMiUMua9agqKCyxNBlOA==", + "dev": true, + "dependencies": { + "@repeaterjs/repeater": "^3.0.4", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@envelop/core": "^2.4.2 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "@graphql-tools/merge": "^8.3.14 || ^9.0.0", + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/@graphprotocol/client-polling-live/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/core": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-4.0.2.tgz", + "integrity": "sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.3", + "@graphql-tools/schema": "^10.0.0", + "@graphql-tools/utils": "^10.0.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/plugin-helpers": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.0.4.tgz", + "integrity": "sha512-MOIuHFNWUnFnqVmiXtrI+4UziMTYrcquljaI5f/T/Bc7oO7sXcfkAvgkNWEEi9xWreYwvuer3VHCuPI/lAFWbw==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.0", + "change-case-all": "1.0.15", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/plugin-helpers/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/schema-ast": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-4.0.2.tgz", + "integrity": "sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.3", + "@graphql-tools/utils": "^10.0.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/schema-ast/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/typed-document-node": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-5.0.7.tgz", + "integrity": "sha512-rgFh96hAbNwPUxLVlRcNhGaw2+y7ZGx7giuETtdO8XzPasTQGWGRkZ3wXQ5UUiTX4X3eLmjnuoXYKT7HoxSznQ==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/visitor-plugin-common": "5.2.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.15", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typed-document-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript/-/typescript-4.0.7.tgz", + "integrity": "sha512-Gn+JNvQBJhBqH7s83piAJ6UeU/MTj9GXWFO9bdbl8PMLCAM1uFAtg04iHfkGCtDKXcUg5a3Dt/SZG85uk5KuhA==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/schema-ast": "^4.0.2", + "@graphql-codegen/visitor-plugin-common": "5.2.0", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-generic-sdk/-/typescript-generic-sdk-3.1.0.tgz", + "integrity": "sha512-nQZi/YGRI1+qCZZsh0V5nz6+hCHSN4OU9tKyOTDsEPyDFnGEukDuRdCH2IZasGn22a3Iu5TUDkgp5w9wEQwGmg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^3.0.0", + "@graphql-codegen/visitor-plugin-common": "2.13.1", + "auto-bind": "~4.0.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", + "graphql-tag": "^2.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-codegen/plugin-helpers": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-3.1.2.tgz", + "integrity": "sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^9.0.0", + "change-case-all": "1.0.15", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.13.1.tgz", + "integrity": "sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^2.7.2", + "@graphql-tools/optimize": "^1.3.0", + "@graphql-tools/relay-operation-optimizer": "^6.5.0", + "@graphql-tools/utils": "^8.8.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.14", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-codegen/plugin-helpers": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.7.2.tgz", + "integrity": "sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^8.8.0", + "change-case-all": "1.0.14", + "common-tags": "1.8.2", + "import-from": "4.0.0", + "lodash": "~4.17.0", + "tslib": "~2.4.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { + "version": "8.13.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.13.1.tgz", + "integrity": "sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-codegen/visitor-plugin-common/node_modules/change-case-all": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.14.tgz", + "integrity": "sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-tools/optimize": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-1.4.0.tgz", + "integrity": "sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "6.5.18", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz", + "integrity": "sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==", + "dev": true, + "dependencies": { + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "^9.2.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/@graphql-tools/utils": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", + "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-generic-sdk/node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript-operations": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-operations/-/typescript-operations-4.2.1.tgz", + "integrity": "sha512-LhEPsaP+AI65zfK2j6CBAL4RT0bJL/rR9oRWlvwtHLX0t7YQr4CP4BXgvvej9brYdedAxHGPWeV1tPHy5/z9KQ==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/typescript": "^4.0.7", + "@graphql-codegen/visitor-plugin-common": "5.2.0", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-operations/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript-resolvers": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/typescript-resolvers/-/typescript-resolvers-4.1.0.tgz", + "integrity": "sha512-JKosVjsZHaGfXIllWxuPPJ9DsAh72GVuyB+IFU3jNoM2sXuSNJsBVIT0CzpsxZr0rdkpcY6FfG2sS3zpE/TQrQ==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-codegen/typescript": "^4.0.7", + "@graphql-codegen/visitor-plugin-common": "5.2.0", + "@graphql-tools/utils": "^10.0.0", + "auto-bind": "~4.0.0", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/typescript-resolvers/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/typescript/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-codegen/visitor-plugin-common": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.2.0.tgz", + "integrity": "sha512-0p8AwmARaZCAlDFfQu6Sz+JV6SjbPDx3y2nNM7WAAf0au7Im/GpJ7Ke3xaIYBc1b2rTZ+DqSTJI/zomENGD9NA==", + "dev": true, + "dependencies": { + "@graphql-codegen/plugin-helpers": "^5.0.4", + "@graphql-tools/optimize": "^2.0.0", + "@graphql-tools/relay-operation-optimizer": "^7.0.0", + "@graphql-tools/utils": "^10.0.0", + "auto-bind": "~4.0.0", + "change-case-all": "1.0.15", + "dependency-graph": "^0.11.0", + "graphql-tag": "^2.11.0", + "parse-filepath": "^1.0.2", + "tslib": "~2.6.0" + }, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-inspector/core": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@graphql-inspector/core/-/core-5.0.2.tgz", + "integrity": "sha512-pXHPCggwLmgi5NACPPV4qyf2xW/sQONnu6ZqCAid3k/S2APmVYN4Z3OvxvLA12NFhzby5Sz5K4fRsId43cK8ww==", + "dev": true, + "dependencies": { + "dependency-graph": "0.11.0", + "object-inspect": "1.12.3", + "tslib": "2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@graphql-inspector/core/node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@graphql-inspector/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-mesh/cli": { + "version": "0.90.7", + "resolved": "https://registry.npmjs.org/@graphql-mesh/cli/-/cli-0.90.7.tgz", + "integrity": "sha512-weggi0zHIs97bH75WfG8w2X0AA1zTJ+zYzFxTRjgYBr/yMO22i/5LQxPt66BkvfWmB4PYrl/B/GOrOKz13fGuw==", + "dev": true, + "dependencies": { + "@graphql-codegen/core": "^4.0.0", + "@graphql-codegen/typed-document-node": "^5.0.0", + "@graphql-codegen/typescript": "^4.0.0", + "@graphql-codegen/typescript-generic-sdk": "^3.1.0", + "@graphql-codegen/typescript-operations": "^4.0.0", + "@graphql-codegen/typescript-resolvers": "^4.0.0", + "@graphql-mesh/config": "^0.100.6", + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/http": "^0.99.6", + "@graphql-mesh/runtime": "^0.99.6", + "@graphql-mesh/store": "^0.98.5", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "ajv": "^8.12.0", + "change-case": "^4.1.2", + "cosmiconfig": "^9.0.0", + "dotenv": "^16.0.3", + "graphql-import-node": "^0.0.5", + "graphql-ws": "^5.12.1", + "json-bigint-patch": "^0.0.8", + "json5": "^2.2.3", + "mkdirp": "^3.0.0", + "open": "^7.4.2", + "pascal-case": "^3.1.2", + "rimraf": "^5.0.0", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "tslib": "^2.4.0", + "typescript": "^5.4.2", + "ws": "^8.17.0", + "yargs": "^17.7.1" + }, + "bin": { + "gql-mesh": "cjs/bin.js", + "graphql-mesh": "cjs/bin.js", + "graphql-mesh-esm": "esm/bin.js", + "mesh": "cjs/bin.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "node-libcurl": "^4.0.0", + "uWebSockets.js": "uNetworking/uWebSockets.js#semver:^20" + }, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/cache-localforage": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/cache-localforage/-/cache-localforage-0.98.5.tgz", + "integrity": "sha512-l6xTDaKhso9Ip7EXbDvjLAyZ5WyBQL1eSBMQhZiuCUNDdzREdvvI3QWocotcrOB6X2uNChHKTn5X39g0U33cVA==", + "dev": true, + "dependencies": { + "localforage": "1.10.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/config": { + "version": "0.100.6", + "resolved": "https://registry.npmjs.org/@graphql-mesh/config/-/config-0.100.6.tgz", + "integrity": "sha512-G1UQgncN9NVFsXU0fiNu5Nv+hWfqKqZaYJaEp5GygieaqW8e245DdDbcIe9wCYIN1fJW+LVTFTsc2cSv2LreTw==", + "dev": true, + "dependencies": { + "@envelop/core": "^5.0.0", + "@graphql-mesh/cache-localforage": "^0.98.5", + "@graphql-mesh/merger-bare": "^0.98.5", + "@graphql-mesh/merger-stitching": "^0.98.5", + "@graphql-tools/code-file-loader": "^8.0.0", + "@graphql-tools/graphql-file-loader": "^8.0.0", + "@graphql-tools/load": "^8.0.0", + "@graphql-yoga/plugin-persisted-operations": "^3.0.0", + "@whatwg-node/fetch": "^0.9.0", + "camel-case": "^4.1.2", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/runtime": "^0.99.6", + "@graphql-mesh/store": "^0.98.5", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/http": { + "version": "0.99.6", + "resolved": "https://registry.npmjs.org/@graphql-mesh/http/-/http-0.99.6.tgz", + "integrity": "sha512-ri04myE7MHG0QC41mRs7O82R+rKhgaDq2p1VvigsO68h9KqLWM/4vmNeqec3500ohzFkj0a+z802Y5IX/wCs0A==", + "dev": true, + "dependencies": { + "@whatwg-node/server": "^0.9.34", + "graphql-yoga": "^5.3.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/runtime": "^0.99.6", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/merger-bare": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/merger-bare/-/merger-bare-0.98.5.tgz", + "integrity": "sha512-396fie/iQd0imlvn0K96WTAGOgkMMI05vcIJFwgejH8uKFFVo6Uei2/o1uRTAipZ3sdLpoj6w4r9FyfeBP05Xw==", + "dev": true, + "dependencies": { + "@graphql-mesh/merger-stitching": "0.98.5", + "@graphql-tools/schema": "10.0.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/merger-stitching": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/merger-stitching/-/merger-stitching-0.98.5.tgz", + "integrity": "sha512-tRoZNtOJ274+3Uhrxy5OGorlYzdj0kflmwNokSP6wcwqQ3pumnDFLF5+SDNLIEFs9Qs20AjnnwygOYTo1a0dDw==", + "dev": true, + "dependencies": { + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/schema": "^10.0.0", + "@graphql-tools/stitch": "^9.2.8" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/store": "^0.98.5", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/runtime": { + "version": "0.99.6", + "resolved": "https://registry.npmjs.org/@graphql-mesh/runtime/-/runtime-0.99.6.tgz", + "integrity": "sha512-FTAKodwV3nVL+KZ9yxoN/fv+7/ybvF93LIQA0t0nNz9D2i0x6xFvSYoPjAlIb7SVo6IhAY/w57dBBUB98hTijQ==", + "dev": true, + "dependencies": { + "@envelop/core": "^5.0.0", + "@envelop/extended-validation": "^4.0.0", + "@envelop/graphql-jit": "^8.0.0", + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/batch-delegate": "^9.0.2", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/executor": "^1.2.0", + "@graphql-tools/wrap": "^10.0.5", + "@whatwg-node/fetch": "^0.9.0", + "graphql-jit": "0.8.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/store": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/store/-/store-0.98.5.tgz", + "integrity": "sha512-s47ppD8ZaJAmg9HYJbhdWU3bB8+d80QmQk2TYss/tx0ZEhNCDH1xgMn7CkF4f+ejdHT9sAOi3kIhILo53STsOQ==", + "dev": true, + "dependencies": { + "@graphql-inspector/core": "5.0.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/string-interpolation": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@graphql-mesh/string-interpolation/-/string-interpolation-0.5.4.tgz", + "integrity": "sha512-Luw/AFPcvTBBNr3KC7d9REyAEC8ZS6HUZiGMKOGYp+uviHUjX30loEVMOkLdrVNPN4Qf35k6yt4NpapTXqcl/Q==", + "dev": true, + "dependencies": { + "dayjs": "1.11.11", + "json-pointer": "0.6.2", + "lodash.get": "4.4.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/types": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/types/-/types-0.98.5.tgz", + "integrity": "sha512-bFqpSGL6wygPJ97M3rkyvMck4oCIpCeLFapgcgnXzFh0lBebA3VHi+Fs09md8dsTBAvVuY8UFdqHDkniJE2Pdg==", + "dev": true, + "dependencies": { + "@graphql-tools/batch-delegate": "^9.0.2", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-typed-document-node/core": "^3.2.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/store": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/@graphql-mesh/utils": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/utils/-/utils-0.98.5.tgz", + "integrity": "sha512-QORPwn3AWKIRpDjJWCWlaZTEvV1A71ap9OHgAFfSEYskKVKrhFmGEpMA5K2XKWYvPCpDceMMPo+RI8KANpXodg==", + "dev": true, + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/delegate": "^10.0.10", + "@whatwg-node/fetch": "^0.9.13", + "dset": "^3.1.2", + "js-yaml": "^4.1.0", + "lodash.get": "^4.4.2", + "lodash.topath": "^4.5.2", + "tiny-lru": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@graphql-mesh/cli/node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@graphql-mesh/cli/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/rimraf": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.7.tgz", + "integrity": "sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-mesh/cli/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "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 + } + } + }, + "node_modules/@graphql-mesh/cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-mesh/cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@graphql-mesh/cross-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@graphql-mesh/cross-helpers/-/cross-helpers-0.4.2.tgz", + "integrity": "sha512-rx/fWJ6Cgdp6w+dnxm6uVMrtJamjZT2SbNprEJnaSgThbm6EzLYSVGZzfALlXNCr3dUT5fOtnTu+JFWvWZxjcg==", + "dev": true, + "dependencies": { + "path-browserify": "1.0.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-tools/utils": "^10.2.0", + "graphql": "*" + } + }, + "node_modules/@graphql-mesh/fusion-runtime": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@graphql-mesh/fusion-runtime/-/fusion-runtime-0.3.6.tgz", + "integrity": "sha512-CwGxYUaFC5odY61Za73oH9VQrT2GK5f60tG/vh1JXrd+7lqaHv+y7T99kTxD2kV2VNULAei9g3OBvTlsQV5lGg==", + "dev": true, + "dependencies": { + "@graphql-mesh/runtime": "^0.99.6", + "@graphql-mesh/transport-common": "^0.2.5", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/stitch": "^9.2.8", + "@graphql-tools/stitching-directives": "^3.0.2", + "@graphql-tools/utils": "^10.2.0", + "@graphql-tools/wrap": "^10.0.5", + "graphql-yoga": "^5.3.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/runtime": { + "version": "0.99.6", + "resolved": "https://registry.npmjs.org/@graphql-mesh/runtime/-/runtime-0.99.6.tgz", + "integrity": "sha512-FTAKodwV3nVL+KZ9yxoN/fv+7/ybvF93LIQA0t0nNz9D2i0x6xFvSYoPjAlIb7SVo6IhAY/w57dBBUB98hTijQ==", + "dev": true, "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "@envelop/core": "^5.0.0", + "@envelop/extended-validation": "^4.0.0", + "@envelop/graphql-jit": "^8.0.0", + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/batch-delegate": "^9.0.2", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/executor": "^1.2.0", + "@graphql-tools/wrap": "^10.0.5", + "@whatwg-node/fetch": "^0.9.0", + "graphql-jit": "0.8.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/store": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/store/-/store-0.98.5.tgz", + "integrity": "sha512-s47ppD8ZaJAmg9HYJbhdWU3bB8+d80QmQk2TYss/tx0ZEhNCDH1xgMn7CkF4f+ejdHT9sAOi3kIhILo53STsOQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "peer": true, "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@graphql-inspector/core": "5.0.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-mesh/utils": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/string-interpolation": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@graphql-mesh/string-interpolation/-/string-interpolation-0.5.4.tgz", + "integrity": "sha512-Luw/AFPcvTBBNr3KC7d9REyAEC8ZS6HUZiGMKOGYp+uviHUjX30loEVMOkLdrVNPN4Qf35k6yt4NpapTXqcl/Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "dayjs": "1.11.11", + "json-pointer": "0.6.2", + "lodash.get": "4.4.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/transport-common": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/transport-common/-/transport-common-0.2.5.tgz", + "integrity": "sha512-pWRz7bQSG5E7UvbU2mB9FKePHx9e/TVhfaUdP36vw3Usp1GinuPOTOkCuVYJRyyNfJg8/LTtLL3ksVKMAUt0NA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/utils": "^10.2.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.98.5", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/types": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/types/-/types-0.98.5.tgz", + "integrity": "sha512-bFqpSGL6wygPJ97M3rkyvMck4oCIpCeLFapgcgnXzFh0lBebA3VHi+Fs09md8dsTBAvVuY8UFdqHDkniJE2Pdg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@graphql-tools/batch-delegate": "^9.0.2", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-typed-document-node/core": "^3.2.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/store": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "node_modules/@graphql-mesh/fusion-runtime/node_modules/@graphql-mesh/utils": { + "version": "0.98.5", + "resolved": "https://registry.npmjs.org/@graphql-mesh/utils/-/utils-0.98.5.tgz", + "integrity": "sha512-QORPwn3AWKIRpDjJWCWlaZTEvV1A71ap9OHgAFfSEYskKVKrhFmGEpMA5K2XKWYvPCpDceMMPo+RI8KANpXodg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.4", + "@graphql-tools/delegate": "^10.0.10", + "@whatwg-node/fetch": "^0.9.13", + "dset": "^3.1.2", + "js-yaml": "^4.1.0", + "lodash.get": "^4.4.2", + "lodash.topath": "^4.5.2", + "tiny-lru": "^11.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.2", + "@graphql-mesh/types": "^0.98.5", + "@graphql-tools/utils": "^10.2.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@graphql-mesh/fusion-runtime/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/batch-delegate": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-delegate/-/batch-delegate-9.0.2.tgz", + "integrity": "sha512-LMnHPO5vYSYGo0uFfkwJ91F9VWIRRMQGBt/Ff6E/YFnrHhE49711t0uyPlar511EytwpXxq3rGavXxX6bKy31A==", + "dev": true, + "dependencies": { + "@graphql-tools/delegate": "^10.0.4", + "@graphql-tools/utils": "^10.0.13", + "dataloader": "2.2.2", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/batch-delegate/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/batch-execute": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz", + "integrity": "sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.13", + "dataloader": "^2.2.2", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/batch-execute/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/code-file-loader": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.2.tgz", + "integrity": "sha512-GrLzwl1QV2PT4X4TEEfuTmZYzIZHLqoTGBjczdUzSqgCCcqwWzLB3qrJxFQfI8e5s1qZ1bhpsO9NoMn7tvpmyA==", + "dev": true, + "dependencies": { + "@graphql-tools/graphql-tag-pluck": "8.3.1", + "@graphql-tools/utils": "^10.0.13", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/code-file-loader/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/delegate": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.10.tgz", + "integrity": "sha512-OOqsPRfGatQG0qMKG3sxtxHiRg7cA6OWMTuETDvwZCoOuxqCc17K+nt8GvaqptNJi2/wBgeH7pi7wA5QzgiG1g==", + "dev": true, + "dependencies": { + "@graphql-tools/batch-execute": "^9.0.4", + "@graphql-tools/executor": "^1.2.1", + "@graphql-tools/schema": "^10.0.3", + "@graphql-tools/utils": "^10.0.13", + "dataloader": "^2.2.2", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/delegate/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/executor": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.2.6.tgz", + "integrity": "sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.1.1", + "@graphql-typed-document-node/core": "3.2.0", + "@repeaterjs/repeater": "^3.0.4", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-graphql-ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.2.tgz", + "integrity": "sha512-+9ZK0rychTH1LUv4iZqJ4ESbmULJMTsv3XlFooPUngpxZkk00q6LqHKJRrsLErmQrVaC7cwQCaRBJa0teK17Lg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.13", + "@types/ws": "^8.0.0", + "graphql-ws": "^5.14.0", + "isomorphic-ws": "^5.0.0", + "tslib": "^2.4.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-graphql-ws/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/executor-graphql-ws/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "utf-8-validate": { + "optional": true } - ], + } + }, + "node_modules/@graphql-tools/executor-http": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.9.tgz", + "integrity": "sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==", + "dev": true, "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@graphql-tools/utils": "^10.0.13", + "@repeaterjs/repeater": "^3.0.4", + "@whatwg-node/fetch": "^0.9.0", + "extract-files": "^11.0.0", + "meros": "^1.2.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/executor-http/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/executor-legacy-ws": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.6.tgz", + "integrity": "sha512-lDSxz9VyyquOrvSuCCnld3256Hmd+QI2lkmkEv7d4mdzkxkK4ddAWW1geQiWrQvWmdsmcnGGlZ7gDGbhEExwqg==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.13", + "@types/ws": "^8.0.0", + "isomorphic-ws": "^5.0.0", + "tslib": "^2.4.0", + "ws": "^8.15.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "node_modules/@graphql-tools/executor-legacy-ws/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/executor-legacy-ws/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "utf-8-validate": { + "optional": true } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" } }, - "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "node_modules/@graphql-tools/executor/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "node_modules/@graphql-tools/federation": { + "version": "1.1.35", + "resolved": "https://registry.npmjs.org/@graphql-tools/federation/-/federation-1.1.35.tgz", + "integrity": "sha512-40qvVaYI7Wf/pdv1GhznyXBW/3BS7ogJBPLbLaaz7mqmaHzSGCGpW3buOxUwnbvG3r0eMz/sOiCyw3JpP8BisQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/executor-http": "^1.0.9", + "@graphql-tools/merge": "^9.0.3", + "@graphql-tools/schema": "^10.0.3", + "@graphql-tools/stitch": "^9.2.8", + "@graphql-tools/utils": "^10.1.1", + "@graphql-tools/wrap": "^10.0.3", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "@apollo/client": "~3.2.5 || ~3.3.0 || ~3.4.0 || ~3.5.0 || ~3.6.0 || ~3.7.0 || ~3.8.0 || ~3.9.0 || ~3.10.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] + "node_modules/@graphql-tools/federation/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "node_modules/@graphql-tools/graphql-file-loader": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.1.tgz", + "integrity": "sha512-7gswMqWBabTSmqbaNyWSmRRpStWlcCkBc73E6NZNlh4YNuiyKOwbvSkOUYFOqFMfEL+cFsXgAvr87Vz4XrYSbA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@graphql-tools/import": "7.0.1", + "@graphql-tools/utils": "^10.0.13", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "node_modules/@graphql-tools/graphql-file-loader/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/graphql-tag-pluck": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.1.tgz", + "integrity": "sha512-ujits9tMqtWQQq4FI4+qnVPpJvSEn7ogKtyN/gfNT+ErIn6z1e4gyVGQpTK5sgAUXq1lW4gU/5fkFFC5/sL2rQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "@babel/core": "^7.22.9", + "@babel/parser": "^7.16.8", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8", + "@graphql-tools/utils": "^10.0.13", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/import": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.0.1.tgz", + "integrity": "sha512-935uAjAS8UAeXThqHfYVr4HEAp6nHJ2sximZKO1RzUTq5WoALMAhhGARl0+ecm6X+cqNUwIChJbjtaa6P/ML0w==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@graphql-tools/utils": "^10.0.13", + "resolve-from": "5.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "node_modules/@graphql-tools/import/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@graphql-tools/import/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/load": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.0.2.tgz", + "integrity": "sha512-S+E/cmyVmJ3CuCNfDuNF2EyovTwdWfQScXv/2gmvJOti2rGD8jTt9GYVzXaxhblLivQR9sBUCNZu/w7j7aXUCA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "@graphql-tools/schema": "^10.0.3", + "@graphql-tools/utils": "^10.0.13", + "p-limit": "3.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "node_modules/@graphql-tools/load/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/merge": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.4.tgz", + "integrity": "sha512-MivbDLUQ+4Q8G/Hp/9V72hbn810IJDEZQ57F01sHnlrrijyadibfVhaQfW/pNH+9T/l8ySZpaR/DpL5i+ruZ+g==", "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.13", + "tslib": "^2.4.0" + }, "engines": { - "node": ">=8.3.0" + "node": ">=16.0.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/merge/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/optimize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-2.0.0.tgz", + "integrity": "sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "node_modules/@graphql-tools/optimize/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/relay-operation-optimizer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.1.tgz", + "integrity": "sha512-y0ZrQ/iyqWZlsS/xrJfSir3TbVYJTYmMOu4TaSz6F4FRDTQ3ie43BlKkhf04rC28pnUOS4BO9pDcAo1D30l5+A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@ardatan/relay-compiler": "12.0.0", + "@graphql-tools/utils": "^10.0.13", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/schema": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.3.tgz", + "integrity": "sha512-p28Oh9EcOna6i0yLaCFOnkcBDQECVf3SCexT6ktb86QNj9idnkhI+tCxnwZDh58Qvjd2nURdkbevvoZkvxzCog==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@graphql-tools/merge": "^9.0.3", + "@graphql-tools/utils": "^10.0.13", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "node_modules/@graphql-tools/schema/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/stitch": { + "version": "9.2.8", + "resolved": "https://registry.npmjs.org/@graphql-tools/stitch/-/stitch-9.2.8.tgz", + "integrity": "sha512-xIENcmTw8dfMTslcplxBDshWi2LjFWtih2dG3rfhMGaj3iaWMM8JMbBB8nND7Jhm+fxfnGG7MuxOO9nqWtTuow==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" + "@graphql-tools/batch-delegate": "^9.0.1", + "@graphql-tools/delegate": "^10.0.10", + "@graphql-tools/executor": "^1.2.1", + "@graphql-tools/merge": "^9.0.4", + "@graphql-tools/schema": "^10.0.3", + "@graphql-tools/utils": "^10.2.0", + "@graphql-tools/wrap": "^10.0.2", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "node_modules/@graphql-tools/stitch/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/stitching-directives": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/stitching-directives/-/stitching-directives-3.0.2.tgz", + "integrity": "sha512-xZ/gU+p3YKm/asvxiseuyDIS6NL1+LKMhoafqSadxxweDsskSpPrWZfOWGlblVq/w7iikxQhRF2b8+VVgF6Myg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" + "@graphql-tools/delegate": "^10.0.4", + "@graphql-tools/utils": "^10.0.13", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "node_modules/@graphql-tools/stitching-directives/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/url-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.2.tgz", + "integrity": "sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==", + "dev": true, + "dependencies": { + "@ardatan/sync-fetch": "^0.0.1", + "@graphql-tools/delegate": "^10.0.4", + "@graphql-tools/executor-graphql-ws": "^1.1.2", + "@graphql-tools/executor-http": "^1.0.9", + "@graphql-tools/executor-legacy-ws": "^1.0.6", + "@graphql-tools/utils": "^10.0.13", + "@graphql-tools/wrap": "^10.0.2", + "@types/ws": "^8.0.0", + "@whatwg-node/fetch": "^0.9.0", + "isomorphic-ws": "^5.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.11", + "ws": "^8.12.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@graphql-tools/url-loader/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/url-loader/node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" + "utf-8-validate": { + "optional": true } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "node_modules/@graphql-tools/utils": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.2.0.tgz", + "integrity": "sha512-HYV7dO6pNA2nGKawygaBpk8y+vXOUjjzzO43W/Kb7EPRmXUEQKjHxPYRvQbiF72u1N3XxwGK5jnnFk9WVhUwYw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@graphql-typed-document-node/core": "^3.1.1", + "cross-inspect": "1.0.0", + "dset": "^3.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "node_modules/@graphql-tools/utils/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-tools/wrap": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.5.tgz", + "integrity": "sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@graphql-tools/delegate": "^10.0.4", + "@graphql-tools/schema": "^10.0.3", + "@graphql-tools/utils": "^10.1.1", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "node_modules/@graphql-tools/wrap/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "node_modules/@graphql-yoga/logger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/logger/-/logger-2.0.0.tgz", + "integrity": "sha512-Mg8psdkAp+YTG1OGmvU+xa6xpsAmSir0hhr3yFYPyLNwzUj95DdIwsMpKadDj9xDpYgJcH3Hp/4JMal9DhQimA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "tslib": "^2.5.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "node_modules/@graphql-yoga/logger/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-yoga/plugin-persisted-operations": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@graphql-yoga/plugin-persisted-operations/-/plugin-persisted-operations-3.3.1.tgz", + "integrity": "sha512-2FteUIepgAZL5q2JSPbTFozba4T6v34skb6I7FiqZp7XwNnp8Da9Jf5BpcwUb4buP51FzbO5WJW1UMyNptxuOA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@graphql-tools/utils": "^10.0.0", + "graphql": "^15.2.0 || ^16.0.0", + "graphql-yoga": "^5.3.1" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "node_modules/@graphql-yoga/subscription": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/subscription/-/subscription-5.0.0.tgz", + "integrity": "sha512-Ri7sK8hmxd/kwaEa0YT8uqQUb2wOLsmBMxI90QDyf96lzOMJRgBuNYoEkU1pSgsgmW2glceZ96sRYfaXqwVxUw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@graphql-yoga/typed-event-target": "^3.0.0", + "@repeaterjs/repeater": "^3.0.4", + "@whatwg-node/events": "^0.1.0", + "tslib": "^2.5.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "node_modules/@graphql-yoga/subscription/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@graphql-yoga/typed-event-target": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@graphql-yoga/typed-event-target/-/typed-event-target-3.0.0.tgz", + "integrity": "sha512-w+liuBySifrstuHbFrHoHAEyVnDFVib+073q8AeAJ/qqJfvFvAwUPLLtNohR/WDVRgSasfXtl3dcNuVJWN+rjg==", "dev": true, + "dependencies": { + "@repeaterjs/repeater": "^3.0.4", + "tslib": "^2.5.2" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, + "node_modules/@graphql-yoga/typed-event-target/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", @@ -1200,12 +4419,140 @@ "@iden3/js-crypto": "1.1.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "engines": { "node": ">=6.0.0" } @@ -1214,20 +4561,125 @@ "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@kamilkisiela/fast-url-parser": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz", + "integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@metamask/eth-sig-util": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", @@ -1279,7 +4731,6 @@ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dev": true, - "peer": true, "dependencies": { "@noble/hashes": "1.3.2" }, @@ -1974,11 +5425,91 @@ ], "dev": true, "optional": true, - "os": [ - "win32" - ], + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "optional": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 10" + "node": ">=10" } }, "node_modules/@openzeppelin/contracts": { @@ -2175,6 +5706,16 @@ "node": ">=16" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/core": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", @@ -2240,6 +5781,12 @@ "prettier": "^3.0.0" } }, + "node_modules/@repeaterjs/repeater": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.6.tgz", + "integrity": "sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==", + "dev": true + }, "node_modules/@scure/base": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", @@ -2458,29 +6005,25 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@typechain/ethers-v6": { "version": "0.5.1", @@ -2760,166 +6303,606 @@ "@typescript-eslint/visitor-keys": "7.7.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.7.1", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "node_modules/@verax-attestation-registry/verax-sdk": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@verax-attestation-registry/verax-sdk/-/verax-sdk-1.6.0.tgz", + "integrity": "sha512-Y3sgKtxU7vnShfuXmBJ8Yo3S9MhSMQ4Pv+ifk2WqgjBr7CBFJ3ztA9hU9d6kBJRnKOYoEll5LU8XsGlaLPFzKg==", + "dev": true, + "dependencies": { + "@graphprotocol/client-cli": "^3.0.0", + "@graphql-mesh/cache-localforage": "^0.95.8", + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/graphql": "^0.95.8", + "@graphql-mesh/http": "^0.96.14", + "@graphql-mesh/merger-bare": "^0.95.8", + "@graphql-mesh/runtime": "^0.96.13", + "@graphql-mesh/store": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@whatwg-node/fetch": "^0.9.14", + "axios": "^1.6.1", + "dotenv": "^16.3.1", + "graphql": "^16.8.1", + "viem": "^2.9.26" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-inspector/core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@graphql-inspector/core/-/core-5.0.1.tgz", + "integrity": "sha512-1CWfFYucnRdULGiN1NDSinlNlpucBT+0x4i4AIthKe5n5jD9RIVyJtkA8zBbujUFrP++YE3l+TQifwbN1yTQsw==", + "dev": true, + "dependencies": { + "dependency-graph": "0.11.0", + "object-inspect": "1.12.3", + "tslib": "2.6.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-inspector/core/node_modules/tslib": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", + "dev": true + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/cache-localforage": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/cache-localforage/-/cache-localforage-0.95.8.tgz", + "integrity": "sha512-PgCTHh1dLwjmusWEWAMQkglL7gR8VyyT9pzTcYBVFhGYNXysepCrl85QtaqtEMnR/YijgpCWaKGIYK+bosQZsg==", + "dev": true, + "dependencies": { + "localforage": "1.10.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/graphql": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/graphql/-/graphql-0.95.8.tgz", + "integrity": "sha512-mEbz2XYSgRTdNidUBWB7FT3QzLliJwxJIoqipSbZNputJqSbUZZ6QD/oI1IrdPXqVl/ELE2CuLiogkOSO24C1Q==", + "dev": true, + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.3", + "@graphql-tools/delegate": "^10.0.0", + "@graphql-tools/federation": "^1.1.0", + "@graphql-tools/url-loader": "^8.0.0", + "lodash.get": "^4.4.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/store": "^0.95.8", + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/http": { + "version": "0.96.14", + "resolved": "https://registry.npmjs.org/@graphql-mesh/http/-/http-0.96.14.tgz", + "integrity": "sha512-38Mxw2K2RABBBO0IiXKZDu2o+jlM4vcUSEg+9h2Dz67oOJZHpKeId6z1PFb7uYMzAs29yoMcqXIEnews+HVhrQ==", + "dev": true, + "dependencies": { + "@whatwg-node/server": "^0.9.0", + "graphql-yoga": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/runtime": "^0.96.13", + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/merger-bare": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/merger-bare/-/merger-bare-0.95.8.tgz", + "integrity": "sha512-E5R8Sv5Dkp+eswYKEDHgu8puwSeolPX1j9IHwBVe1npRRCXc3CjMsQJ9+kcTln453vbSBcM1a3fQspIaKA1Tcg==", + "dev": true, + "dependencies": { + "@graphql-mesh/merger-stitching": "0.95.8", + "@graphql-tools/schema": "10.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/merger-stitching": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/merger-stitching/-/merger-stitching-0.95.8.tgz", + "integrity": "sha512-eAukU8AsjK8jIT3vFhalGoERh98xZgzKkTCQL7w2wPpFXveSDMn+9fVvCJ1EBKTsLa7SkNXqzAFkfYp21hW0ng==", + "dev": true, + "dependencies": { + "@graphql-tools/delegate": "^10.0.0", + "@graphql-tools/schema": "^10.0.0", + "@graphql-tools/stitch": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/store": "^0.95.8", + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/runtime": { + "version": "0.96.13", + "resolved": "https://registry.npmjs.org/@graphql-mesh/runtime/-/runtime-0.96.13.tgz", + "integrity": "sha512-eZIW/gdEVLvCLEEae8e3lny7d89CFfDyu0Z0xu4yVEdYeVpG9Ki2mDYFHztusIIkZikecvdsoM9MZX6LYcPOkg==", + "dev": true, + "dependencies": { + "@envelop/core": "^5.0.0", + "@envelop/extended-validation": "^4.0.0", + "@envelop/graphql-jit": "^8.0.0", + "@graphql-mesh/string-interpolation": "^0.5.3", + "@graphql-tools/batch-delegate": "^9.0.0", + "@graphql-tools/delegate": "^10.0.0", + "@graphql-tools/executor": "^1.2.0", + "@graphql-tools/wrap": "^10.0.0", + "@whatwg-node/fetch": "^0.9.0", + "graphql-jit": "0.8.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/store": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/store/-/store-0.95.8.tgz", + "integrity": "sha512-29lpMcvqS1DM9alUOCyj6he2V7ZzG/DZxkerRefT8Mo5FexwJZI3LeI0YHNSY9Cq0x8KzRoH1TWcTTN/1PDRRw==", + "dev": true, + "dependencies": { + "@graphql-inspector/core": "5.0.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/types": "^0.95.8", + "@graphql-mesh/utils": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/string-interpolation": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@graphql-mesh/string-interpolation/-/string-interpolation-0.5.4.tgz", + "integrity": "sha512-Luw/AFPcvTBBNr3KC7d9REyAEC8ZS6HUZiGMKOGYp+uviHUjX30loEVMOkLdrVNPN4Qf35k6yt4NpapTXqcl/Q==", + "dev": true, + "dependencies": { + "dayjs": "1.11.11", + "json-pointer": "0.6.2", + "lodash.get": "4.4.2" + }, + "engines": { + "node": ">=16.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", - "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/types": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/types/-/types-0.95.8.tgz", + "integrity": "sha512-H2xh5KGc3+Ly3VdAPnRdKTibZpW9zEFgUzsozL9MQhCs6WLX+/kOADb0uIDqYFKX5c/2axmcy87BFNOausXYig==", "dev": true, + "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/utils": "7.7.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "@graphql-tools/batch-delegate": "^9.0.0", + "@graphql-tools/delegate": "^10.0.0", + "@graphql-typed-document-node/core": "^3.2.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=16.0.0" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@graphql-mesh/store": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", - "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-mesh/utils": { + "version": "0.95.8", + "resolved": "https://registry.npmjs.org/@graphql-mesh/utils/-/utils-0.95.8.tgz", + "integrity": "sha512-gH2/kXvxMHVWMX8DppIIZpFfSUaoKDJ6eQHFoAAsdabGE+vLtVk0OEYqMGVGtD/8ZDFa/P6CmwXc6hBzoLY6Kg==", "dev": true, + "dependencies": { + "@graphql-mesh/string-interpolation": "^0.5.3", + "@graphql-tools/delegate": "^10.0.0", + "@whatwg-node/fetch": "^0.9.13", + "dset": "^3.1.2", + "js-yaml": "^4.1.0", + "lodash.get": "^4.4.2", + "lodash.topath": "^4.5.2", + "tiny-lru": "^11.0.0" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "@graphql-mesh/cross-helpers": "^0.4.1", + "@graphql-mesh/types": "^0.95.8", + "@graphql-tools/utils": "^9.2.1 || ^10.0.0", + "graphql": "*", + "tslib": "^2.4.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", - "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/@graphql-tools/schema": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.0.tgz", + "integrity": "sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@graphql-tools/merge": "^9.0.0", + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.4.0", + "value-or-promise": "^1.0.12" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16.0.0" }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "node_modules/@verax-attestation-registry/verax-sdk/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@whatwg-node/events": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz", + "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@whatwg-node/fetch": { + "version": "0.9.17", + "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz", + "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@whatwg-node/node-fetch": "^0.5.7", + "urlpattern-polyfill": "^10.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", - "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", + "node_modules/@whatwg-node/node-fetch": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.11.tgz", + "integrity": "sha512-LS8tSomZa3YHnntpWt3PP43iFEEl6YeIsvDakczHBKlay5LdkXFr8w7v8H6akpG5nRrzydyB0k1iE2eoL6aKIQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "semver": "^7.6.0" + "@kamilkisiela/fast-url-parser": "^1.1.4", + "@whatwg-node/events": "^0.1.0", + "busboy": "^1.6.0", + "fast-querystring": "^1.1.1", + "tslib": "^2.3.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=16.0.0" + } + }, + "node_modules/@whatwg-node/node-fetch/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@whatwg-node/server": { + "version": "0.9.34", + "resolved": "https://registry.npmjs.org/@whatwg-node/server/-/server-0.9.34.tgz", + "integrity": "sha512-1sHRjqUtZIyTR2m2dS/dJpzS5OcNDpPuUSVDa2PoEgzYVKr4GsqJaYtRaEXXFohvvyh6PkouYCc1rE7jMDWVCA==", + "dev": true, + "dependencies": { + "@whatwg-node/fetch": "^0.9.17", + "tslib": "^2.3.1" }, - "peerDependencies": { - "eslint": "^8.56.0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "node_modules/@whatwg-node/server/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@wry/caches": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", "dev": true, + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" + "tslib": "^2.3.0" }, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/@wry/caches/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, + "node_modules/@wry/context": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.3.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", - "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", + "node_modules/@wry/context/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, + "node_modules/@wry/equality": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", "dev": true, + "optional": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "eslint-visitor-keys": "^3.4.3" + "tslib": "^2.3.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" + } + }, + "node_modules/@wry/equality/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, + "node_modules/@wry/trie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.3.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=8" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "node_modules/@wry/trie/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true, - "peer": true + "optional": true }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true, - "peer": true + "dev": true }, "node_modules/abitype": { "version": "0.7.1", @@ -2941,7 +6924,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2964,7 +6946,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, - "peer": true, "engines": { "node": ">=0.4.0" } @@ -3026,6 +7007,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/amazon-cognito-identity-js": { "version": "6.3.12", "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz", @@ -3148,12 +7168,29 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz", + "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/argparse": { "version": "2.0.1", @@ -3252,8 +7289,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "peer": true + "dev": true }, "node_modules/assertion-error": { "version": "1.1.0", @@ -3311,6 +7347,18 @@ "node": ">= 4.0.0" } }, + "node_modules/auto-bind": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz", + "integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -3343,6 +7391,50 @@ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", + "dev": true + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dev": true, + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3512,6 +7604,38 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", @@ -3532,6 +7656,15 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, "node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -3555,6 +7688,18 @@ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", "dev": true }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -3564,6 +7709,63 @@ "node": ">= 0.8" } }, + "node_modules/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dev": true, + "optional": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "optional": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -3619,6 +7821,22 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camel-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -3631,6 +7849,43 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001621", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", + "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/capital-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -3698,6 +7953,50 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/change-case-all": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-1.0.15.tgz", + "integrity": "sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==", + "dev": true, + "dependencies": { + "change-case": "^4.1.2", + "is-lower-case": "^2.0.2", + "is-upper-case": "^2.0.2", + "lower-case": "^2.0.2", + "lower-case-first": "^2.0.2", + "sponge-case": "^1.0.1", + "swap-case": "^2.0.2", + "title-case": "^3.0.3", + "upper-case": "^2.0.2", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/change-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -3757,6 +8056,16 @@ "node": ">= 6" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -3947,6 +8256,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -4111,6 +8430,15 @@ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/compare-versions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", @@ -4182,6 +8510,36 @@ "proto-list": "~1.2.1" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, + "node_modules/constant-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", @@ -4267,8 +8625,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/cross-fetch": { "version": "4.0.0", @@ -4279,12 +8636,29 @@ "node-fetch": "^2.6.12" } }, + "node_modules/cross-inspect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.0.tgz", + "integrity": "sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/cross-inspect/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -4355,6 +8729,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dataloader": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", + "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==", + "dev": true + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "dev": true + }, "node_modules/death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", @@ -4447,6 +8833,15 @@ "dev": true, "peer": true }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -4499,6 +8894,13 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -4508,6 +8910,25 @@ "node": ">= 0.8" } }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -4555,6 +8976,22 @@ "node": ">=6.0.0" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/dotenv": { "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", @@ -4573,6 +9010,27 @@ "dev": true, "license": "GPL-3.0" }, + "node_modules/dset": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", + "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.779", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz", + "integrity": "sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==", + "dev": true + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -4600,6 +9058,29 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -4622,6 +9103,13 @@ "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "optional": true + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -5439,12 +9927,37 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true, + "optional": true + }, + "node_modules/extract-files": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", + "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==", + "dev": true, + "engines": { + "node": "^12.20 || >= 14.13" + }, + "funding": { + "url": "https://github.com/sponsors/jaydenseric" + } + }, "node_modules/fast-base64-decode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", "dev": true }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "dev": true + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5491,6 +10004,17 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "node_modules/fast-json-stringify": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-1.21.0.tgz", + "integrity": "sha512-xY6gyjmHN3AK1Y15BCbMpeO9+dea5ePVsp3BouHCdukcx0hOHbXwFhRodhcI0NpZIgDChSeAKkHW9YjKvhwKBA==", + "dev": true, + "dependencies": { + "ajv": "^6.11.0", + "deepmerge": "^4.2.2", + "string-similarity": "^4.0.1" + } + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -5498,6 +10022,21 @@ "dev": true, "peer": true }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "dev": true, + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-uri": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz", + "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==", + "dev": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -5507,6 +10046,54 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true + }, + "node_modules/fbjs/node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, "node_modules/ffjavascript": { "version": "0.2.63", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.63.tgz", @@ -5615,21 +10202,55 @@ } ], "engines": { - "node": ">=4.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "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" + } + }, + "node_modules/foreach": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", + "dev": true + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "is-callable": "^1.1.3" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/forge-std": { @@ -5682,6 +10303,19 @@ "node": ">=12" } }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -5745,6 +10379,58 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.2.tgz", + "integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6110,6 +10796,118 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/graphql": { + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-import-node": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/graphql-import-node/-/graphql-import-node-0.0.5.tgz", + "integrity": "sha512-OXbou9fqh9/Lm7vwXT0XoRN9J5+WCYKnbiTalgFDvkQERITRmcfncZs6aVABedd5B85yQU5EULS4a5pnbpuI0Q==", + "dev": true, + "peerDependencies": { + "graphql": "*" + } + }, + "node_modules/graphql-jit": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/graphql-jit/-/graphql-jit-0.8.2.tgz", + "integrity": "sha512-P9KtM/UY4JTtHVRqRlZzFXPmDEtps1Bd27Mvj/naQIa5d0j83zPxAx4jewq1wueF3UEZu1JFZwX1XVBBkoo1Mg==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "fast-json-stringify": "^1.21.0", + "generate-function": "^2.3.1", + "json-schema": "^0.4.0", + "lodash.memoize": "^4.1.2", + "lodash.merge": "4.6.2", + "lodash.mergewith": "4.6.2" + }, + "peerDependencies": { + "graphql": ">=15" + } + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/graphql-tag/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/graphql-ws": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz", + "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==", + "dev": true, + "workspaces": [ + "website" + ], + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": ">=0.11 <=16" + } + }, + "node_modules/graphql-yoga": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/graphql-yoga/-/graphql-yoga-5.3.1.tgz", + "integrity": "sha512-n918QV6TF7xTjb9ASnozgsr4ydMc08c+x4eRAWKxxWVwSnzdP2xeN2zw1ljIzRD0ccSCNoBajGDKwcZkJDitPA==", + "dev": true, + "dependencies": { + "@envelop/core": "^5.0.0", + "@graphql-tools/executor": "^1.2.5", + "@graphql-tools/schema": "^10.0.0", + "@graphql-tools/utils": "^10.1.0", + "@graphql-yoga/logger": "^2.0.0", + "@graphql-yoga/subscription": "^5.0.0", + "@whatwg-node/fetch": "^0.9.17", + "@whatwg-node/server": "^0.9.33", + "dset": "^3.1.1", + "lru-cache": "^10.0.0", + "tslib": "^2.5.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "graphql": "^15.2.0 || ^16.0.0" + } + }, + "node_modules/graphql-yoga/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/graphql-yoga/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -6531,6 +11329,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -6576,6 +11381,22 @@ "he": "bin/he" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dev": true, + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/header-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/heap": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", @@ -6594,6 +11415,16 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "optional": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/http-basic": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", @@ -6632,6 +11463,33 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", @@ -6716,6 +11574,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "node_modules/immer": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", @@ -6749,12 +11613,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", + "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", + "dev": true, + "engines": { + "node": ">=12.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "peer": true, "engines": { "node": ">=0.8.19" } @@ -6814,6 +11689,15 @@ "node": ">= 0.10" } }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, "node_modules/io-ts": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", @@ -6823,6 +11707,40 @@ "fp-ts": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "optional": true + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -6943,6 +11861,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -6998,6 +11931,28 @@ "npm": ">=3" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "optional": true + }, + "node_modules/is-lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", + "integrity": "sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/is-lower-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -7053,6 +12008,12 @@ "node": ">=8" } }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "dev": true + }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -7069,6 +12030,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", @@ -7129,6 +12102,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -7141,6 +12126,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-2.0.2.tgz", + "integrity": "sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/is-upper-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -7153,6 +12153,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -7162,9 +12183,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "peer": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", @@ -7185,6 +12205,39 @@ "ws": "*" } }, + "node_modules/isows": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.4.tgz", + "integrity": "sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jackspeak": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", @@ -7215,6 +12268,31 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "optional": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-bigint-patch": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/json-bigint-patch/-/json-bigint-patch-0.0.8.tgz", + "integrity": "sha512-xa0LTQsyaq8awYyZyuUsporWisZFiyqzxGW8CKM3t7oouf0GFAKYJnqAm6e9NLNBQOCtOLvy614DEiRX/rPbnA==", + "dev": true + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -7227,6 +12305,30 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-pointer": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", + "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", + "dev": true, + "dependencies": { + "foreach": "^2.0.4" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-ref-resolver": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", + "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -7247,6 +12349,18 @@ "dev": true, "peer": true }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -7357,12 +12471,30 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -7397,6 +12529,12 @@ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -7404,12 +12542,29 @@ "dev": true, "peer": true }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "peer": true + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "node_modules/lodash.topath": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", + "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", @@ -7433,6 +12588,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -7443,6 +12610,36 @@ "get-func-name": "^2.0.1" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-2.0.2.tgz", + "integrity": "sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case-first/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/lowercase-keys": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", @@ -7473,12 +12670,70 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", "dev": true, - "peer": true + "optional": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/markdown-table": { "version": "1.1.3", @@ -7516,6 +12771,23 @@ "node": ">= 8" } }, + "node_modules/meros": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/meros/-/meros-1.3.0.tgz", + "integrity": "sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==", + "dev": true, + "engines": { + "node": ">=13" + }, + "peerDependencies": { + "@types/node": ">=13" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/micro-ftch": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", @@ -7590,19 +12862,164 @@ "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", + "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/mkdirp": { @@ -7768,6 +13185,13 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true, + "optional": true + }, "node_modules/nanoassert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", @@ -7800,6 +13224,16 @@ "node": ">=10" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -7807,6 +13241,22 @@ "dev": true, "peer": true }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", @@ -7843,6 +13293,31 @@ } } }, + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dev": true, + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/node-gyp-build": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", @@ -7854,6 +13329,185 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-libcurl": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/node-libcurl/-/node-libcurl-4.0.0.tgz", + "integrity": "sha512-v+u+OgSq6ldvf8MrdjieAy/mv8WeTN94nrTomh62zhItF2HH0Ckin/QEqs8+35DWyYrE5nBM2480UtWVXktzbQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "1.0.11", + "env-paths": "2.2.0", + "nan": "2.18.0", + "node-gyp": "10.0.1", + "npmlog": "7.0.1", + "rimraf": "5.0.5", + "tslib": "2.6.2" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/node-libcurl/node_modules/env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-libcurl/node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-libcurl/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-libcurl/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, "node_modules/nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", @@ -7897,6 +13551,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npmlog": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, "node_modules/number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", @@ -7924,7 +13601,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -7980,6 +13656,55 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimism": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", + "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", + "dev": true, + "optional": true, + "dependencies": { + "@wry/caches": "^1.0.0", + "@wry/context": "^0.7.0", + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, + "node_modules/optimism/node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/optimism/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -8110,6 +13835,22 @@ "node": ">=10" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/param-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8129,6 +13870,20 @@ "dev": true, "peer": true }, + "node_modules/parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -8147,6 +13902,44 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8170,7 +13963,6 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -8181,6 +13973,52 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "dev": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -8217,9 +14055,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -8337,6 +14175,16 @@ "node": ">=10" } }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8354,6 +14202,30 @@ "asap": "~2.0.6" } }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -8368,6 +14240,18 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "optional": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -8514,6 +14398,13 @@ "node": ">=0.10.0" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "optional": true + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -8600,6 +14491,12 @@ "node": ">=6" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", @@ -8645,6 +14542,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rehackt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", + "dev": true, + "optional": true, + "peerDependencies": { + "@types/react": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/relay-runtime": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", + "integrity": "sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, "node_modules/req-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", @@ -8699,6 +14632,12 @@ "node": ">=0.10.0" } }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, "node_modules/resolve": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", @@ -8726,6 +14665,16 @@ "node": ">=4" } }, + "node_modules/response-iterator": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/responselike": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", @@ -8760,12 +14709,17 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -9079,6 +15033,23 @@ "semver": "bin/semver.js" } }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/sentence-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/serialize-javascript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", @@ -9088,6 +15059,12 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -9164,7 +15141,6 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -9177,7 +15153,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "peer": true, "engines": { "node": ">=8" } @@ -9224,6 +15199,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/signedsource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", + "integrity": "sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==", + "dev": true + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -9257,6 +15238,76 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snake-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/solc": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", @@ -9704,6 +15755,21 @@ "readable-stream": "^3.0.0" } }, + "node_modules/sponge-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-1.0.1.tgz", + "integrity": "sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/sponge-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -9711,6 +15777,19 @@ "dev": true, "peer": true }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", @@ -9741,6 +15820,15 @@ "node": ">= 0.8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -9757,6 +15845,13 @@ "dev": true, "peer": true }, + "node_modules/string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -9771,6 +15866,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -9832,6 +15942,28 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-hex-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", @@ -9869,6 +16001,31 @@ "node": ">=8" } }, + "node_modules/swap-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-2.0.2.tgz", + "integrity": "sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/swap-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/sync-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", @@ -9984,12 +16141,79 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "optional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -10051,6 +16275,30 @@ "readable-stream": "3" } }, + "node_modules/tiny-lru": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-11.2.6.tgz", + "integrity": "sha512-0PU3c9PjMnltZaFo2sGYv/nnJsMjG0Cxx8X6FXHPPGjFyoo1SJDxvUXW1207rdiSxYizf31roo+GrkIByQeZoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/title-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -10063,6 +16311,15 @@ "node": ">=0.6.0" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -10127,12 +16384,31 @@ "typescript": ">=3.7.0" } }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dev": true, + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-invariant/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -10176,11 +16452,24 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "peer": true, "engines": { "node": ">=0.3.1" } }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -10477,6 +16766,29 @@ "node": ">=8" } }, + "node_modules/ua-parser-js": { + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, "node_modules/uglify-js": { "version": "3.17.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", @@ -10506,6 +16818,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -10530,6 +16851,32 @@ "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", "dev": true }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "optional": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -10539,6 +16886,30 @@ "node": ">= 10.0.0" } }, + "node_modules/unixify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", + "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==", + "dev": true, + "dependencies": { + "normalize-path": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -10548,6 +16919,66 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/upper-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -10557,6 +16988,12 @@ "punycode": "^2.1.0" } }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true + }, "node_modules/utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", @@ -10592,12 +17029,131 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/uWebSockets.js": { + "version": "20.43.0", + "resolved": "git+ssh://git@github.com/uNetworking/uWebSockets.js.git#1977b5039938ad863d42fc4958d48c17e5a1fa06", + "dev": true, + "optional": true + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/value-or-promise": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", + "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", "dev": true, - "peer": true + "engines": { + "node": ">=12" + } + }, + "node_modules/viem": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.12.0.tgz", + "integrity": "sha512-XBvORspE4x2/gfy7idH6IVFwkJiXirygFCU3lxUH6fttsj8zufLtgiokfvZF/LAZUEDvdxSgL08whSYgffM2fw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "1.0.0", + "isows": "1.0.4", + "ws": "8.13.0" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "dev": true + }, + "node_modules/viem/node_modules/@scure/bip32": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", + "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", + "dev": true, + "dependencies": { + "@noble/curves": "~1.2.0", + "@noble/hashes": "~1.3.2", + "@scure/base": "~1.1.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "dev": true, + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/abitype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", + "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "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 + } + } }, "node_modules/wasmbuilder": { "version": "0.0.16", @@ -11755,7 +18311,6 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -11782,6 +18337,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, "node_modules/which-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", @@ -11801,6 +18362,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -11877,6 +18448,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -11967,7 +18556,6 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -11984,6 +18572,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", + "dev": true, + "optional": true + }, + "node_modules/zen-observable-ts": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", + "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", + "dev": true, + "optional": true, + "dependencies": { + "zen-observable": "0.8.15" + } + }, "node_modules/zod": { "version": "3.23.3", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.3.tgz", diff --git a/package.json b/package.json index 7eccec0..3ee24aa 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "solhint-plugin-prettier": "^0.1.0", "solidity-bytes-utils": "^0.8.0", "typescript": "^5.4.4", - "web3": "^4.7.0" + "web3": "^4.7.0", + "@verax-attestation-registry/verax-sdk": "^1.6.0" }, "scripts": { "node": "npx hardhat node", diff --git a/scripts/verax/create-attestation.ts b/scripts/verax/create-attestation.ts new file mode 100644 index 0000000..4e14409 --- /dev/null +++ b/scripts/verax/create-attestation.ts @@ -0,0 +1,61 @@ +import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; +import { ethers } from "hardhat"; +import { lineaSepolia } from "viem/chains"; + +// const myVeraxConfiguratin = { +// chain: lineaSepolia, +// mode: 'BACKEND', // no exported SDKMode +// subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.1", +// portalRegistryAddress: "0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89", +// moduleRegistryAddress: "0x9f677f957D15451784E83d33a341bad6f9D1C65D", +// schemaRegistryAddress: "0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2", +// attestationRegistryAddress: "0xf76d5add093023C4cFE72d0a2f1c81541B23d832", +// }; +const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; +const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; + +// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - Empty portal address +// 0x12b756507B0eEd99cDaa1F66A2aA0E7904C61a94 - TestArr portal address +// 0x3d5FE35a0a09f25Abf1eb2560F6D3c60aB11E155 - ERC20SelectiveDisclosureVerifier portal address + +async function main() { + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const encodedStruct = abiCoder.encode( + ['uint64', 'uint256[]', 'uint256[2]', 'uint256[2][2]', 'uint256[2]'], + [20000000,["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","533473131577915367476165056327875253276681460783582863497090277099337971105","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","1431577103466539860889070794567000572122770392124","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716546415","1"],["5566335821639770948969011395405716127205787970847714294439548191780662246845","21820014235253014342321399313588367322033324491448325865818649779408202656610"],[["12870122324904285559850956281066811735477833774920640636931773375921633109664","946069213489297067328644090777463155196723099886623905975224229695689717734"],["1065158600041212067855179148138277052772055567696470394188312244035782309397","10237291963189911388883251020725094017303190606999878018556231085446393623407"]],["18889845494154296364722239210583031827437199030955471939444885330253899099679","9652173707176294295141561707960305896978582458911068602677630518372208444453"]] + // ['20000000',["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","12613907073998108299202624558878174544905476436892306647479846982181414487778","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","84002317962324355840497625751508248285531936627","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716539738","1"],["1002762436341593667932778770894053200904206360251400192890767096118875191877","4013069923456040809597112553295371289057663230315345516630016144219831333781"],[["14902240599107360099782262080393752222614071165354933714751510579842248859049","3919244093145121370311280321203298424178810218049385744044013302347683588730"],["14056675236464161413476704203137579548328234035521811145188771522100162364710","18838753276352589922058651059216919147559014692640496829929200832869474354667"]],["21000186263839107829206428772020904873464360989623126246033206062233684205118","7053668543005564913398619031954500599734123253993585416888780767149725023678"]] + ); + + const encodedSubject = abiCoder.encode( + ['unit256'], + ['21947821518962939314223753062600516493439826064799158636175370094818183170'] + ); + + console.log(encodedStruct); + console.log('encodedSubject', encodedSubject); + try { + const tx = await veraxSdk.portal.attest( + '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2', + { + schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', + subject: encodedSubject, // user id bytes, + expirationDate: 1747986521, + attestationData: [{requestId: 20000000, nullifierSessionID: '7324279704276530468934624281016444667267090475638299627277301259037185954432'}] + }, + [ + encodedStruct + ], true); + console.log(tx); +} catch (ex) { + console.log(ex); +} +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts new file mode 100644 index 0000000..8f865ba --- /dev/null +++ b/scripts/verax/create-default-portal.ts @@ -0,0 +1,34 @@ +import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; +import { lineaSepolia } from "viem/chains"; + +// const myVeraxConfiguratin = { +// chain: lineaSepolia, +// mode: 'BACKEND', // no exported SDKMode +// subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.1", +// portalRegistryAddress: "0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89", +// moduleRegistryAddress: "0x9f677f957D15451784E83d33a341bad6f9D1C65D", +// schemaRegistryAddress: "0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2", +// attestationRegistryAddress: "0xf76d5add093023C4cFE72d0a2f1c81541B23d832", +// }; +const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; +const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; + + +// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - empty portal address +// 0x12b756507B0eEd99cDaa1F66A2aA0E7904C61a94 - Test arr portal +// 0x84d6Fe2e83C7E5646Ca7CD678209D7312aBcF4ca - ERC20SelectiveDisclosureVerifier portal address +async function main() { + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + const tx = await veraxSdk.portal.deployDefaultPortal( + ['0xCd777CA89815a0A9990f8B9e2443694888131290'], "ERC20SelectiveDisclosureVerifier portal", "This Portal is used as an example for ERC20SelectiveDisclosureVerifier contract", false, "Iden3", true); + + console.log(tx); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/create-schema.ts b/scripts/verax/create-schema.ts new file mode 100644 index 0000000..03d7211 --- /dev/null +++ b/scripts/verax/create-schema.ts @@ -0,0 +1,48 @@ +import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; + +// ** SUMMARY ** +// Router = 0x7B1a19AE8ebD814E45E64B4528A32317EBB5d8AA +// AttestationRegistry = 0xf76d5add093023C4cFE72d0a2f1c81541B23d832 +// ModuleRegistry = 0x9f677f957D15451784E83d33a341bad6f9D1C65D +// PortalRegistry = 0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89 +// SchemaRegistry = 0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2 +// AttestationReader = 0x8e4A144ee0f9D6696180E146CC33624353E614C4 + +// export const myVeraxConfiguratin = { +// chain: lineaSepolia, +// mode: 'BACKEND', // no exported SDKMode +// subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.1", +// portalRegistryAddress: "0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89", +// moduleRegistryAddress: "0x9f677f957D15451784E83d33a341bad6f9D1C65D", +// schemaRegistryAddress: "0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2", +// attestationRegistryAddress: "0xf76d5add093023C4cFE72d0a2f1c81541B23d832", +// }; +export const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; +export const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; + +// schema id - 0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e - "(uint64 requestId, uint256 nullifierSessionID)" +async function main() { + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + const schemaString = "(uint64 requestId)"; + + const schemaTx = await veraxSdk.schema.create("Verification schema", + "Verification schema", "", schemaString, true); + + console.log(schemaTx); + + const schemaId = await veraxSdk.schema.getIdFromSchemaString(schemaString); + console.log(schemaId); + + const schema = await veraxSdk.schema.getSchema(schemaId as string); + console.log(schema); + + const matchingSchema = await veraxSdk.schema.findOneById(schemaId as string); + console.log(matchingSchema); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts new file mode 100644 index 0000000..e5d91ec --- /dev/null +++ b/scripts/verax/deploy-module.ts @@ -0,0 +1,34 @@ +import { ethers } from 'hardhat'; +import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; + +// 0xefDEC213B52ed164723DfD9723AC80F73d66fB80 - test array module +// 0x4F9AAA2E849fcAC816cf78827E61dAfe9051283E - ZKPVerifyModule +async function main() { + const ERC20SelectiveDisclosureVerifier = '0xa5f08979370AF7095cDeDb2B83425367316FAD0B'; + + const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); + const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(ERC20SelectiveDisclosureVerifier); + await ZKPVerifyModule.waitForDeployment(); + console.log("ZKPVerifyModule deployed to:", await ZKPVerifyModule.getAddress()); + + // register module + const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; + const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + + const tx = await veraxSdk.module.register( + "ZKPVerifyModule", + "This Module is used as an example of ZKPVerifyModule", + await ZKPVerifyModule.getAddress(), + true + ); + + console.log(tx); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts new file mode 100644 index 0000000..eb93767 --- /dev/null +++ b/scripts/verax/get-attestation.ts @@ -0,0 +1,28 @@ +import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; +import { lineaSepolia } from "viem/chains"; + +const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; +const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; + +// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - empty portal address +async function main() { + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + const attestationId = '0x000000000000000000000000000000000000000000000000000000000000005f'; + const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`}; + + console.log(attestation); + + const decoded = + veraxSdk.utils.decode( + '(uint64 requestId, uint256 nullifierSessionID)', + attestation.attestationData as `0x${string}` + ); + console.log(decoded); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); From 18be05cf4f854c94c082bb045e6dbd549b2b49f8 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 24 May 2024 20:29:25 +0300 Subject: [PATCH 02/49] cleanup --- ...tiveDisclosureVerifierWithAttestations.sol | 146 ++++++++++++++ contracts/examples/verax/TestArrModule.sol | 28 --- contracts/examples/verax/ZKPVerifyModule.sol | 6 +- ...RC20SelectiveDisclosureWithAttestations.ts | 179 ++++++++++++++++++ scripts/verax/attest-tx.ts | 66 +++++++ scripts/verax/create-attestation.ts | 37 ++-- scripts/verax/create-schema.ts | 8 +- scripts/verax/get-attestation.ts | 15 +- 8 files changed, 421 insertions(+), 64 deletions(-) create mode 100644 contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol delete mode 100644 contracts/examples/verax/TestArrModule.sol create mode 100644 scripts/deployERC20SelectiveDisclosureWithAttestations.ts create mode 100644 scripts/verax/attest-tx.ts diff --git a/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol b/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol new file mode 100644 index 0000000..a8560b4 --- /dev/null +++ b/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import {ERC20Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol'; +import {PrimitiveTypeUtils} from '@iden3/contracts/lib/PrimitiveTypeUtils.sol'; +import {ICircuitValidator} from '@iden3/contracts/interfaces/ICircuitValidator.sol'; +import {ZKPVerifier} from '@iden3/contracts/verifiers/ZKPVerifier.sol'; +import {Attestation, AttestationPayload} from './verax/types/Structs.sol'; + +interface IPortal { + function attest(AttestationPayload memory attestationPayload, bytes[] memory validationPayloads) external payable; + function getAttester() external view virtual returns (address); + function attestationRegistry() external view returns (address); +} + +interface AttestationRegistry { + function getAttestationIdCounter() external view returns (uint32); + event AttestationRegistered(bytes32 indexed attestationId); + function getAttestation(bytes32 attestationId) external view returns (Attestation memory); +} + +contract ERC20SelectiveDisclosureVerifierWithAttestations is ERC20Upgradeable, ZKPVerifier { + uint64 public constant TRANSFER_REQUEST_ID_V3_VALIDATOR = 3; + event AttestError(string message); + event AttestOk(string message); + /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier + struct ERC20SelectiveDisclosureVerifierStorage { + mapping(uint256 => address) idToAddress; + mapping(address => uint256) addressToId; + mapping(uint256 => uint256) _idToOperatorOutput; + uint256 TOKEN_AMOUNT_FOR_AIRDROP_PER_ID; + IPortal attestationPortalContract; + bytes32 schemaId; + } + + // keccak256(abi.encode(uint256(keccak256("polygonid.storage.ERC20SelectiveDisclosureVerifier")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant ERC20SelectiveDisclosureVerifierStorageLocation = + 0xb76e10afcb000a9a2532ea819d260b0a3c0ddb1d54ee499ab0643718cbae8700; + + function _getERC20SelectiveDisclosureVerifierStorage() private pure returns (ERC20SelectiveDisclosureVerifierStorage storage $) { + assembly { + $.slot := ERC20SelectiveDisclosureVerifierStorageLocation + } + } + + modifier beforeTransfer(address to) { + ZKPVerifier.ZKPVerifierStorage storage $ = _getZKPVerifierStorage(); + require( + $.proofs[to][TRANSFER_REQUEST_ID_V3_VALIDATOR], + 'only identities who provided sig or mtp proof for transfer requests are allowed to receive tokens' + ); + _; + } + + function initialize(string memory name, string memory symbol, address portalAddress, bytes32 schemaId) public initializer { + ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + super.__ERC20_init(name, symbol); + super.__ZKPVerifier_init(_msgSender()); + $.TOKEN_AMOUNT_FOR_AIRDROP_PER_ID = 5 * 10 ** uint256(decimals()); + $.attestationPortalContract = IPortal(portalAddress); + $.schemaId = schemaId; + } + + + function attester() public returns(address) { + IPortal a = IPortal(0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2); + return a.getAttester(); + } + + function _beforeProofSubmit( + uint64 /* requestId */, + uint256[] memory inputs, + ICircuitValidator validator + ) internal view override { + // check that challenge input is address of sender + address addr = PrimitiveTypeUtils.uint256LEToAddress( + inputs[validator.inputIndexOf('challenge')] + ); + // this is linking between msg.sender and + require(_msgSender() == addr, 'address in proof is not a sender address'); + } + + + function _attest(uint256 userId, uint64 requestId, uint256 nullifier) public { + ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + AttestationPayload memory payload = AttestationPayload( + bytes32($.schemaId), + uint64(block.timestamp + 7 days), + abi.encode(userId), + abi.encode(requestId, nullifier) + ); + bytes[] memory validationPayload = new bytes[](0); + try $.attestationPortalContract.attest(payload, validationPayload) { + emit AttestOk("attestation done"); + } catch { + emit AttestError("attestation error"); + require(false, "attestation err"); + } + } + + function _afterProofSubmit( + uint64 requestId, + uint256[] memory inputs, + ICircuitValidator validator + ) internal override { + _attest(inputs[0], requestId, inputs[4]); + if (requestId == TRANSFER_REQUEST_ID_V3_VALIDATOR) { + ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + // if proof is given for transfer request id ( mtp or sig ) and it's a first time we mint tokens to sender + uint256 id = inputs[1]; + if ($.idToAddress[id] == address(0) && $.addressToId[_msgSender()] == 0) { + super._mint(_msgSender(), $.TOKEN_AMOUNT_FOR_AIRDROP_PER_ID); + $.addressToId[_msgSender()] = id; + $.idToAddress[id] = _msgSender(); + $._idToOperatorOutput[id] = inputs[validator.inputIndexOf('operatorOutput')]; + } + } + } + + function _update( + address from /* from */, + address to, + uint256 amount /* amount */ + ) internal override beforeTransfer(to) { + super._update(from, to, amount); + } + + function getOperatorOutput() public view returns (uint256) { + ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + uint256 id = $.addressToId[_msgSender()]; + require(id != 0, 'sender id is not found'); + return $._idToOperatorOutput[id]; + } + + function getIdByAddress(address addr) public view returns (uint256) { + return _getERC20SelectiveDisclosureVerifierStorage().addressToId[addr]; + } + + function getAddressById(uint256 id) public view returns (address) { + return _getERC20SelectiveDisclosureVerifierStorage().idToAddress[id]; + } + + function getTokenAmountForAirdropPerId() public view returns (uint256) { + return _getERC20SelectiveDisclosureVerifierStorage().TOKEN_AMOUNT_FOR_AIRDROP_PER_ID; + } +} diff --git a/contracts/examples/verax/TestArrModule.sol b/contracts/examples/verax/TestArrModule.sol deleted file mode 100644 index 83526ef..0000000 --- a/contracts/examples/verax/TestArrModule.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.20; - -import { AttestationPayload } from "./types/Structs.sol"; -import { AbstractModule } from "./abstracts/AbstractModule.sol"; -import {IZKPVerifier} from '@iden3/contracts/interfaces/IZKPVerifier.sol'; - -contract TestArrModule is AbstractModule { - IZKPVerifier public zkpVerifier; - - constructor(IZKPVerifier _zkpVerifier) { - zkpVerifier = _zkpVerifier; - } - - function run( - AttestationPayload memory /*attestationPayload*/, - bytes memory validationPayload, - address txSender, - uint256 /*value*/ - ) public override { - (uint256[] memory inputs, uint256[] memory a) = - abi.decode(validationPayload, (uint256[], uint256[])); - - require(inputs[0] == 1, "invalid first input"); - require(inputs[1] == 2, "invalid second input"); - - } -} diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol index 2b53daa..3ea2640 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -4,15 +4,12 @@ pragma solidity 0.8.20; import { AttestationPayload } from "./types/Structs.sol"; import { AbstractModule } from "./abstracts/AbstractModule.sol"; import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; -import { IVerifier } from '@iden3/contracts/interfaces/IVerifier.sol'; contract ZKPVerifyModule is AbstractModule { IZKPVerifier public zkpVerifier; - IVerifier public verifier; constructor(address _zkpVerifier) { zkpVerifier = IZKPVerifier(_zkpVerifier); - verifier = IVerifier(0x35178273C828E08298EcB0C6F1b97B3aFf14C4cb); } function run( @@ -33,9 +30,8 @@ contract ZKPVerifyModule is AbstractModule { require(attestationSubject == inputs[0], "attestation subject doesn't match to user id input"); require(attestationRequestId == inputs[7], "request Id doesn't match"); - // require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); + require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); zkpVerifier.submitZKPResponse(requestId, inputs, a, b, c); - // require(verifier.verify(a, b, c, inputs), "Proof is not valid"); } } diff --git a/scripts/deployERC20SelectiveDisclosureWithAttestations.ts b/scripts/deployERC20SelectiveDisclosureWithAttestations.ts new file mode 100644 index 0000000..c5a1c99 --- /dev/null +++ b/scripts/deployERC20SelectiveDisclosureWithAttestations.ts @@ -0,0 +1,179 @@ +import { ethers, upgrades } from 'hardhat'; +import { packV3ValidatorParams } from '../test/utils/pack-utils'; +import { calculateQueryHashV3, buildVerifierId, coreSchemaFromStr } from '../test/utils/utils'; +import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; + +const Operators = { + NOOP: 0, // No operation, skip query verification in circuit + EQ: 1, // equal + LT: 2, // less than + GT: 3, // greater than + IN: 4, // in + NIN: 5, // not in + NE: 6, // not equal + SD: 16 // selective disclosure +}; + +async function main() { + // you can run https://go.dev/play/p/3id7HAhf-Wi to get schema hash and claimPathKey using YOUR schema + const schema = '74977327600848231385663280181476307657'; + // merklized path to field in the W3C credential according to JSONLD schema e.g. birthday in the KYCAgeCredential under the url "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld" + const schemaUrl = + 'https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld'; + const type = 'KYCAgeCredential'; + const schemaClaimPathKey = + '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + const value = []; + const actualValueArraySize = 0; + const merklized = 1; + const slotIndex = 0; // because schema is merklized for merklized credential, otherwise you should actual put slot index https://docs.iden3.io/protocol/non-merklized/#motivation + const isRevocationChecked = 1; + + const contractName = 'ERC20SelectiveDisclosureVerifierWithAttestations'; + const name = 'ERC20SelectiveDisclosureVerifierWithAttestations'; + const symbol = 'ERCZKP'; + const ERC20ContractFactory = await ethers.getContractFactory(contractName); + const erc20instance = await upgrades.deployProxy(ERC20ContractFactory, [name, symbol, '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2', '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e']); + const claimPathDoesntExist = 0; // 0 for inclusion (merklized credentials) - 1 for non-merklized + + await erc20instance.waitForDeployment(); + console.log(contractName, ' deployed to:', await erc20instance.getAddress()); + + // set default query + const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; + + // current v3 validator address on mumbai + // const validatorAddressV3 = '0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a'; + // + // const chainId = 80001; + // + // const network = 'polygon-mumbai'; + + // current v3 validator address on amoy + + const validatorAddressV3 = '0xba0EB888B1CDD41523d541E0d06246460f0D32a8'; + + const chainId = 59141; + + registerDidMethodNetwork({ + method: DidMethod.PolygonId, + blockchain: "linea", + chainId: 59141, + network: "sepolia", + networkFlag: 0b0100_0000 | 0b0000_1000, + }); + + const network = 'linea-sepolia'; + + const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); + + if (!networkFlag) { + throw new Error(`Invalid chain id ${chainId}`); + } + const [blockchain, networkId] = networkFlag.split(':'); + + const id = buildVerifierId(await erc20instance.getAddress(), { + blockchain, + networkId, + method: DidMethod.PolygonId + }); + const verifierID = id.bigInt(); + const nullifierSessionID = 0; + const schemaHash = coreSchemaFromStr(schema); + console.log('verifier id = ' + id.bigInt().toString()); + + // current v3 validator address on main + // const validatorAddressV3 = ''; + + // const network = 'polygon-main'; + // + // const chainId = 137; + const query = { + schema: schema, + claimPathKey: schemaClaimPathKey, + operator: Operators.SD, + slotIndex: slotIndex, + value: value, + queryHash: calculateQueryHashV3( + value, + schemaHash, + slotIndex, + Operators.SD, + schemaClaimPathKey, + actualValueArraySize, + merklized, + isRevocationChecked, + verifierID.toString(), + nullifierSessionID + ).toString(), + circuitIds: [circuitIdV3], + allowedIssuers: [], + skipClaimRevocationCheck: false, + nullifierSessionID: 0, + verifierID: verifierID.toString(), + groupID: 0, + proofType: 1 + }; + + const requestIdV3 = await erc20instance.TRANSFER_REQUEST_ID_V3_VALIDATOR(); + + console.log(DID.parseFromId(id).string()); + const invokeRequestMetadata = { + id: '7f38a193-0918-4a48-9fac-36adfdb8b542', + typ: 'application/iden3comm-plain-json', + type: 'https://iden3-communication.io/proofs/1.0/contract-invoke-request', + thid: '7f38a193-0918-4a48-9fac-36adfdb8b542', + from: DID.parseFromId(id).string(), + body: { + reason: 'for testing', + transaction_data: { + contract_address: await erc20instance.getAddress(), + method_id: 'b68967e2', + chain_id: chainId, + network: network + }, + scope: [ + { + id: requestIdV3, + circuitId: circuitIdV3, + proofType: 'BJJSignature2021', + query: { + allowedIssuers: ['*'], + context: schemaUrl, + credentialSubject: { + birthday: {} + }, + type: type + } + } + ] + } + }; + + try { + const x = JSON.stringify(invokeRequestMetadata, (_, v) => + typeof v === 'bigint' ? v.toString() : v + ); + + // v3 request set + const txV3 = await erc20instance.setZKPRequest(requestIdV3, { + metadata: JSON.stringify(invokeRequestMetadata, (_, v) => + typeof v === 'bigint' ? v.toString() : v + ), + validator: validatorAddressV3, + data: packV3ValidatorParams(query) + }); + + console.log(txV3.hash); + await txV3.wait(); + } catch (e) { + console.log('error: ', e); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/attest-tx.ts b/scripts/verax/attest-tx.ts new file mode 100644 index 0000000..1aea140 --- /dev/null +++ b/scripts/verax/attest-tx.ts @@ -0,0 +1,66 @@ +import { ethers } from 'hardhat'; + + +async function main() { + const erc20Addr = '0xcC381ca2A190fbFd0059AB38A290E332AFe39b7b'; + const erc20 = await ethers.getContractAt('ERC20SelectiveDisclosureVerifierWithAttestations', erc20Addr); + const tx1 = await erc20.attest1(); + // console.log(tx1); + const portalAddr = '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2'; + const portal = await ethers.getContractAt('IPortal', portalAddr); + console.log('attached to:', await portal.getAddress()); + + + const attestationRegistryAddress = await portal.attestationRegistry(); + console.log(attestationRegistryAddress); + const attestationRegistry = await ethers.getContractAt('AttestationRegistry', attestationRegistryAddress); + const count = await attestationRegistry.getAttestationIdCounter(); + console.log(count); + + attestationRegistry.on('AttestationRegistered', async (attestationId) => { + console.log(attestationId, 'attestation registered!'); + + const attestation = await attestationRegistry.getAttestation(attestationId); + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const decoded = + abiCoder.decode( + ['(uint64 requestId, uint256 nullifierSessionID)'], + attestation.attestationData + ); + console.log(decoded); + }); + + + const delay = ms => new Promise(res => setTimeout(res, ms)); + await delay(5000); + return; + + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const encodetSubject = abiCoder.encode( + ['uint256'], + ['21947821518962939314223753062600516493439826064799158636175370094818183170'] + ); + + const encodetData = abiCoder.encode( + ['uint64', 'uint256'], + ['100', '0'] + ); + + const tx = await portal.attest({ + schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', + expirationDate: 1747986521, + subject: encodetSubject, + attestationData: encodetData + }, []); + + console.log(encodetSubject); + console.log(encodetData); + console.log(tx); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/create-attestation.ts b/scripts/verax/create-attestation.ts index 4e14409..73fab80 100644 --- a/scripts/verax/create-attestation.ts +++ b/scripts/verax/create-attestation.ts @@ -1,6 +1,5 @@ -import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; +import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; import { ethers } from "hardhat"; -import { lineaSepolia } from "viem/chains"; // const myVeraxConfiguratin = { // chain: lineaSepolia, @@ -21,36 +20,30 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const abiCoder = ethers.AbiCoder.defaultAbiCoder(); - const encodedStruct = abiCoder.encode( - ['uint64', 'uint256[]', 'uint256[2]', 'uint256[2][2]', 'uint256[2]'], - [20000000,["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","533473131577915367476165056327875253276681460783582863497090277099337971105","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","1431577103466539860889070794567000572122770392124","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716546415","1"],["5566335821639770948969011395405716127205787970847714294439548191780662246845","21820014235253014342321399313588367322033324491448325865818649779408202656610"],[["12870122324904285559850956281066811735477833774920640636931773375921633109664","946069213489297067328644090777463155196723099886623905975224229695689717734"],["1065158600041212067855179148138277052772055567696470394188312244035782309397","10237291963189911388883251020725094017303190606999878018556231085446393623407"]],["18889845494154296364722239210583031827437199030955471939444885330253899099679","9652173707176294295141561707960305896978582458911068602677630518372208444453"]] - // ['20000000',["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","12613907073998108299202624558878174544905476436892306647479846982181414487778","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","84002317962324355840497625751508248285531936627","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716539738","1"],["1002762436341593667932778770894053200904206360251400192890767096118875191877","4013069923456040809597112553295371289057663230315345516630016144219831333781"],[["14902240599107360099782262080393752222614071165354933714751510579842248859049","3919244093145121370311280321203298424178810218049385744044013302347683588730"],["14056675236464161413476704203137579548328234035521811145188771522100162364710","18838753276352589922058651059216919147559014692640496829929200832869474354667"]],["21000186263839107829206428772020904873464360989623126246033206062233684205118","7053668543005564913398619031954500599734123253993585416888780767149725023678"]] - ); + // const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + // const encodedStruct = abiCoder.encode( + // ['uint64', 'uint256[]', 'uint256[2]', 'uint256[2][2]', 'uint256[2]'], + // [20000000,["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","533473131577915367476165056327875253276681460783582863497090277099337971105","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","1431577103466539860889070794567000572122770392124","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716546415","1"],["5566335821639770948969011395405716127205787970847714294439548191780662246845","21820014235253014342321399313588367322033324491448325865818649779408202656610"],[["12870122324904285559850956281066811735477833774920640636931773375921633109664","946069213489297067328644090777463155196723099886623905975224229695689717734"],["1065158600041212067855179148138277052772055567696470394188312244035782309397","10237291963189911388883251020725094017303190606999878018556231085446393623407"]],["18889845494154296364722239210583031827437199030955471939444885330253899099679","9652173707176294295141561707960305896978582458911068602677630518372208444453"]] + // ); - const encodedSubject = abiCoder.encode( - ['unit256'], - ['21947821518962939314223753062600516493439826064799158636175370094818183170'] - ); + // const encodedSubject = abiCoder.encode( + // ['unit256'], + // ['21947821518962939314223753062600516493439826064799158636175370094818183170'] + // ); - console.log(encodedStruct); - console.log('encodedSubject', encodedSubject); - try { + // console.log(encodedStruct); + // console.log('encodedSubject', encodedSubject); const tx = await veraxSdk.portal.attest( '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2', { schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', - subject: encodedSubject, // user id bytes, + subject: '0x1', // user id bytes, expirationDate: 1747986521, attestationData: [{requestId: 20000000, nullifierSessionID: '7324279704276530468934624281016444667267090475638299627277301259037185954432'}] }, - [ - encodedStruct - ], true); + [], + true); console.log(tx); -} catch (ex) { - console.log(ex); -} } main() diff --git a/scripts/verax/create-schema.ts b/scripts/verax/create-schema.ts index 03d7211..be6131a 100644 --- a/scripts/verax/create-schema.ts +++ b/scripts/verax/create-schema.ts @@ -23,12 +23,12 @@ export const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; // schema id - 0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e - "(uint64 requestId, uint256 nullifierSessionID)" async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const schemaString = "(uint64 requestId)"; + const schemaString = "(uint64 requestId, uint256 nullifierSessionID)"; - const schemaTx = await veraxSdk.schema.create("Verification schema", - "Verification schema", "", schemaString, true); + // const schemaTx = await veraxSdk.schema.create("Verification schema", + // "Verification schema", "", schemaString, true); - console.log(schemaTx); + // console.log(schemaTx); const schemaId = await veraxSdk.schema.getIdFromSchemaString(schemaString); console.log(schemaId); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index eb93767..eda8016 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -1,14 +1,13 @@ -import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; -import { lineaSepolia } from "viem/chains"; +import { Id } from "@iden3/js-iden3-core"; +import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; -// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - empty portal address async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x000000000000000000000000000000000000000000000000000000000000005f'; - const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`}; + const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000a0'; + const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); @@ -18,6 +17,12 @@ async function main() { attestation.attestationData as `0x${string}` ); console.log(decoded); + + const decodedSubj = veraxSdk.utils.decode('uint256', + attestation.subject)[0] as string; + + const userId = Id.fromBigInt(BigInt(decodedSubj)); + console.log(userId.bigInt()); } main() From dd9f4ec779b0a8a0bb2f67834453ba6cc8affdaf Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 24 May 2024 20:32:07 +0300 Subject: [PATCH 03/49] cleanup attest-tx --- scripts/verax/attest-tx.ts | 60 +++++++++++++++----------------------- 1 file changed, 24 insertions(+), 36 deletions(-) diff --git a/scripts/verax/attest-tx.ts b/scripts/verax/attest-tx.ts index 1aea140..ceb661f 100644 --- a/scripts/verax/attest-tx.ts +++ b/scripts/verax/attest-tx.ts @@ -1,39 +1,8 @@ import { ethers } from 'hardhat'; - async function main() { - const erc20Addr = '0xcC381ca2A190fbFd0059AB38A290E332AFe39b7b'; - const erc20 = await ethers.getContractAt('ERC20SelectiveDisclosureVerifierWithAttestations', erc20Addr); - const tx1 = await erc20.attest1(); - // console.log(tx1); const portalAddr = '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2'; const portal = await ethers.getContractAt('IPortal', portalAddr); - console.log('attached to:', await portal.getAddress()); - - - const attestationRegistryAddress = await portal.attestationRegistry(); - console.log(attestationRegistryAddress); - const attestationRegistry = await ethers.getContractAt('AttestationRegistry', attestationRegistryAddress); - const count = await attestationRegistry.getAttestationIdCounter(); - console.log(count); - - attestationRegistry.on('AttestationRegistered', async (attestationId) => { - console.log(attestationId, 'attestation registered!'); - - const attestation = await attestationRegistry.getAttestation(attestationId); - const abiCoder = ethers.AbiCoder.defaultAbiCoder(); - const decoded = - abiCoder.decode( - ['(uint64 requestId, uint256 nullifierSessionID)'], - attestation.attestationData - ); - console.log(decoded); - }); - - - const delay = ms => new Promise(res => setTimeout(res, ms)); - await delay(5000); - return; const abiCoder = ethers.AbiCoder.defaultAbiCoder(); const encodetSubject = abiCoder.encode( @@ -43,19 +12,38 @@ async function main() { const encodetData = abiCoder.encode( ['uint64', 'uint256'], - ['100', '0'] + ['100', '123'] ); - const tx = await portal.attest({ + await portal.attest({ schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', expirationDate: 1747986521, subject: encodetSubject, attestationData: encodetData }, []); - console.log(encodetSubject); - console.log(encodetData); - console.log(tx); + const attestationRegistryAddress = await portal.attestationRegistry(); + console.log(attestationRegistryAddress); + const attestationRegistry = await ethers.getContractAt('AttestationRegistry', attestationRegistryAddress); + const count = await attestationRegistry.getAttestationIdCounter(); + console.log(count); + + attestationRegistry.on('AttestationRegistered', async (attestationId) => { + console.log(attestationId, 'attestation registered!'); + + const attestation = await attestationRegistry.getAttestation(attestationId); + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const decoded = + abiCoder.decode( + ['(uint64 requestId, uint256 nullifierSessionID)'], + attestation.attestationData + ); + console.log(decoded); + }); + + + const delay = ms => new Promise(res => setTimeout(res, ms)); + await delay(5000); } main() From e5ee0f8ce77205fc666398b806bf2a3eb82a6b3a Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 24 May 2024 20:36:32 +0300 Subject: [PATCH 04/49] rm msg sender check --- contracts/examples/verax/ZKPVerifyModule.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol index 3ea2640..9de9844 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -18,7 +18,6 @@ contract ZKPVerifyModule is AbstractModule { address txSender, uint256 /*value*/ ) public override { - require(msg.sender == 0x3C443B9f0c8ed3A3270De7A4815487BA3223C2Fa, "invalid sender"); (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); From 1aaf58e0df33157955fba2494f4c1d876f4b8552 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 09:53:53 +0300 Subject: [PATCH 05/49] set portal info --- ...tiveDisclosureVerifierWithAttestations.sol | 24 +++++++++++-------- contracts/examples/verax/VerifierModule.sol | 18 ++++++++++++++ ...RC20SelectiveDisclosureWithAttestations.ts | 2 +- scripts/setPortalInfo.ts | 19 +++++++++++++++ scripts/verax/attest-tx.ts | 5 ++-- scripts/verax/deploy-module.ts | 14 +++++------ 6 files changed, 62 insertions(+), 20 deletions(-) create mode 100644 contracts/examples/verax/VerifierModule.sol create mode 100644 scripts/setPortalInfo.ts diff --git a/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol b/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol index a8560b4..77458f0 100644 --- a/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol +++ b/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol @@ -52,19 +52,18 @@ contract ERC20SelectiveDisclosureVerifierWithAttestations is ERC20Upgradeable, Z _; } - function initialize(string memory name, string memory symbol, address portalAddress, bytes32 schemaId) public initializer { + function initialize(string memory name, string memory symbol) public initializer { ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); super.__ERC20_init(name, symbol); super.__ZKPVerifier_init(_msgSender()); $.TOKEN_AMOUNT_FOR_AIRDROP_PER_ID = 5 * 10 ** uint256(decimals()); - $.attestationPortalContract = IPortal(portalAddress); - $.schemaId = schemaId; + } - - function attester() public returns(address) { - IPortal a = IPortal(0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2); - return a.getAttester(); + function setPortalInfo(address portalAddress, bytes32 schemaId) public onlyOwner { + ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + $.attestationPortalContract = IPortal(portalAddress); + $.schemaId = schemaId; } function _beforeProofSubmit( @@ -80,16 +79,20 @@ contract ERC20SelectiveDisclosureVerifierWithAttestations is ERC20Upgradeable, Z require(_msgSender() == addr, 'address in proof is not a sender address'); } - - function _attest(uint256 userId, uint64 requestId, uint256 nullifier) public { + function _attest(uint256 userId, uint64 requestId, uint256 nullifier) internal { ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); + if ($.attestationPortalContract == IPortal(address(0))) { + return; + } AttestationPayload memory payload = AttestationPayload( bytes32($.schemaId), uint64(block.timestamp + 7 days), abi.encode(userId), abi.encode(requestId, nullifier) ); - bytes[] memory validationPayload = new bytes[](0); + bytes memory validationData = abi.encode(uint256(0)); + bytes[] memory validationPayload = new bytes[](1); + validationPayload[0] = validationData; try $.attestationPortalContract.attest(payload, validationPayload) { emit AttestOk("attestation done"); } catch { @@ -143,4 +146,5 @@ contract ERC20SelectiveDisclosureVerifierWithAttestations is ERC20Upgradeable, Z function getTokenAmountForAirdropPerId() public view returns (uint256) { return _getERC20SelectiveDisclosureVerifierStorage().TOKEN_AMOUNT_FOR_AIRDROP_PER_ID; } + } diff --git a/contracts/examples/verax/VerifierModule.sol b/contracts/examples/verax/VerifierModule.sol new file mode 100644 index 0000000..c8c5615 --- /dev/null +++ b/contracts/examples/verax/VerifierModule.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AttestationPayload } from "./types/Structs.sol"; +import { AbstractModule } from "./abstracts/AbstractModule.sol"; + +contract VerifierModule is AbstractModule { + + function run( + AttestationPayload memory attestationPayload, + bytes memory validationPayload, + address txSender, + uint256 /*value*/ + ) public override { + // require(msg.sender == 0x55Fc7a60A6E6c865Cd20b8a4dae569751eA650af, "verifier not in allowed list"); + } + +} diff --git a/scripts/deployERC20SelectiveDisclosureWithAttestations.ts b/scripts/deployERC20SelectiveDisclosureWithAttestations.ts index c5a1c99..2be0684 100644 --- a/scripts/deployERC20SelectiveDisclosureWithAttestations.ts +++ b/scripts/deployERC20SelectiveDisclosureWithAttestations.ts @@ -33,7 +33,7 @@ async function main() { const name = 'ERC20SelectiveDisclosureVerifierWithAttestations'; const symbol = 'ERCZKP'; const ERC20ContractFactory = await ethers.getContractFactory(contractName); - const erc20instance = await upgrades.deployProxy(ERC20ContractFactory, [name, symbol, '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2', '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e']); + const erc20instance = await upgrades.deployProxy(ERC20ContractFactory, [name, symbol]); const claimPathDoesntExist = 0; // 0 for inclusion (merklized credentials) - 1 for non-merklized await erc20instance.waitForDeployment(); diff --git a/scripts/setPortalInfo.ts b/scripts/setPortalInfo.ts new file mode 100644 index 0000000..7da6dc6 --- /dev/null +++ b/scripts/setPortalInfo.ts @@ -0,0 +1,19 @@ +import { ethers } from 'hardhat'; + +async function main() { + const erc20verifierAddress = '0x87932cB2A245e729e285CA118fFcbA9d55dd8b54'; + + const ERC20Verifier = await ethers.getContractFactory('ERC20SelectiveDisclosureVerifierWithAttestations'); + const erc20Verifier = await ERC20Verifier.attach(erc20verifierAddress); + console.log(erc20Verifier, ' attached to:', await erc20Verifier.getAddress()); + + const tx = await erc20Verifier.setPortalInfo('0xbDCAa137758fa3106b42b22872102A2605Cd64F0', '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'); + console.log(tx); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/attest-tx.ts b/scripts/verax/attest-tx.ts index ceb661f..3c2a38c 100644 --- a/scripts/verax/attest-tx.ts +++ b/scripts/verax/attest-tx.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat'; async function main() { - const portalAddr = '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2'; + const portalAddr = '0x780d6cEA92B8BA2a76939bEc4f00771dBC4D79C3'; const portal = await ethers.getContractAt('IPortal', portalAddr); const abiCoder = ethers.AbiCoder.defaultAbiCoder(); @@ -15,12 +15,13 @@ async function main() { ['100', '123'] ); + console.log(encodetData); await portal.attest({ schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', expirationDate: 1747986521, subject: encodetSubject, attestationData: encodetData - }, []); + }, ['0x00']); const attestationRegistryAddress = await portal.attestationRegistry(); console.log(attestationRegistryAddress); diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index e5d91ec..33e8d4f 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -4,12 +4,12 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; // 0xefDEC213B52ed164723DfD9723AC80F73d66fB80 - test array module // 0x4F9AAA2E849fcAC816cf78827E61dAfe9051283E - ZKPVerifyModule async function main() { - const ERC20SelectiveDisclosureVerifier = '0xa5f08979370AF7095cDeDb2B83425367316FAD0B'; + // const ERC20SelectiveDisclosureVerifier = '0xa5f08979370AF7095cDeDb2B83425367316FAD0B'; - const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); - const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(ERC20SelectiveDisclosureVerifier); + const ZKPVerifyModuleFactory = await ethers.getContractFactory("VerifierModule"); + const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(); await ZKPVerifyModule.waitForDeployment(); - console.log("ZKPVerifyModule deployed to:", await ZKPVerifyModule.getAddress()); + console.log("VerifierModule deployed to:", await ZKPVerifyModule.getAddress()); // register module const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; @@ -17,9 +17,9 @@ async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); const tx = await veraxSdk.module.register( - "ZKPVerifyModule", - "This Module is used as an example of ZKPVerifyModule", - await ZKPVerifyModule.getAddress(), + "VerifierModule", + "This Module is used as an example of VerifierModule", + (await ZKPVerifyModule.getAddress()) as `0x${string}`, true ); From 8ff8ecc1b4b207ee7b985c2c68399a28dcbbe604 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 18:45:28 +0300 Subject: [PATCH 06/49] VeraxZKPVerifier --- ...tiveDisclosureVerifierWithAttestations.sol | 150 ---------- contracts/examples/VeraxZKPVerifier.sol | 90 ++++++ contracts/examples/VerifierBase.sol | 258 ++++++++++++++++++ contracts/examples/verax/VerifierModule.sol | 18 -- contracts/examples/verax/ZKPVerifyModule.sol | 34 ++- ...RC20SelectiveDisclosureWithAttestations.ts | 179 ------------ scripts/deployVeraxZKPVerifier.ts | 17 ++ scripts/setPortalInfo.ts | 13 +- scripts/setRequests-v3validator-verax.ts | 187 +++++++++++++ scripts/verax/create-attestation.ts | 54 ---- scripts/verax/create-default-portal.ts | 19 +- scripts/verax/deploy-module.ts | 14 +- scripts/verax/get-attestation.ts | 2 +- 13 files changed, 592 insertions(+), 443 deletions(-) delete mode 100644 contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol create mode 100644 contracts/examples/VeraxZKPVerifier.sol create mode 100644 contracts/examples/VerifierBase.sol delete mode 100644 contracts/examples/verax/VerifierModule.sol delete mode 100644 scripts/deployERC20SelectiveDisclosureWithAttestations.ts create mode 100644 scripts/deployVeraxZKPVerifier.ts create mode 100644 scripts/setRequests-v3validator-verax.ts delete mode 100644 scripts/verax/create-attestation.ts diff --git a/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol b/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol deleted file mode 100644 index 77458f0..0000000 --- a/contracts/examples/ERC20SelectiveDisclosureVerifierWithAttestations.sol +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.20; - -import {ERC20Upgradeable} from '@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol'; -import {PrimitiveTypeUtils} from '@iden3/contracts/lib/PrimitiveTypeUtils.sol'; -import {ICircuitValidator} from '@iden3/contracts/interfaces/ICircuitValidator.sol'; -import {ZKPVerifier} from '@iden3/contracts/verifiers/ZKPVerifier.sol'; -import {Attestation, AttestationPayload} from './verax/types/Structs.sol'; - -interface IPortal { - function attest(AttestationPayload memory attestationPayload, bytes[] memory validationPayloads) external payable; - function getAttester() external view virtual returns (address); - function attestationRegistry() external view returns (address); -} - -interface AttestationRegistry { - function getAttestationIdCounter() external view returns (uint32); - event AttestationRegistered(bytes32 indexed attestationId); - function getAttestation(bytes32 attestationId) external view returns (Attestation memory); -} - -contract ERC20SelectiveDisclosureVerifierWithAttestations is ERC20Upgradeable, ZKPVerifier { - uint64 public constant TRANSFER_REQUEST_ID_V3_VALIDATOR = 3; - event AttestError(string message); - event AttestOk(string message); - /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier - struct ERC20SelectiveDisclosureVerifierStorage { - mapping(uint256 => address) idToAddress; - mapping(address => uint256) addressToId; - mapping(uint256 => uint256) _idToOperatorOutput; - uint256 TOKEN_AMOUNT_FOR_AIRDROP_PER_ID; - IPortal attestationPortalContract; - bytes32 schemaId; - } - - // keccak256(abi.encode(uint256(keccak256("polygonid.storage.ERC20SelectiveDisclosureVerifier")) - 1)) & ~bytes32(uint256(0xff)) - bytes32 private constant ERC20SelectiveDisclosureVerifierStorageLocation = - 0xb76e10afcb000a9a2532ea819d260b0a3c0ddb1d54ee499ab0643718cbae8700; - - function _getERC20SelectiveDisclosureVerifierStorage() private pure returns (ERC20SelectiveDisclosureVerifierStorage storage $) { - assembly { - $.slot := ERC20SelectiveDisclosureVerifierStorageLocation - } - } - - modifier beforeTransfer(address to) { - ZKPVerifier.ZKPVerifierStorage storage $ = _getZKPVerifierStorage(); - require( - $.proofs[to][TRANSFER_REQUEST_ID_V3_VALIDATOR], - 'only identities who provided sig or mtp proof for transfer requests are allowed to receive tokens' - ); - _; - } - - function initialize(string memory name, string memory symbol) public initializer { - ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); - super.__ERC20_init(name, symbol); - super.__ZKPVerifier_init(_msgSender()); - $.TOKEN_AMOUNT_FOR_AIRDROP_PER_ID = 5 * 10 ** uint256(decimals()); - - } - - function setPortalInfo(address portalAddress, bytes32 schemaId) public onlyOwner { - ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); - $.attestationPortalContract = IPortal(portalAddress); - $.schemaId = schemaId; - } - - function _beforeProofSubmit( - uint64 /* requestId */, - uint256[] memory inputs, - ICircuitValidator validator - ) internal view override { - // check that challenge input is address of sender - address addr = PrimitiveTypeUtils.uint256LEToAddress( - inputs[validator.inputIndexOf('challenge')] - ); - // this is linking between msg.sender and - require(_msgSender() == addr, 'address in proof is not a sender address'); - } - - function _attest(uint256 userId, uint64 requestId, uint256 nullifier) internal { - ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); - if ($.attestationPortalContract == IPortal(address(0))) { - return; - } - AttestationPayload memory payload = AttestationPayload( - bytes32($.schemaId), - uint64(block.timestamp + 7 days), - abi.encode(userId), - abi.encode(requestId, nullifier) - ); - bytes memory validationData = abi.encode(uint256(0)); - bytes[] memory validationPayload = new bytes[](1); - validationPayload[0] = validationData; - try $.attestationPortalContract.attest(payload, validationPayload) { - emit AttestOk("attestation done"); - } catch { - emit AttestError("attestation error"); - require(false, "attestation err"); - } - } - - function _afterProofSubmit( - uint64 requestId, - uint256[] memory inputs, - ICircuitValidator validator - ) internal override { - _attest(inputs[0], requestId, inputs[4]); - if (requestId == TRANSFER_REQUEST_ID_V3_VALIDATOR) { - ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); - // if proof is given for transfer request id ( mtp or sig ) and it's a first time we mint tokens to sender - uint256 id = inputs[1]; - if ($.idToAddress[id] == address(0) && $.addressToId[_msgSender()] == 0) { - super._mint(_msgSender(), $.TOKEN_AMOUNT_FOR_AIRDROP_PER_ID); - $.addressToId[_msgSender()] = id; - $.idToAddress[id] = _msgSender(); - $._idToOperatorOutput[id] = inputs[validator.inputIndexOf('operatorOutput')]; - } - } - } - - function _update( - address from /* from */, - address to, - uint256 amount /* amount */ - ) internal override beforeTransfer(to) { - super._update(from, to, amount); - } - - function getOperatorOutput() public view returns (uint256) { - ERC20SelectiveDisclosureVerifierStorage storage $ = _getERC20SelectiveDisclosureVerifierStorage(); - uint256 id = $.addressToId[_msgSender()]; - require(id != 0, 'sender id is not found'); - return $._idToOperatorOutput[id]; - } - - function getIdByAddress(address addr) public view returns (uint256) { - return _getERC20SelectiveDisclosureVerifierStorage().addressToId[addr]; - } - - function getAddressById(uint256 id) public view returns (address) { - return _getERC20SelectiveDisclosureVerifierStorage().idToAddress[id]; - } - - function getTokenAmountForAirdropPerId() public view returns (uint256) { - return _getERC20SelectiveDisclosureVerifierStorage().TOKEN_AMOUNT_FOR_AIRDROP_PER_ID; - } - -} diff --git a/contracts/examples/VeraxZKPVerifier.sol b/contracts/examples/VeraxZKPVerifier.sol new file mode 100644 index 0000000..ce23b3a --- /dev/null +++ b/contracts/examples/VeraxZKPVerifier.sol @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import {Attestation, AttestationPayload} from './verax/types/Structs.sol'; +import {ZKPVerifierBase} from './VerifierBase.sol'; +import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; + +interface IPortal { + function attest(AttestationPayload memory attestationPayload, bytes[] memory validationPayloads) external payable; + function attestationRegistry() external view returns (address); +} + +interface AttestationRegistry { + function getAttestationIdCounter() external view returns (uint32); + event AttestationRegistered(bytes32 indexed attestationId); + function getAttestation(bytes32 attestationId) external view returns (Attestation memory); +} + +contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { + event AttestError(string message); + event AttestOk(string message); + /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier + struct VeraxZKPVerifierStorage { + IPortal attestationPortalContract; + bytes32 schemaId; + } + + // keccak256(abi.encode(uint256(keccak256("polygonid.storage.ERC20SelectiveDisclosureVerifier")) - 1)) & ~bytes32(uint256(0xff)) + bytes32 private constant VeraxZKPVerifierStorageLocation = + 0xb76e10afcb000a9a2532ea819d260b0a3c0ddb1d54ee499ab0643718cbae8700; + + function _getVeraxZKPVerifierStorage() private pure returns (VeraxZKPVerifierStorage storage $) { + assembly { + $.slot := VeraxZKPVerifierStorageLocation + } + } + + function initialize() public initializer { + __Ownable_init(_msgSender()); + } + + function setPortalInfo(address portalAddress, bytes32 schemaId) public onlyOwner { + VeraxZKPVerifierStorage storage $ = _getVeraxZKPVerifierStorage(); + $.attestationPortalContract = IPortal(portalAddress); + $.schemaId = schemaId; + } + + function _attest( uint64 requestId, + uint256[] calldata inputs, + uint256[2] calldata a, + uint256[2][2] calldata b, + uint256[2] calldata c) internal { + VeraxZKPVerifierStorage storage $ = _getVeraxZKPVerifierStorage(); + if ($.attestationPortalContract == IPortal(address(0))) { + return; + } + AttestationPayload memory payload = AttestationPayload( + bytes32($.schemaId), + uint64(block.timestamp + 7 days), + abi.encode(inputs[0]), + abi.encode(requestId, inputs[4]) + ); + bytes memory validationData = abi.encode(requestId, inputs, a, b, c); + bytes[] memory validationPayload = new bytes[](1); + validationPayload[0] = validationData; + try $.attestationPortalContract.attest(payload, validationPayload) { + emit AttestOk("attestation done"); + } catch { + emit AttestError("attestation error"); + require(false, "attestation err"); + } + } + + /// @dev Submits a ZKP response and updates proof status + /// @param requestId The ID of the ZKP request + /// @param inputs The input data for the proof + /// @param a The first component of the proof + /// @param b The second component of the proof + /// @param c The third component of the proof + function submitZKPResponse( + uint64 requestId, + uint256[] calldata inputs, + uint256[2] calldata a, + uint256[2][2] calldata b, + uint256[2] calldata c + ) public virtual override { + _attest(requestId, inputs, a, b ,c); + } + +} diff --git a/contracts/examples/VerifierBase.sol b/contracts/examples/VerifierBase.sol new file mode 100644 index 0000000..9308c1d --- /dev/null +++ b/contracts/examples/VerifierBase.sol @@ -0,0 +1,258 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.20; + +import {IZKPVerifier} from '@iden3/contracts/interfaces/IZKPVerifier.sol'; +import {ICircuitValidator} from '@iden3/contracts/interfaces/ICircuitValidator.sol'; +import {ArrayUtils} from "@iden3/contracts/lib/ArrayUtils.sol"; +import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; + +abstract contract ZKPVerifierBase is IZKPVerifier, ContextUpgradeable { + /// @dev Struct to store ZKP proof and associated data + struct Proof { + bool isVerified; + mapping(string key => uint256 inputIndex) storageFields; + string validatorVersion; + uint256 blockNumber; + uint256 blockTimestamp; + } + + /// @custom:storage-location erc7201:iden3.storage.ZKPVerifier + struct ZKPVerifierStorage { + mapping(address user => mapping(uint64 requestID => Proof)) _proofs; + mapping(uint64 requestID => IZKPVerifier.ZKPRequest) _requests; + uint64[] _requestIds; + } + + // keccak256(abi.encode(uint256(keccak256("iden3.storage.ZKPVerifier")) - 1)) & ~bytes32(uint256(0xff)); + bytes32 internal constant ZKPVerifierStorageLocation = + 0x512d18c55869273fec77e70d8a8586e3fb133e90f1db24c6bcf4ff3506ef6a00; + + /// @dev Get the main storage using assembly to ensure specific storage location + function _getZKPVerifierStorage() private pure returns (ZKPVerifierStorage storage $) { + assembly { + $.slot := ZKPVerifierStorageLocation + } + } + + /** + * @dev Max return array length for request queries + */ + uint256 public constant REQUESTS_RETURN_LIMIT = 1000; + + /// @dev Key to retrieve the linkID from the proof storage + string constant LINKED_PROOF_KEY = "linkID"; + + /// @dev Linked proof custom error + error LinkedProofError( + string message, + uint64 requestId, + uint256 linkID, + uint64 requestIdToCompare, + uint256 linkIdToCompare + ); + + /// @dev Modifier to check if the validator is set for the request + modifier checkRequestExistence(uint64 requestId, bool existence) { + if (existence) { + require(requestIdExists(requestId), "request id doesn't exist"); + } else { + require(!requestIdExists(requestId), "request id already exists"); + } + _; + } + + /// @dev Sets a ZKP request + /// @param requestId The ID of the ZKP request + /// @param request The ZKP request data + function setZKPRequest( + uint64 requestId, + IZKPVerifier.ZKPRequest calldata request + ) public virtual checkRequestExistence(requestId, false) { + ZKPVerifierStorage storage s = _getZKPVerifierStorage(); + s._requests[requestId] = request; + s._requestIds.push(requestId); + } + + /// @notice Submits a ZKP response and updates proof status + /// @param requestId The ID of the ZKP request + /// @param inputs The input data for the proof + /// @param a The first component of the proof + /// @param b The second component of the proof + /// @param c The third component of the proof + function submitZKPResponse( + uint64 requestId, + uint256[] calldata inputs, + uint256[2] calldata a, + uint256[2][2] calldata b, + uint256[2] calldata c + ) public virtual checkRequestExistence(requestId, true) { + address sender = _msgSender(); + ICircuitValidator.KeyToInputIndex[] memory pairs = _verifyZKPResponse( + requestId, + inputs, + a, + b, + c, + sender + ); + + Proof storage proof = _getZKPVerifierStorage()._proofs[sender][requestId]; + for (uint256 i = 0; i < pairs.length; i++) { + proof.storageFields[pairs[i].key] = inputs[pairs[i].inputIndex]; + } + + proof.isVerified = true; + proof.validatorVersion = _getZKPVerifierStorage()._requests[requestId].validator.version(); + proof.blockNumber = block.number; + proof.blockTimestamp = block.timestamp; + } + + /// @dev Verifies a ZKP response without updating any proof status + /// @param requestId The ID of the ZKP request + /// @param inputs The public inputs for the proof + /// @param a The first component of the proof + /// @param b The second component of the proof + /// @param c The third component of the proof + /// @param sender The sender on behalf of which the proof is done + function verifyZKPResponse( + uint64 requestId, + uint256[] calldata inputs, + uint256[2] calldata a, + uint256[2][2] calldata b, + uint256[2] calldata c, + address sender + ) + public + view + virtual + checkRequestExistence(requestId, true) + returns (ICircuitValidator.KeyToInputIndex[] memory) + { + return _verifyZKPResponse(requestId, inputs, a, b, c, sender); + } + + /// @dev Gets the list of request IDs and verifies the proofs are linked + /// @param sender the user's address + /// @param requestIds the list of request IDs + /// Throws if the proofs are not linked + function verifyLinkedProofs(address sender, uint64[] calldata requestIds) public view virtual { + require(requestIds.length > 1, "Linked proof verification needs more than 1 request"); + + uint256 expectedLinkID = getProofStorageField(sender, requestIds[0], LINKED_PROOF_KEY); + + if (expectedLinkID == 0) { + revert("Can't find linkID for given request Ids and user address"); + } + + for (uint256 i = 1; i < requestIds.length; i++) { + uint256 actualLinkID = getProofStorageField(sender, requestIds[i], LINKED_PROOF_KEY); + + if (expectedLinkID != actualLinkID) { + revert LinkedProofError( + "Proofs are not linked", + requestIds[0], + expectedLinkID, + requestIds[i], + actualLinkID + ); + } + } + } + + /// @dev Gets a specific ZKP request by ID + /// @param requestId The ID of the ZKP request + /// @return zkpRequest The ZKP request data + function getZKPRequest( + uint64 requestId + ) + public + view + checkRequestExistence(requestId, true) + returns (IZKPVerifier.ZKPRequest memory zkpRequest) + { + return _getZKPVerifierStorage()._requests[requestId]; + } + + /// @dev Gets the count of ZKP requests + /// @return The count of ZKP requests + function getZKPRequestsCount() public view returns (uint256) { + return _getZKPVerifierStorage()._requestIds.length; + } + + /// @dev Checks if a ZKP request ID exists + /// @param requestId The ID of the ZKP request + /// @return Whether the request ID exists + function requestIdExists(uint64 requestId) public view override returns (bool) { + return + _getZKPVerifierStorage()._requests[requestId].validator != + ICircuitValidator(address(0)); + } + + /// @dev Gets multiple ZKP requests within a range + /// @param startIndex The starting index of the range + /// @param length The length of the range + /// @return An array of ZKP requests within the specified range + function getZKPRequests( + uint256 startIndex, + uint256 length + ) public view returns (IZKPVerifier.ZKPRequest[] memory) { + ZKPVerifierStorage storage s = _getZKPVerifierStorage(); + (uint256 start, uint256 end) = ArrayUtils.calculateBounds( + s._requestIds.length, + startIndex, + length, + REQUESTS_RETURN_LIMIT + ); + + IZKPVerifier.ZKPRequest[] memory result = new IZKPVerifier.ZKPRequest[](end - start); + + for (uint256 i = start; i < end; i++) { + result[i - start] = s._requests[s._requestIds[i]]; + } + + return result; + } + + /// @dev Checks if proof submitted for a given sender and request ID + /// @param sender The sender's address + /// @param requestId The ID of the ZKP request + /// @return true if proof submitted + function isProofVerified( + address sender, + uint64 requestId + ) public view checkRequestExistence(requestId, true) returns (bool) { + return _getZKPVerifierStorage()._proofs[sender][requestId].isVerified; + } + + /// @dev Gets the proof storage item for a given user, request ID and key + /// @param user The user's address + /// @param requestId The ID of the ZKP request + /// @return The proof + function getProofStorageField( + address user, + uint64 requestId, + string memory key + ) public view checkRequestExistence(requestId, true) returns (uint256) { + return _getZKPVerifierStorage()._proofs[user][requestId].storageFields[key]; + } + + function _verifyZKPResponse( + uint64 requestId, + uint256[] calldata inputs, + uint256[2] calldata a, + uint256[2][2] calldata b, + uint256[2] calldata c, + address sender + ) private view returns (ICircuitValidator.KeyToInputIndex[] memory) { + IZKPVerifier.ZKPRequest memory request = _getZKPVerifierStorage()._requests[requestId]; + ICircuitValidator.KeyToInputIndex[] memory pairs = request.validator.verify( + inputs, + a, + b, + c, + request.data, + sender + ); + return pairs; + } +} diff --git a/contracts/examples/verax/VerifierModule.sol b/contracts/examples/verax/VerifierModule.sol deleted file mode 100644 index c8c5615..0000000 --- a/contracts/examples/verax/VerifierModule.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.20; - -import { AttestationPayload } from "./types/Structs.sol"; -import { AbstractModule } from "./abstracts/AbstractModule.sol"; - -contract VerifierModule is AbstractModule { - - function run( - AttestationPayload memory attestationPayload, - bytes memory validationPayload, - address txSender, - uint256 /*value*/ - ) public override { - // require(msg.sender == 0x55Fc7a60A6E6c865Cd20b8a4dae569751eA650af, "verifier not in allowed list"); - } - -} diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol index 9de9844..1814b1c 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -12,16 +12,8 @@ contract ZKPVerifyModule is AbstractModule { zkpVerifier = IZKPVerifier(_zkpVerifier); } - function run( - AttestationPayload memory attestationPayload, - bytes memory validationPayload, - address txSender, - uint256 /*value*/ - ) public override { - (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = - abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); - - (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = + function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs) internal { + (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = abi.decode(attestationPayload.attestationData, (uint64, uint256)); (uint256 attestationSubject) = @@ -30,7 +22,27 @@ contract ZKPVerifyModule is AbstractModule { require(attestationRequestId == inputs[7], "request Id doesn't match"); require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); - zkpVerifier.submitZKPResponse(requestId, inputs, a, b, c); + } + + function run( + AttestationPayload memory attestationPayload, + bytes memory validationPayload, + address txSender, + uint256 /*value*/ + ) public override { + (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = + abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); + + IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); + request.validator.verify( + inputs, + a, + b, + c, + request.data, + txSender); + + _verifyAttestationPayload(attestationPayload, inputs); } } diff --git a/scripts/deployERC20SelectiveDisclosureWithAttestations.ts b/scripts/deployERC20SelectiveDisclosureWithAttestations.ts deleted file mode 100644 index 2be0684..0000000 --- a/scripts/deployERC20SelectiveDisclosureWithAttestations.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { ethers, upgrades } from 'hardhat'; -import { packV3ValidatorParams } from '../test/utils/pack-utils'; -import { calculateQueryHashV3, buildVerifierId, coreSchemaFromStr } from '../test/utils/utils'; -import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; - -const Operators = { - NOOP: 0, // No operation, skip query verification in circuit - EQ: 1, // equal - LT: 2, // less than - GT: 3, // greater than - IN: 4, // in - NIN: 5, // not in - NE: 6, // not equal - SD: 16 // selective disclosure -}; - -async function main() { - // you can run https://go.dev/play/p/3id7HAhf-Wi to get schema hash and claimPathKey using YOUR schema - const schema = '74977327600848231385663280181476307657'; - // merklized path to field in the W3C credential according to JSONLD schema e.g. birthday in the KYCAgeCredential under the url "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld" - const schemaUrl = - 'https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld'; - const type = 'KYCAgeCredential'; - const schemaClaimPathKey = - '20376033832371109177683048456014525905119173674985843915445634726167450989630'; - const value = []; - const actualValueArraySize = 0; - const merklized = 1; - const slotIndex = 0; // because schema is merklized for merklized credential, otherwise you should actual put slot index https://docs.iden3.io/protocol/non-merklized/#motivation - const isRevocationChecked = 1; - - const contractName = 'ERC20SelectiveDisclosureVerifierWithAttestations'; - const name = 'ERC20SelectiveDisclosureVerifierWithAttestations'; - const symbol = 'ERCZKP'; - const ERC20ContractFactory = await ethers.getContractFactory(contractName); - const erc20instance = await upgrades.deployProxy(ERC20ContractFactory, [name, symbol]); - const claimPathDoesntExist = 0; // 0 for inclusion (merklized credentials) - 1 for non-merklized - - await erc20instance.waitForDeployment(); - console.log(contractName, ' deployed to:', await erc20instance.getAddress()); - - // set default query - const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; - - // current v3 validator address on mumbai - // const validatorAddressV3 = '0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a'; - // - // const chainId = 80001; - // - // const network = 'polygon-mumbai'; - - // current v3 validator address on amoy - - const validatorAddressV3 = '0xba0EB888B1CDD41523d541E0d06246460f0D32a8'; - - const chainId = 59141; - - registerDidMethodNetwork({ - method: DidMethod.PolygonId, - blockchain: "linea", - chainId: 59141, - network: "sepolia", - networkFlag: 0b0100_0000 | 0b0000_1000, - }); - - const network = 'linea-sepolia'; - - const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); - - if (!networkFlag) { - throw new Error(`Invalid chain id ${chainId}`); - } - const [blockchain, networkId] = networkFlag.split(':'); - - const id = buildVerifierId(await erc20instance.getAddress(), { - blockchain, - networkId, - method: DidMethod.PolygonId - }); - const verifierID = id.bigInt(); - const nullifierSessionID = 0; - const schemaHash = coreSchemaFromStr(schema); - console.log('verifier id = ' + id.bigInt().toString()); - - // current v3 validator address on main - // const validatorAddressV3 = ''; - - // const network = 'polygon-main'; - // - // const chainId = 137; - const query = { - schema: schema, - claimPathKey: schemaClaimPathKey, - operator: Operators.SD, - slotIndex: slotIndex, - value: value, - queryHash: calculateQueryHashV3( - value, - schemaHash, - slotIndex, - Operators.SD, - schemaClaimPathKey, - actualValueArraySize, - merklized, - isRevocationChecked, - verifierID.toString(), - nullifierSessionID - ).toString(), - circuitIds: [circuitIdV3], - allowedIssuers: [], - skipClaimRevocationCheck: false, - nullifierSessionID: 0, - verifierID: verifierID.toString(), - groupID: 0, - proofType: 1 - }; - - const requestIdV3 = await erc20instance.TRANSFER_REQUEST_ID_V3_VALIDATOR(); - - console.log(DID.parseFromId(id).string()); - const invokeRequestMetadata = { - id: '7f38a193-0918-4a48-9fac-36adfdb8b542', - typ: 'application/iden3comm-plain-json', - type: 'https://iden3-communication.io/proofs/1.0/contract-invoke-request', - thid: '7f38a193-0918-4a48-9fac-36adfdb8b542', - from: DID.parseFromId(id).string(), - body: { - reason: 'for testing', - transaction_data: { - contract_address: await erc20instance.getAddress(), - method_id: 'b68967e2', - chain_id: chainId, - network: network - }, - scope: [ - { - id: requestIdV3, - circuitId: circuitIdV3, - proofType: 'BJJSignature2021', - query: { - allowedIssuers: ['*'], - context: schemaUrl, - credentialSubject: { - birthday: {} - }, - type: type - } - } - ] - } - }; - - try { - const x = JSON.stringify(invokeRequestMetadata, (_, v) => - typeof v === 'bigint' ? v.toString() : v - ); - - // v3 request set - const txV3 = await erc20instance.setZKPRequest(requestIdV3, { - metadata: JSON.stringify(invokeRequestMetadata, (_, v) => - typeof v === 'bigint' ? v.toString() : v - ), - validator: validatorAddressV3, - data: packV3ValidatorParams(query) - }); - - console.log(txV3.hash); - await txV3.wait(); - } catch (e) { - console.log('error: ', e); - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/scripts/deployVeraxZKPVerifier.ts b/scripts/deployVeraxZKPVerifier.ts new file mode 100644 index 0000000..5e3aaca --- /dev/null +++ b/scripts/deployVeraxZKPVerifier.ts @@ -0,0 +1,17 @@ +import { ethers, upgrades } from 'hardhat'; + +async function main() { + const contractName = 'VeraxZKPVerifier'; + const ERC20ContractFactory = await ethers.getContractFactory(contractName); + const erc20instance = await upgrades.deployProxy(ERC20ContractFactory, []); + + await erc20instance.waitForDeployment(); + console.log(contractName, ' deployed to:', await erc20instance.getAddress()); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/setPortalInfo.ts b/scripts/setPortalInfo.ts index 7da6dc6..31bcd6e 100644 --- a/scripts/setPortalInfo.ts +++ b/scripts/setPortalInfo.ts @@ -1,13 +1,16 @@ import { ethers } from 'hardhat'; async function main() { - const erc20verifierAddress = '0x87932cB2A245e729e285CA118fFcbA9d55dd8b54'; + const veraxVerifierAddress = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; - const ERC20Verifier = await ethers.getContractFactory('ERC20SelectiveDisclosureVerifierWithAttestations'); - const erc20Verifier = await ERC20Verifier.attach(erc20verifierAddress); - console.log(erc20Verifier, ' attached to:', await erc20Verifier.getAddress()); + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); + const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); + console.log(verax, ' attached to:', await verax.getAddress()); - const tx = await erc20Verifier.setPortalInfo('0xbDCAa137758fa3106b42b22872102A2605Cd64F0', '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'); + const tx = await verax.setPortalInfo( + '0x0a5Fd0b1694F0A9926FAbf0b3f2f7226BB0793E9', + '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e' + ); console.log(tx); } diff --git a/scripts/setRequests-v3validator-verax.ts b/scripts/setRequests-v3validator-verax.ts new file mode 100644 index 0000000..fb48d70 --- /dev/null +++ b/scripts/setRequests-v3validator-verax.ts @@ -0,0 +1,187 @@ +import { ethers } from 'hardhat'; +import { packV3ValidatorParams } from '../test/utils/pack-utils'; +import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; +import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../test/utils/utils'; +const Operators = { + NOOP: 0, // No operation, skip query verification in circuit + EQ: 1, // equal + LT: 2, // less than + GT: 3, // greater than + IN: 4, // in + NIN: 5, // not in + NE: 6, // not equal + SD: 16, // selective disclosure + LTE: 7, // less than equal + GTE: 8, // greater than equal + BETWEEN: 9, // between + NONBETWEEN: 10, // non between + EXISTS: 11 // exists +}; + +export const QueryOperators = { + $noop: Operators.NOOP, + $eq: Operators.EQ, + $lt: Operators.LT, + $gt: Operators.GT, + $in: Operators.IN, + $nin: Operators.NIN, + $ne: Operators.NE, + $sd: Operators.SD, + $between: Operators.BETWEEN, + $nonbetween: Operators.NONBETWEEN, + $exists: Operators.EXISTS, + $lte: Operators.LTE, + $gte: Operators.GTE +}; + +async function main() { + const validatorAddressV3 = '0xba0EB888B1CDD41523d541E0d06246460f0D32a8'; + const erc20verifierAddress = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; // verax validator + + const ERC20Verifier = await ethers.getContractFactory('VeraxZKPVerifier'); + const erc20Verifier = await ERC20Verifier.attach(erc20verifierAddress); // current mtp validator address on mumbai + console.log(erc20Verifier, ' attached to:', await erc20Verifier.getAddress()); + + // set default query + const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; + + const type = 'KYCAgeCredential'; + + const queryHash = ''; + const circuitIds = [circuitIdV3]; + const skipClaimRevocationCheck = false; + const allowedIssuers = []; + const schemaUrl = + 'https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v3.json-ld'; + const schema = '74977327600848231385663280181476307657'; + const schemaClaimPathKey = + '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + const slotIndex = 0; + const merklized = 1; + const requestIdModifier = 1; + const groupID = 0; + + const chainId = 59141; + + const network = 'linea-sepolia'; + + registerDidMethodNetwork({ + method: DidMethod.PolygonId, + blockchain: 'linea', + chainId: 59141, + network: 'sepolia', + networkFlag: 0b0100_0000 | 0b0000_1000 + }); + + const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); + + if (!networkFlag) { + throw new Error(`Invalid chain id ${chainId}`); + } + const [blockchain, networkId] = networkFlag.split(':'); + + const verifierId = buildVerifierId(await erc20Verifier.getAddress(), { + blockchain, + networkId, + method: DidMethod.PolygonId + }); + console.log(verifierId.bigInt()); + const ageQueries = [ + // LT + { + requestId: 200 * requestIdModifier, + schema: schema, + claimPathKey: schemaClaimPathKey, + operator: Operators.LT, + value: [20020101], + slotIndex, + queryHash, + circuitIds, + allowedIssuers, + skipClaimRevocationCheck, + verifierID: verifierId.bigInt(), + nullifierSessionID: 5543, + groupID, + proofType: 0 + } + ]; + console.log(DID.parseFromId(verifierId).string()); + + try { + for (let i = 0; i < ageQueries.length; i++) { + const query = ageQueries[i]; + console.log(query.requestId); + + const operatorKey = + Object.keys(QueryOperators)[Object.values(QueryOperators).indexOf(query.operator)]; + + const schemaHash = coreSchemaFromStr(query.schema); + query.queryHash = calculateQueryHashV3( + query.value.map((i) => BigInt(i)), + schemaHash, + query.slotIndex, + query.operator, + query.claimPathKey, + query.value.length, + merklized, + query.skipClaimRevocationCheck ? 0 : 1, + query.verifierID.toString(), + query.nullifierSessionID + ).toString(); + + const invokeRequestMetadata = { + id: '7f38a193-0918-4a48-9fac-36adfdb8b542', + typ: 'application/iden3comm-plain-json', + type: 'https://iden3-communication.io/proofs/1.0/contract-invoke-request', + thid: '7f38a193-0918-4a48-9fac-36adfdb8b542', + from: DID.parseFromId(verifierId).string(), + body: { + reason: 'for testing', + transaction_data: { + contract_address: erc20verifierAddress, + method_id: 'b68967e2', + chain_id: chainId, + network: network + }, + scope: [ + { + id: query.requestId, + circuitId: circuitIdV3, + query: { + allowedIssuers: ['*'], + context: schemaUrl, + credentialSubject: { + birthday: { + [operatorKey]: + query.operator === Operators.IN || query.operator === Operators.NIN + ? query.value + : query.value[0] + } + }, + type: type + } + } + ] + } + }; + + const tx = await erc20Verifier.setZKPRequest(query.requestId, { + metadata: JSON.stringify(invokeRequestMetadata), + validator: validatorAddressV3, + data: packV3ValidatorParams(query) + }); + + console.log(tx.hash); + await tx.wait(); + } + } catch (e) { + console.log('error: ', e); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/create-attestation.ts b/scripts/verax/create-attestation.ts deleted file mode 100644 index 73fab80..0000000 --- a/scripts/verax/create-attestation.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; -import { ethers } from "hardhat"; - -// const myVeraxConfiguratin = { -// chain: lineaSepolia, -// mode: 'BACKEND', // no exported SDKMode -// subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.1", -// portalRegistryAddress: "0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89", -// moduleRegistryAddress: "0x9f677f957D15451784E83d33a341bad6f9D1C65D", -// schemaRegistryAddress: "0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2", -// attestationRegistryAddress: "0xf76d5add093023C4cFE72d0a2f1c81541B23d832", -// }; -const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; -const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; - -// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - Empty portal address -// 0x12b756507B0eEd99cDaa1F66A2aA0E7904C61a94 - TestArr portal address -// 0x3d5FE35a0a09f25Abf1eb2560F6D3c60aB11E155 - ERC20SelectiveDisclosureVerifier portal address - -async function main() { - const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - - // const abiCoder = ethers.AbiCoder.defaultAbiCoder(); - // const encodedStruct = abiCoder.encode( - // ['uint64', 'uint256[]', 'uint256[2]', 'uint256[2][2]', 'uint256[2]'], - // [20000000,["21947821518962939314223753062600516493439826064799158636175370094818183170","6970106913944892530552700249775420621341287487534765926353279236456265255864","4487386332479489158003597844990487984925471813907462483907054425759564175341","533473131577915367476165056327875253276681460783582863497090277099337971105","7324279704276530468934624281016444667267090475638299627277301259037185954432","0","1","20000000","1431577103466539860889070794567000572122770392124","9879168730229456872604337288681695602254716535779031802650050292724434954684","25571237683927356215327292862834554260036362329602968527595654475912071170","4487386332479489158003597844990487984925471813907462483907054425759564175341","1716546415","1"],["5566335821639770948969011395405716127205787970847714294439548191780662246845","21820014235253014342321399313588367322033324491448325865818649779408202656610"],[["12870122324904285559850956281066811735477833774920640636931773375921633109664","946069213489297067328644090777463155196723099886623905975224229695689717734"],["1065158600041212067855179148138277052772055567696470394188312244035782309397","10237291963189911388883251020725094017303190606999878018556231085446393623407"]],["18889845494154296364722239210583031827437199030955471939444885330253899099679","9652173707176294295141561707960305896978582458911068602677630518372208444453"]] - // ); - - // const encodedSubject = abiCoder.encode( - // ['unit256'], - // ['21947821518962939314223753062600516493439826064799158636175370094818183170'] - // ); - - // console.log(encodedStruct); - // console.log('encodedSubject', encodedSubject); - const tx = await veraxSdk.portal.attest( - '0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2', - { - schemaId: '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e', - subject: '0x1', // user id bytes, - expirationDate: 1747986521, - attestationData: [{requestId: 20000000, nullifierSessionID: '7324279704276530468934624281016444667267090475638299627277301259037185954432'}] - }, - [], - true); - console.log(tx); -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 8f865ba..4cd1281 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -1,29 +1,14 @@ -import { VeraxSdk, Conf } from "@verax-attestation-registry/verax-sdk"; -import { lineaSepolia } from "viem/chains"; +import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; -// const myVeraxConfiguratin = { -// chain: lineaSepolia, -// mode: 'BACKEND', // no exported SDKMode -// subgraphUrl: "https://api.studio.thegraph.com/query/67521/verax-v1-linea-sepolia/v0.0.1", -// portalRegistryAddress: "0xe5b5CBABa557BFC18fC66c74dFaBAe65702e0d89", -// moduleRegistryAddress: "0x9f677f957D15451784E83d33a341bad6f9D1C65D", -// schemaRegistryAddress: "0x8a439d5FA9E8014808ff0A6D92903C0DaB1fB0A2", -// attestationRegistryAddress: "0xf76d5add093023C4cFE72d0a2f1c81541B23d832", -// }; const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; - -// 0x7E8fdD0803BcC1A41cE432AdD07CA6C4E5F92eE2 - empty portal address -// 0x12b756507B0eEd99cDaa1F66A2aA0E7904C61a94 - Test arr portal -// 0x84d6Fe2e83C7E5646Ca7CD678209D7312aBcF4ca - ERC20SelectiveDisclosureVerifier portal address async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); const tx = await veraxSdk.portal.deployDefaultPortal( - ['0xCd777CA89815a0A9990f8B9e2443694888131290'], "ERC20SelectiveDisclosureVerifier portal", "This Portal is used as an example for ERC20SelectiveDisclosureVerifier contract", false, "Iden3", true); + ['0x40a2b25e60C5E5E2DDA123480d80e8E0D3F43255'], "ZKPVerifyModule portal", "This Portal is used as an example for ZKPVerifyModule contract", false, "Iden3", true); console.log(tx); - } main() diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index 33e8d4f..fdd3260 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -1,15 +1,13 @@ import { ethers } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; -// 0xefDEC213B52ed164723DfD9723AC80F73d66fB80 - test array module -// 0x4F9AAA2E849fcAC816cf78827E61dAfe9051283E - ZKPVerifyModule async function main() { - // const ERC20SelectiveDisclosureVerifier = '0xa5f08979370AF7095cDeDb2B83425367316FAD0B'; + const VeraxZKPVerifier = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; - const ZKPVerifyModuleFactory = await ethers.getContractFactory("VerifierModule"); - const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(); + const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); + const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); await ZKPVerifyModule.waitForDeployment(); - console.log("VerifierModule deployed to:", await ZKPVerifyModule.getAddress()); + console.log("ZKPVerifyModule deployed to:", await ZKPVerifyModule.getAddress()); // register module const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; @@ -17,8 +15,8 @@ async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); const tx = await veraxSdk.module.register( - "VerifierModule", - "This Module is used as an example of VerifierModule", + "ZKPVerifyModule", + "This Module is used as an example of ZKPVerifyModule", (await ZKPVerifyModule.getAddress()) as `0x${string}`, true ); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index eda8016..c73c693 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000a0'; + const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000cd'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); From 943a7ae19568bc00e7853cab3977ffde33a06bbc Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 18:52:11 +0300 Subject: [PATCH 07/49] import ZKPVerifierBase --- contracts/examples/VeraxZKPVerifier.sol | 2 +- contracts/examples/VerifierBase.sol | 258 ------------------------ 2 files changed, 1 insertion(+), 259 deletions(-) delete mode 100644 contracts/examples/VerifierBase.sol diff --git a/contracts/examples/VeraxZKPVerifier.sol b/contracts/examples/VeraxZKPVerifier.sol index ce23b3a..e584b6e 100644 --- a/contracts/examples/VeraxZKPVerifier.sol +++ b/contracts/examples/VeraxZKPVerifier.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.20; import {Attestation, AttestationPayload} from './verax/types/Structs.sol'; -import {ZKPVerifierBase} from './VerifierBase.sol'; +import {ZKPVerifierBase} from '@iden3/contracts/verifiers/ZKPVerifierBase.sol'; import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; interface IPortal { diff --git a/contracts/examples/VerifierBase.sol b/contracts/examples/VerifierBase.sol deleted file mode 100644 index 9308c1d..0000000 --- a/contracts/examples/VerifierBase.sol +++ /dev/null @@ -1,258 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity 0.8.20; - -import {IZKPVerifier} from '@iden3/contracts/interfaces/IZKPVerifier.sol'; -import {ICircuitValidator} from '@iden3/contracts/interfaces/ICircuitValidator.sol'; -import {ArrayUtils} from "@iden3/contracts/lib/ArrayUtils.sol"; -import {ContextUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol"; - -abstract contract ZKPVerifierBase is IZKPVerifier, ContextUpgradeable { - /// @dev Struct to store ZKP proof and associated data - struct Proof { - bool isVerified; - mapping(string key => uint256 inputIndex) storageFields; - string validatorVersion; - uint256 blockNumber; - uint256 blockTimestamp; - } - - /// @custom:storage-location erc7201:iden3.storage.ZKPVerifier - struct ZKPVerifierStorage { - mapping(address user => mapping(uint64 requestID => Proof)) _proofs; - mapping(uint64 requestID => IZKPVerifier.ZKPRequest) _requests; - uint64[] _requestIds; - } - - // keccak256(abi.encode(uint256(keccak256("iden3.storage.ZKPVerifier")) - 1)) & ~bytes32(uint256(0xff)); - bytes32 internal constant ZKPVerifierStorageLocation = - 0x512d18c55869273fec77e70d8a8586e3fb133e90f1db24c6bcf4ff3506ef6a00; - - /// @dev Get the main storage using assembly to ensure specific storage location - function _getZKPVerifierStorage() private pure returns (ZKPVerifierStorage storage $) { - assembly { - $.slot := ZKPVerifierStorageLocation - } - } - - /** - * @dev Max return array length for request queries - */ - uint256 public constant REQUESTS_RETURN_LIMIT = 1000; - - /// @dev Key to retrieve the linkID from the proof storage - string constant LINKED_PROOF_KEY = "linkID"; - - /// @dev Linked proof custom error - error LinkedProofError( - string message, - uint64 requestId, - uint256 linkID, - uint64 requestIdToCompare, - uint256 linkIdToCompare - ); - - /// @dev Modifier to check if the validator is set for the request - modifier checkRequestExistence(uint64 requestId, bool existence) { - if (existence) { - require(requestIdExists(requestId), "request id doesn't exist"); - } else { - require(!requestIdExists(requestId), "request id already exists"); - } - _; - } - - /// @dev Sets a ZKP request - /// @param requestId The ID of the ZKP request - /// @param request The ZKP request data - function setZKPRequest( - uint64 requestId, - IZKPVerifier.ZKPRequest calldata request - ) public virtual checkRequestExistence(requestId, false) { - ZKPVerifierStorage storage s = _getZKPVerifierStorage(); - s._requests[requestId] = request; - s._requestIds.push(requestId); - } - - /// @notice Submits a ZKP response and updates proof status - /// @param requestId The ID of the ZKP request - /// @param inputs The input data for the proof - /// @param a The first component of the proof - /// @param b The second component of the proof - /// @param c The third component of the proof - function submitZKPResponse( - uint64 requestId, - uint256[] calldata inputs, - uint256[2] calldata a, - uint256[2][2] calldata b, - uint256[2] calldata c - ) public virtual checkRequestExistence(requestId, true) { - address sender = _msgSender(); - ICircuitValidator.KeyToInputIndex[] memory pairs = _verifyZKPResponse( - requestId, - inputs, - a, - b, - c, - sender - ); - - Proof storage proof = _getZKPVerifierStorage()._proofs[sender][requestId]; - for (uint256 i = 0; i < pairs.length; i++) { - proof.storageFields[pairs[i].key] = inputs[pairs[i].inputIndex]; - } - - proof.isVerified = true; - proof.validatorVersion = _getZKPVerifierStorage()._requests[requestId].validator.version(); - proof.blockNumber = block.number; - proof.blockTimestamp = block.timestamp; - } - - /// @dev Verifies a ZKP response without updating any proof status - /// @param requestId The ID of the ZKP request - /// @param inputs The public inputs for the proof - /// @param a The first component of the proof - /// @param b The second component of the proof - /// @param c The third component of the proof - /// @param sender The sender on behalf of which the proof is done - function verifyZKPResponse( - uint64 requestId, - uint256[] calldata inputs, - uint256[2] calldata a, - uint256[2][2] calldata b, - uint256[2] calldata c, - address sender - ) - public - view - virtual - checkRequestExistence(requestId, true) - returns (ICircuitValidator.KeyToInputIndex[] memory) - { - return _verifyZKPResponse(requestId, inputs, a, b, c, sender); - } - - /// @dev Gets the list of request IDs and verifies the proofs are linked - /// @param sender the user's address - /// @param requestIds the list of request IDs - /// Throws if the proofs are not linked - function verifyLinkedProofs(address sender, uint64[] calldata requestIds) public view virtual { - require(requestIds.length > 1, "Linked proof verification needs more than 1 request"); - - uint256 expectedLinkID = getProofStorageField(sender, requestIds[0], LINKED_PROOF_KEY); - - if (expectedLinkID == 0) { - revert("Can't find linkID for given request Ids and user address"); - } - - for (uint256 i = 1; i < requestIds.length; i++) { - uint256 actualLinkID = getProofStorageField(sender, requestIds[i], LINKED_PROOF_KEY); - - if (expectedLinkID != actualLinkID) { - revert LinkedProofError( - "Proofs are not linked", - requestIds[0], - expectedLinkID, - requestIds[i], - actualLinkID - ); - } - } - } - - /// @dev Gets a specific ZKP request by ID - /// @param requestId The ID of the ZKP request - /// @return zkpRequest The ZKP request data - function getZKPRequest( - uint64 requestId - ) - public - view - checkRequestExistence(requestId, true) - returns (IZKPVerifier.ZKPRequest memory zkpRequest) - { - return _getZKPVerifierStorage()._requests[requestId]; - } - - /// @dev Gets the count of ZKP requests - /// @return The count of ZKP requests - function getZKPRequestsCount() public view returns (uint256) { - return _getZKPVerifierStorage()._requestIds.length; - } - - /// @dev Checks if a ZKP request ID exists - /// @param requestId The ID of the ZKP request - /// @return Whether the request ID exists - function requestIdExists(uint64 requestId) public view override returns (bool) { - return - _getZKPVerifierStorage()._requests[requestId].validator != - ICircuitValidator(address(0)); - } - - /// @dev Gets multiple ZKP requests within a range - /// @param startIndex The starting index of the range - /// @param length The length of the range - /// @return An array of ZKP requests within the specified range - function getZKPRequests( - uint256 startIndex, - uint256 length - ) public view returns (IZKPVerifier.ZKPRequest[] memory) { - ZKPVerifierStorage storage s = _getZKPVerifierStorage(); - (uint256 start, uint256 end) = ArrayUtils.calculateBounds( - s._requestIds.length, - startIndex, - length, - REQUESTS_RETURN_LIMIT - ); - - IZKPVerifier.ZKPRequest[] memory result = new IZKPVerifier.ZKPRequest[](end - start); - - for (uint256 i = start; i < end; i++) { - result[i - start] = s._requests[s._requestIds[i]]; - } - - return result; - } - - /// @dev Checks if proof submitted for a given sender and request ID - /// @param sender The sender's address - /// @param requestId The ID of the ZKP request - /// @return true if proof submitted - function isProofVerified( - address sender, - uint64 requestId - ) public view checkRequestExistence(requestId, true) returns (bool) { - return _getZKPVerifierStorage()._proofs[sender][requestId].isVerified; - } - - /// @dev Gets the proof storage item for a given user, request ID and key - /// @param user The user's address - /// @param requestId The ID of the ZKP request - /// @return The proof - function getProofStorageField( - address user, - uint64 requestId, - string memory key - ) public view checkRequestExistence(requestId, true) returns (uint256) { - return _getZKPVerifierStorage()._proofs[user][requestId].storageFields[key]; - } - - function _verifyZKPResponse( - uint64 requestId, - uint256[] calldata inputs, - uint256[2] calldata a, - uint256[2][2] calldata b, - uint256[2] calldata c, - address sender - ) private view returns (ICircuitValidator.KeyToInputIndex[] memory) { - IZKPVerifier.ZKPRequest memory request = _getZKPVerifierStorage()._requests[requestId]; - ICircuitValidator.KeyToInputIndex[] memory pairs = request.validator.verify( - inputs, - a, - b, - c, - request.data, - sender - ); - return pairs; - } -} From a7656e46821e9dbd008bbc76e731fab7f056b82d Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 18:57:20 +0300 Subject: [PATCH 08/49] move to verax folder and unique check --- contracts/examples/{ => verax}/VeraxZKPVerifier.sol | 2 +- contracts/examples/verax/ZKPVerifyModule.sol | 4 ++++ scripts/{ => verax}/deployVeraxZKPVerifier.ts | 0 scripts/{ => verax}/setRequests-v3validator-verax.ts | 4 ++-- 4 files changed, 7 insertions(+), 3 deletions(-) rename contracts/examples/{ => verax}/VeraxZKPVerifier.sol (97%) rename scripts/{ => verax}/deployVeraxZKPVerifier.ts (100%) rename scripts/{ => verax}/setRequests-v3validator-verax.ts (98%) diff --git a/contracts/examples/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol similarity index 97% rename from contracts/examples/VeraxZKPVerifier.sol rename to contracts/examples/verax/VeraxZKPVerifier.sol index e584b6e..2da9576 100644 --- a/contracts/examples/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.20; -import {Attestation, AttestationPayload} from './verax/types/Structs.sol'; +import {Attestation, AttestationPayload} from './types/Structs.sol'; import {ZKPVerifierBase} from '@iden3/contracts/verifiers/ZKPVerifierBase.sol'; import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol index 1814b1c..e73a11b 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -8,6 +8,8 @@ import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; contract ZKPVerifyModule is AbstractModule { IZKPVerifier public zkpVerifier; + mapping (uint256 nullifierSessionID => bool) isNullifierAttested; + constructor(address _zkpVerifier) { zkpVerifier = IZKPVerifier(_zkpVerifier); } @@ -32,6 +34,8 @@ contract ZKPVerifyModule is AbstractModule { ) public override { (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); + + require(!isNullifierAttested[inputs[7]], "attestation for nullifier already provided"); IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); request.validator.verify( diff --git a/scripts/deployVeraxZKPVerifier.ts b/scripts/verax/deployVeraxZKPVerifier.ts similarity index 100% rename from scripts/deployVeraxZKPVerifier.ts rename to scripts/verax/deployVeraxZKPVerifier.ts diff --git a/scripts/setRequests-v3validator-verax.ts b/scripts/verax/setRequests-v3validator-verax.ts similarity index 98% rename from scripts/setRequests-v3validator-verax.ts rename to scripts/verax/setRequests-v3validator-verax.ts index fb48d70..9a69282 100644 --- a/scripts/setRequests-v3validator-verax.ts +++ b/scripts/verax/setRequests-v3validator-verax.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat'; -import { packV3ValidatorParams } from '../test/utils/pack-utils'; +import { packV3ValidatorParams } from '../../test/utils/pack-utils'; import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; -import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../test/utils/utils'; +import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../../test/utils/utils'; const Operators = { NOOP: 0, // No operation, skip query verification in circuit EQ: 1, // equal From 933282ff72b6669588bf470077a916712804088e Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 18:57:59 +0300 Subject: [PATCH 09/49] move setPortalInfo --- scripts/{ => verax}/setPortalInfo.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/{ => verax}/setPortalInfo.ts (100%) diff --git a/scripts/setPortalInfo.ts b/scripts/verax/setPortalInfo.ts similarity index 100% rename from scripts/setPortalInfo.ts rename to scripts/verax/setPortalInfo.ts From 361fd39d0981049b68bebd14516d218535ac7fda Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Mon, 27 May 2024 19:18:06 +0300 Subject: [PATCH 10/49] isNullifierAttested & readme --- contracts/examples/verax/ZKPVerifyModule.sol | 5 ++++- scripts/verax/Readme.md | 9 +++++++++ scripts/verax/create-default-portal.ts | 3 ++- scripts/verax/deploy-module.ts | 2 +- scripts/verax/get-attestation.ts | 2 +- scripts/verax/setPortalInfo.ts | 5 +++-- scripts/verax/setRequests-v3validator-verax.ts | 14 +++++++------- 7 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 scripts/verax/Readme.md diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModule.sol index e73a11b..bfbf987 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModule.sol @@ -35,7 +35,8 @@ contract ZKPVerifyModule is AbstractModule { (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); - require(!isNullifierAttested[inputs[7]], "attestation for nullifier already provided"); + uint256 nullifierSessionId = inputs[4]; + require(!isNullifierAttested[nullifierSessionId], "attestation for nullifier already provided"); IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); request.validator.verify( @@ -47,6 +48,8 @@ contract ZKPVerifyModule is AbstractModule { txSender); _verifyAttestationPayload(attestationPayload, inputs); + + isNullifierAttested[nullifierSessionId] = true; } } diff --git a/scripts/verax/Readme.md b/scripts/verax/Readme.md new file mode 100644 index 0000000..1702af3 --- /dev/null +++ b/scripts/verax/Readme.md @@ -0,0 +1,9 @@ +1. npx hardhat run scripts/verax/deployVeraxZKPVerifier.ts --network sepolia +2. npx hardhat run scripts/verax/setRequests-v3validator-verax.ts --network sepolia (replace `veraxZKPVerifierAddress`) +3. npx hardhat run scripts/verax/deploy-module.ts --network sepolia (replace `VeraxZKPVerifier`) +4. npx ts-node scripts/verax/create-default-portal.ts (replace `moduleAddress`) +5. npx hardhat run scripts/verax/setPortalInfo.ts --network sepolia (replace `veraxVerifierAddress` and `portalAddress`) + +Check attestation on https://sepolia.lineascan.build/address/0xDaf3C3632327343f7df0Baad2dc9144fa4e1001F#events + +npx ts-node scripts/verax/get-attestation.ts (replace `attestationId`) \ No newline at end of file diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 4cd1281..462b804 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -5,8 +5,9 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + const moduleAddress = '0xF2a68Cb1ab2AE548943805695af580901A6C7B48'; const tx = await veraxSdk.portal.deployDefaultPortal( - ['0x40a2b25e60C5E5E2DDA123480d80e8E0D3F43255'], "ZKPVerifyModule portal", "This Portal is used as an example for ZKPVerifyModule contract", false, "Iden3", true); + [moduleAddress], "ZKPVerifyModule portal", "This Portal is used as an example for ZKPVerifyModule contract", false, "Iden3", true); console.log(tx); } diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index fdd3260..7b9299e 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -2,7 +2,7 @@ import { ethers } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { - const VeraxZKPVerifier = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; + const VeraxZKPVerifier = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index c73c693..ffeda04 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000cd'; + const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000d5'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); diff --git a/scripts/verax/setPortalInfo.ts b/scripts/verax/setPortalInfo.ts index 31bcd6e..e4b17dd 100644 --- a/scripts/verax/setPortalInfo.ts +++ b/scripts/verax/setPortalInfo.ts @@ -1,14 +1,15 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; + const veraxVerifierAddress = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); + const portalAddress = '0xe8acF827a91b9B4996Cad687f4d9cd0f6b3B9eA9'; const tx = await verax.setPortalInfo( - '0x0a5Fd0b1694F0A9926FAbf0b3f2f7226BB0793E9', + portalAddress, '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e' ); console.log(tx); diff --git a/scripts/verax/setRequests-v3validator-verax.ts b/scripts/verax/setRequests-v3validator-verax.ts index 9a69282..eb2cc5a 100644 --- a/scripts/verax/setRequests-v3validator-verax.ts +++ b/scripts/verax/setRequests-v3validator-verax.ts @@ -36,11 +36,11 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0xba0EB888B1CDD41523d541E0d06246460f0D32a8'; - const erc20verifierAddress = '0x04669EFfB55D3Ed7EEeC10b6E8227405AEA9B33a'; // verax validator + const veraxZKPVerifierAddress = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; // verax validator - const ERC20Verifier = await ethers.getContractFactory('VeraxZKPVerifier'); - const erc20Verifier = await ERC20Verifier.attach(erc20verifierAddress); // current mtp validator address on mumbai - console.log(erc20Verifier, ' attached to:', await erc20Verifier.getAddress()); + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); + const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai + console.log(veraxVerifier, ' attached to:', await veraxVerifier.getAddress()); // set default query const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; @@ -80,7 +80,7 @@ async function main() { } const [blockchain, networkId] = networkFlag.split(':'); - const verifierId = buildVerifierId(await erc20Verifier.getAddress(), { + const verifierId = buildVerifierId(await veraxVerifier.getAddress(), { blockchain, networkId, method: DidMethod.PolygonId @@ -138,7 +138,7 @@ async function main() { body: { reason: 'for testing', transaction_data: { - contract_address: erc20verifierAddress, + contract_address: veraxZKPVerifierAddress, method_id: 'b68967e2', chain_id: chainId, network: network @@ -165,7 +165,7 @@ async function main() { } }; - const tx = await erc20Verifier.setZKPRequest(query.requestId, { + const tx = await veraxVerifier.setZKPRequest(query.requestId, { metadata: JSON.stringify(invokeRequestMetadata), validator: validatorAddressV3, data: packV3ValidatorParams(query) From 34f316bd3a19f89ebf7a628010f4ab9bb6e1c050 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 28 May 2024 09:47:55 +0300 Subject: [PATCH 11/49] add diagram --- scripts/verax/Readme.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/verax/Readme.md b/scripts/verax/Readme.md index 1702af3..97adc37 100644 --- a/scripts/verax/Readme.md +++ b/scripts/verax/Readme.md @@ -1,3 +1,18 @@ +```mermaid +sequenceDiagram + participant Client + participant ZKPVerifier + participant VeraxPortal + participant ZKPVerifyModule + participant ZKPVerifyModule + Client->>ZKPVerifier: submitZKPResponse(requestId, proof) + ZKPVerifier->>VeraxPortal: attest(attestation, validationPayload: requestId, proof) + VeraxPortal->>ZKPVerifyModule: run() + Note right of VeraxPortal: Get request data from ZKPVerifier, check proof, check attestation +``` + + + 1. npx hardhat run scripts/verax/deployVeraxZKPVerifier.ts --network sepolia 2. npx hardhat run scripts/verax/setRequests-v3validator-verax.ts --network sepolia (replace `veraxZKPVerifierAddress`) 3. npx hardhat run scripts/verax/deploy-module.ts --network sepolia (replace `VeraxZKPVerifier`) From 0b9843204d7177076ebb1eb65f58787a87718bc7 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 28 May 2024 09:55:48 +0300 Subject: [PATCH 12/49] full path diagram --- scripts/verax/Readme.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/scripts/verax/Readme.md b/scripts/verax/Readme.md index 97adc37..343d85a 100644 --- a/scripts/verax/Readme.md +++ b/scripts/verax/Readme.md @@ -4,11 +4,33 @@ sequenceDiagram participant ZKPVerifier participant VeraxPortal participant ZKPVerifyModule - participant ZKPVerifyModule Client->>ZKPVerifier: submitZKPResponse(requestId, proof) ZKPVerifier->>VeraxPortal: attest(attestation, validationPayload: requestId, proof) VeraxPortal->>ZKPVerifyModule: run() - Note right of VeraxPortal: Get request data from ZKPVerifier, check proof, check attestation + ZKPVerifyModule ->> ZKPVerifier: getZKPRequest(requestId) + ZKPVerifier ->> ZKPVerifyModule: returns request + Note right of ZKPVerifyModule: validate proof, check attestation +``` + +Full path: +```mermaid +sequenceDiagram + participant Client + participant ZKPVerifier + participant VeraxPortal + participant ModuleRegistry + participant ZKPVerifyModule + participant AttestationRegistry + Client->>ZKPVerifier: submitZKPResponse(requestId, proof) + ZKPVerifier->>VeraxPortal: attest(attestation, validationPayload: requestId, proof) + VeraxPortal->>ModuleRegistry: runModules() + ModuleRegistry->>ZKPVerifyModule: run() + ZKPVerifyModule->>ZKPVerifier: getZKPRequest(requestId) + ZKPVerifier->>ZKPVerifyModule: returns request + Note right of ZKPVerifyModule: validate proof, check attestation + ZKPVerifyModule->>ModuleRegistry: valid + ModuleRegistry->>VeraxPortal: valid + VeraxPortal->>AttestationRegistry: attest(attestation, attester) ``` From ffe0e0bfbf5c2f5e05c90cfd2f2561e53399c7ee Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 28 May 2024 09:58:58 +0300 Subject: [PATCH 13/49] add note --- scripts/verax/Readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/verax/Readme.md b/scripts/verax/Readme.md index 343d85a..d6cd565 100644 --- a/scripts/verax/Readme.md +++ b/scripts/verax/Readme.md @@ -31,6 +31,7 @@ sequenceDiagram ZKPVerifyModule->>ModuleRegistry: valid ModuleRegistry->>VeraxPortal: valid VeraxPortal->>AttestationRegistry: attest(attestation, attester) + Note right of AttestationRegistry: adds new attestation ``` From 4d737d17f936e7a3a1c2e40d2bf72d44de27e4a7 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 28 May 2024 13:08:38 +0300 Subject: [PATCH 14/49] set expiration from inputs --- contracts/examples/verax/VeraxZKPVerifier.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index 2da9576..deb591c 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -56,9 +56,9 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { } AttestationPayload memory payload = AttestationPayload( bytes32($.schemaId), - uint64(block.timestamp + 7 days), - abi.encode(inputs[0]), - abi.encode(requestId, inputs[4]) + uint64(inputs[12]), // expiration + abi.encode(inputs[0]), // user id + abi.encode(requestId, inputs[4]) // requestId, nullifier ); bytes memory validationData = abi.encode(requestId, inputs, a, b, c); bytes[] memory validationPayload = new bytes[](1); From a3bbb312384f4942cc8dd73a56169be4c5ae81ac Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 31 May 2024 19:43:41 +0300 Subject: [PATCH 15/49] add state contract for genesis states only --- contracts/examples/GenesisState.sol | 467 ++++++++++++++++++ contracts/examples/verax/VeraxZKPVerifier.sol | 1 + hardhat.config.ts | 15 +- scripts/deployV3Validator.ts | 3 +- scripts/genesis-state/Readme.md | 32 ++ .../check-genesis-state-methods.ts | 39 ++ scripts/genesis-state/deployGenesiState.ts | 32 ++ .../deployIdentityTreeStorage.ts | 16 + .../deploy_genesis_state_output.json | 10 + .../verax/setRequests-v3validator-verax.ts | 4 +- test/helpers/ChainIdDefTypeMap.ts | 3 +- test/helpers/StateDeployHelper.ts | 42 +- 12 files changed, 655 insertions(+), 9 deletions(-) create mode 100644 contracts/examples/GenesisState.sol create mode 100644 scripts/genesis-state/Readme.md create mode 100644 scripts/genesis-state/check-genesis-state-methods.ts create mode 100644 scripts/genesis-state/deployGenesiState.ts create mode 100644 scripts/genesis-state/deployIdentityTreeStorage.ts create mode 100644 scripts/genesis-state/deploy_genesis_state_output.json diff --git a/contracts/examples/GenesisState.sol b/contracts/examples/GenesisState.sol new file mode 100644 index 0000000..1f48294 --- /dev/null +++ b/contracts/examples/GenesisState.sol @@ -0,0 +1,467 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity 0.8.20; + +import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import {IState, MAX_SMT_DEPTH} from "@iden3/contracts/interfaces/IState.sol"; +import {IStateTransitionVerifier} from "@iden3/contracts/interfaces/IStateTransitionVerifier.sol"; +import {SmtLib} from "@iden3/contracts/lib/SmtLib.sol"; +import {PoseidonUnit1L} from "@iden3/contracts/lib/Poseidon.sol"; +import {StateLib} from "@iden3/contracts/lib/StateLib.sol"; +import {GenesisUtils} from "@iden3/contracts/lib/GenesisUtils.sol"; + +/// @title Set and get states for each identity +contract GenesisState is Ownable2StepUpgradeable, IState { + /** + * @dev Version of contract + */ + string public constant VERSION = "2.4.0-only-genesis"; + + // This empty reserved space is put in place to allow future versions + // of the State contract to inherit from other contracts without a risk of + // breaking the storage layout. This is necessary because the parent contracts in the + // future may introduce some storage variables, which are placed before the State + // contract's storage variables. + // (see https://docs.openzeppelin.com/upgrades-plugins/1.x/writing-upgradeable#storage-gaps) + // slither-disable-next-line shadowing-state + // slither-disable-next-line unused-state + uint256[651] private __gap; + + /** + * @dev Verifier address + */ + IStateTransitionVerifier internal verifier; + + /** + * @dev State data + */ + StateLib.Data internal _stateData; + + /** + * @dev Global Identity State Tree (GIST) data + */ + SmtLib.Data internal _gistData; + + /** + * @dev Default Id Type + */ + bytes2 internal _defaultIdType; + + /** + * @dev Default Id Type initialized flag + */ + bool internal _defaultIdTypeInitialized; + + using SmtLib for SmtLib.Data; + using StateLib for StateLib.Data; + + /// @custom:oz-upgrades-unsafe-allow constructor + constructor() { + _disableInitializers(); + } + + /** + * @dev Initialize the contract + * @param verifierContractAddr Verifier address + * @param defaultIdType default id type for Ethereum-based IDs calculation + * @param owner Owner of the contract with administrative functions + */ + function initialize( + IStateTransitionVerifier verifierContractAddr, + bytes2 defaultIdType, + address owner + ) public initializer { + if (!_gistData.initialized) { + _gistData.initialize(MAX_SMT_DEPTH); + } + + if (address(verifierContractAddr) == address(0)) { + revert("Verifier contract address should not be zero"); + } + + verifier = verifierContractAddr; + _setDefaultIdType(defaultIdType); + __Ownable_init(owner); + } + + /** + * @dev Set ZKP verifier contract address + * @param newVerifierAddr Verifier contract address + */ + function setVerifier(address newVerifierAddr) external onlyOwner { + verifier = IStateTransitionVerifier(newVerifierAddr); + } + + /** + * @dev Set defaultIdType external wrapper (only owner can call) + * @param defaultIdType default id type + */ + function setDefaultIdType(bytes2 defaultIdType) external onlyOwner { + _setDefaultIdType(defaultIdType); + } + + /** + * @dev Change the state of an identity (transit to the new state) with ZKP ownership check. + * @param id Identity + * @param oldState Previous identity state + * @param newState New identity state + * @param isOldStateGenesis Is the previous state genesis? + * @param a ZKP proof field + * @param b ZKP proof field + * @param c ZKP proof field + */ + function transitState( + uint256 id, + uint256 oldState, + uint256 newState, + bool isOldStateGenesis, + uint256[2] memory a, + uint256[2][2] memory b, + uint256[2] memory c + ) public { + uint256[4] memory input = [id, oldState, newState, uint256(isOldStateGenesis ? 1 : 0)]; + require( + verifier.verifyProof(a, b, c, input), + "Zero-knowledge proof of state transition is not valid" + ); + + _transitState(id, oldState, newState, isOldStateGenesis); + } + + /** + * @dev Change the state of an identity (transit to the new state) with method-specific id ownership check. + * @param id Identity + * @param oldState Previous identity state + * @param newState New identity state + * @param isOldStateGenesis Is the previous state genesis? + * @param methodId State transition method id + * @param methodParams State transition method-specific params + */ + function transitStateGeneric( + uint256 id, + uint256 oldState, + uint256 newState, + bool isOldStateGenesis, + uint256 methodId, + bytes calldata methodParams + ) public { + if (methodId == 1) { + uint256 calcId = GenesisUtils.calcIdFromEthAddress(getDefaultIdType(), msg.sender); + require(calcId == id, "msg.sender is not owner of the identity"); + require(methodParams.length == 0, "methodParams should be empty"); + + if (isOldStateGenesis) { + require(oldState == 0, "Old state should be zero"); + } + + _transitState(id, oldState, newState, isOldStateGenesis); + } else { + revert("Unknown state transition method id"); + } + } + + /** + * @dev Get ZKP verifier contract address + * @return verifier contract address + */ + function getVerifier() external view returns (address) { + return address(verifier); + } + + /** + * @dev Get defaultIdType + * @return defaultIdType + */ + function getDefaultIdType() public view returns (bytes2) { + require(_defaultIdTypeInitialized, "Default Id Type is not initialized"); + return _defaultIdType; + } + + /** + * @dev Retrieve the last state info for a given identity + * @param id identity + * @return state info of the last committed state + */ + function getStateInfoById(uint256 id) external view returns (IState.StateInfo memory) { + return _stateEntryInfoAdapter(_stateData.getStateInfoById(id)); + } + + /** + * @dev Retrieve states quantity for a given identity + * @param id identity + * @return states quantity + */ + function getStateInfoHistoryLengthById(uint256 id) external view returns (uint256) { + return _stateData.getStateInfoHistoryLengthById(id); + } + + /** + * Retrieve state infos for a given identity + * @param id identity + * @param startIndex start index of the state history + * @param length length of the state history + * @return A list of state infos of the identity + */ + function getStateInfoHistoryById( + uint256 id, + uint256 startIndex, + uint256 length + ) external view returns (IState.StateInfo[] memory) { + StateLib.EntryInfo[] memory stateInfos = _stateData.getStateInfoHistoryById( + id, + startIndex, + length + ); + IState.StateInfo[] memory result = new IState.StateInfo[](stateInfos.length); + for (uint256 i = 0; i < stateInfos.length; i++) { + result[i] = _stateEntryInfoAdapter(stateInfos[i]); + } + return result; + } + + /** + * @dev Retrieve state information by id and state. + * @param id An identity. + * @param state A state. + * @return The state info. + */ + function getStateInfoByIdAndState( // works with 0 root + uint256 id, + uint256 state + ) external view returns (IState.StateInfo memory) { + return _stateEntryInfoAdapter(_stateData.getStateInfoByIdAndState(id, state)); + } + + /** + * @dev Retrieve GIST inclusion or non-inclusion proof for a given identity. + * @param id Identity + * @return The GIST inclusion or non-inclusion proof for the identity + */ + function getGISTProof(uint256 id) external view returns (IState.GistProof memory) { + return _smtProofAdapter(_gistData.getProof(PoseidonUnit1L.poseidon([id]))); + } + + /** + * @dev Retrieve GIST inclusion or non-inclusion proof for a given identity for + * some GIST root in the past. + * @param id Identity + * @param root GIST root + * @return The GIST inclusion or non-inclusion proof for the identity + */ + function getGISTProofByRoot( // works with 0 root + uint256 id, + uint256 root + ) external view returns (IState.GistProof memory) { + return _smtProofAdapter(_gistData.getProofByRoot(PoseidonUnit1L.poseidon([id]), root)); + } + + /** + * @dev Retrieve GIST inclusion or non-inclusion proof for a given identity + * for GIST latest snapshot by the block number provided. + * @param id Identity + * @param blockNumber Blockchain block number + * @return The GIST inclusion or non-inclusion proof for the identity + */ + function getGISTProofByBlock( + uint256 id, + uint256 blockNumber + ) external view returns (IState.GistProof memory) { + return + _smtProofAdapter(_gistData.getProofByBlock(PoseidonUnit1L.poseidon([id]), blockNumber)); + } + + /** + * @dev Retrieve GIST inclusion or non-inclusion proof for a given identity + * for GIST latest snapshot by the blockchain timestamp provided. + * @param id Identity + * @param timestamp Blockchain timestamp + * @return The GIST inclusion or non-inclusion proof for the identity + */ + function getGISTProofByTime( + uint256 id, + uint256 timestamp + ) external view returns (IState.GistProof memory) { + return _smtProofAdapter(_gistData.getProofByTime(PoseidonUnit1L.poseidon([id]), timestamp)); + } + + /** + * @dev Retrieve GIST latest root. + * @return The latest GIST root + */ + function getGISTRoot() external view returns (uint256) { + return _gistData.getRoot(); + } + + /** + * @dev Retrieve the GIST root history. + * @param start Start index in the root history + * @param length Length of the root history + * @return Array of GIST roots infos + */ + function getGISTRootHistory( + uint256 start, + uint256 length + ) external view returns (IState.GistRootInfo[] memory) { + SmtLib.RootEntryInfo[] memory rootInfos = _gistData.getRootHistory(start, length); + IState.GistRootInfo[] memory result = new IState.GistRootInfo[](rootInfos.length); + + for (uint256 i = 0; i < rootInfos.length; i++) { + result[i] = _smtRootInfoAdapter(rootInfos[i]); + } + return result; + } + + /** + * @dev Retrieve the length of the GIST root history. + * @return The GIST root history length + */ + function getGISTRootHistoryLength() external view returns (uint256) { + return _gistData.rootEntries.length; + } + + /** + * @dev Retrieve the specific GIST root information. + * @param root GIST root. + * @return The GIST root information. + */ + function getGISTRootInfo(uint256 root) external view returns (IState.GistRootInfo memory) { + return _smtRootInfoAdapter(_gistData.getRootInfo(root)); + } + + /** + * @dev Retrieve the GIST root information, which is latest by the block provided. + * @param blockNumber Blockchain block number + * @return The GIST root info + */ + function getGISTRootInfoByBlock( + uint256 blockNumber + ) external view returns (IState.GistRootInfo memory) { + return _smtRootInfoAdapter(_gistData.getRootInfoByBlock(blockNumber)); + } + + /** + * @dev Retrieve the GIST root information, which is latest by the blockchain timestamp provided. + * @param timestamp Blockchain timestamp + * @return The GIST root info + */ + function getGISTRootInfoByTime( + uint256 timestamp + ) external view returns (IState.GistRootInfo memory) { + return _smtRootInfoAdapter(_gistData.getRootInfoByTime(timestamp)); + } + + /** + * @dev Check if identity exists. + * @param id Identity + * @return True if the identity exists + */ + function idExists(uint256 id) public view returns (bool) { + return _stateData.idExists(id); + } + + /** + * @dev Check if state exists. + * @param id Identity + * @param state State + * @return True if the state exists + */ + function stateExists(uint256 id, uint256 state) public view returns (bool) { + return _stateData.stateExists(id, state); + } + + /** + * @dev Change the state of an identity (transit to the new state) with ZKP ownership check. + * @param id Identity + * @param oldState Previous identity state + * @param newState New identity state + * @param isOldStateGenesis Is the previous state genesis? + */ + function _transitState( + uint256 id, + uint256 oldState, + uint256 newState, + bool isOldStateGenesis + ) internal { + revert("only genesis states are allowed for this contract"); + + require(id != 0, "ID should not be zero"); + require(newState != 0, "New state should not be zero"); + + if (isOldStateGenesis) { + require(!idExists(id), "Old state is genesis but identity already exists"); + + // Push old state to state entries, with zero timestamp and block + _stateData.addGenesisState(id, oldState); + } else { + require(idExists(id), "Old state is not genesis but identity does not yet exist"); + + StateLib.EntryInfo memory prevStateInfo = _stateData.getStateInfoById(id); + require(prevStateInfo.state == oldState, "Old state does not match the latest state"); + } + + // this checks that oldState != newState as well + require(!stateExists(id, newState), "New state already exists"); + _stateData.addState(id, newState); + _gistData.addLeaf(PoseidonUnit1L.poseidon([id]), newState); + } + + function _smtProofAdapter( + SmtLib.Proof memory proof + ) internal pure returns (IState.GistProof memory) { + // slither-disable-next-line uninitialized-local + uint256[MAX_SMT_DEPTH] memory siblings; + for (uint256 i = 0; i < MAX_SMT_DEPTH; i++) { + siblings[i] = proof.siblings[i]; + } + + IState.GistProof memory result = IState.GistProof({ + root: proof.root, + existence: proof.existence, + siblings: siblings, + index: proof.index, + value: proof.value, + auxExistence: proof.auxExistence, + auxIndex: proof.auxIndex, + auxValue: proof.auxValue + }); + + return result; + } + + function _smtRootInfoAdapter( + SmtLib.RootEntryInfo memory rootInfo + ) internal pure returns (IState.GistRootInfo memory) { + return + IState.GistRootInfo({ + root: rootInfo.root, + replacedByRoot: rootInfo.replacedByRoot, + createdAtTimestamp: rootInfo.createdAtTimestamp, + replacedAtTimestamp: rootInfo.replacedAtTimestamp, + createdAtBlock: rootInfo.createdAtBlock, + replacedAtBlock: rootInfo.replacedAtBlock + }); + } + + function _stateEntryInfoAdapter( + StateLib.EntryInfo memory sei + ) internal pure returns (IState.StateInfo memory) { + return + IState.StateInfo({ + id: sei.id, + state: sei.state, + replacedByState: sei.replacedByState, + createdAtTimestamp: sei.createdAtTimestamp, + replacedAtTimestamp: sei.replacedAtTimestamp, + createdAtBlock: sei.createdAtBlock, + replacedAtBlock: sei.replacedAtBlock + }); + } + + /** + * @dev Set defaultIdType internal setter + * @param defaultIdType default id type + */ + function _setDefaultIdType(bytes2 defaultIdType) internal { + _defaultIdType = defaultIdType; + _defaultIdTypeInitialized = true; + } +} diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index deb591c..77329b2 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -84,6 +84,7 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { uint256[2][2] calldata b, uint256[2] calldata c ) public virtual override { + super.submitZKPResponse(requestId, inputs, a, b, c); _attest(requestId, inputs, a, b ,c); } diff --git a/hardhat.config.ts b/hardhat.config.ts index 8b2b2e1..cf19466 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -53,7 +53,10 @@ const config: HardhatUserConfig = { } }, etherscan: { - apiKey: process.env.OKLINK_API_KEY, + apiKey: { + 'linea-sepolia': process.env.LINEA_API_KEY, + 'amoy': process.env.AMOY_API_KEY, + }, customChains: [ { network: 'amoy', @@ -63,7 +66,15 @@ const config: HardhatUserConfig = { 'https://www.oklink.com/api/v5/explorer/contract/verify-source-code-plugin/AMOY_TESTNET', browserURL: 'https://www.oklink.com/amoy' } - } + }, + { + network: "linea-sepolia", + chainId: 59141, + urls: { + apiURL: "https://api-sepolia.lineascan.build/api", + browserURL: "https://sepolia.lineascan.build", + }, + }, ] }, gasReporter: { diff --git a/scripts/deployV3Validator.ts b/scripts/deployV3Validator.ts index f149532..b27c7d5 100644 --- a/scripts/deployV3Validator.ts +++ b/scripts/deployV3Validator.ts @@ -6,7 +6,8 @@ const pathOutputJson = path.join(__dirname, './deploy_validator_output.json'); async function main() { // const stateAddress = '0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D'; // current iden3 state smart contract on main // const stateAddress = '0x134b1be34911e39a8397ec6289782989729807a4'; // current iden3 state smart contract on mumbai - const stateAddress = '0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124'; // current iden3 state smart contract on amoy testnet + // const stateAddress = '0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124'; // current iden3 state smart contract on amoy testnet + const stateAddress = '0x9c905B15D6EAd043cfce50Bb93eeF36279153d03'; // curren iden3 genesis only state smart contract on linea sepolia const verifierContractWrapperName = 'VerifierV3Wrapper'; const validatorContractName = 'CredentialAtomicQueryV3Validator'; diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md new file mode 100644 index 0000000..c24de55 --- /dev/null +++ b/scripts/genesis-state/Readme.md @@ -0,0 +1,32 @@ +1. npx hardhat run scripts/genesis-state/deployGenesiState.ts --network sepolia +https://sepolia.lineascan.build/address/0xf941A245136A1Ada6557284F87C3d91711BB020D#code + +{ + "state": "0x9c905B15D6EAd043cfce50Bb93eeF36279153d03", + // 0xf941A245136A1Ada6557284F87C3d91711BB020D - implementation + "verifier": "0xECc5C3c591Fee9150F6f3FC96AEEf02fe7E27a51", + "stateLib": "0x723bA76845aC96955657b3c8d76292cBc72B5f0A", + "smtLib": "0xc3Af1587389691373f5dAbE27109c938576607e6", + "poseidon1": "0x3262eeEcbcA5C29650C385D6DB0c0146Bc7c0273", + "poseidon2": "0x03F534D2d2874B195b6D289c8aD5B73eba33BDf5", + "poseidon3": "0x15cb0E1b7018D3c461A3715FAB9beB8C4c93B228", + "network": "sepolia" +} + +2. npx hardhat run scripts/genesis-state/deployIdentityTreeStorage.ts --network sepolia +IdentityTreeStore deployed to: 0x483340bf249D3bFeF5333e7AE0058B0D2931A711 + +3. npx hardhat run scripts/deployV3Validator.ts --network sepolia + +VerifierV3Wrapper deployed to: 0x312e0DE00B35CF1cE948F722F8A2f16c465A942b +CredentialAtomicQueryV3Validator deployed to: 0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2 +(look into "no-transition" state contract - 0x9c905B15D6EAd043cfce50Bb93eeF36279153d03) + +3. Verax flow: + +VeraxZKPVerifier deployed to: 0xcE2d01c6b65290C3D3AF09324D516aB1976657d9 + +request: +did:polygonid:linea:sepolia:32232vGknSaK9oC8UysgJy3QquqvYKg8YAgin7W7wo +200 + diff --git a/scripts/genesis-state/check-genesis-state-methods.ts b/scripts/genesis-state/check-genesis-state-methods.ts new file mode 100644 index 0000000..1832274 --- /dev/null +++ b/scripts/genesis-state/check-genesis-state-methods.ts @@ -0,0 +1,39 @@ +import { ethers } from 'hardhat'; + +async function main() { + const stateAddress = '0x9c905B15D6EAd043cfce50Bb93eeF36279153d03'; + const stateFactory = await ethers.getContractFactory('GenesisState', { + libraries: { + StateLib: '0x723bA76845aC96955657b3c8d76292cBc72B5f0A', + SmtLib: '0xc3Af1587389691373f5dAbE27109c938576607e6', + PoseidonUnit1L: '0x3262eeEcbcA5C29650C385D6DB0c0146Bc7c0273' + } + }); + const state = await stateFactory.attach(stateAddress); + + const revocation = await state.getRevocationStatusByIdAndState(0, 0); + console.log('revocation', revocation); + + const gistRoot = await state.getGISTRoot(); + console.log('gistRoot', gistRoot); + + const rootInfo = await state.getGISTRootInfo(0); + console.log('getGISTRootInfo', rootInfo); + + const proof = await state.getGISTProofByRoot(0, 0); + console.log('getGISTProofByRoot', proof); + + const historyLength = await state.getGISTRootHistoryLength(); + console.log('getGISTRootHistoryLength', historyLength); + +// const info = await state.getStateInfoByIdAndState('', ''); // State does not exist +// console.log(info); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/genesis-state/deployGenesiState.ts b/scripts/genesis-state/deployGenesiState.ts new file mode 100644 index 0000000..ea31cc2 --- /dev/null +++ b/scripts/genesis-state/deployGenesiState.ts @@ -0,0 +1,32 @@ +import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; +import fs from "fs"; +import path from "path"; + +const pathOutputJson = path.join(__dirname, "./deploy_genesis_state_output.json"); + +async function main() { + const deployHelper = await StateDeployHelper.initialize(null, true); + + const { state, verifier, stateLib, smtLib, poseidon1, poseidon2, poseidon3 } = + await deployHelper.deployState('VerifierStateTransition', 'GenesisState'); + + const outputJson = { + state: await state.getAddress(), + verifier: await verifier.getAddress(), + stateLib: await stateLib.getAddress(), + smtLib: await smtLib.getAddress(), + poseidon1: await poseidon1.getAddress(), + poseidon2: await poseidon2.getAddress(), + poseidon3: await poseidon3.getAddress(), + network: process.env.HARDHAT_NETWORK, + }; + + fs.writeFileSync(pathOutputJson, JSON.stringify(outputJson, null, 1)); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/genesis-state/deployIdentityTreeStorage.ts b/scripts/genesis-state/deployIdentityTreeStorage.ts new file mode 100644 index 0000000..1f89615 --- /dev/null +++ b/scripts/genesis-state/deployIdentityTreeStorage.ts @@ -0,0 +1,16 @@ +import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; + +async function main() { + const deployHelper = await StateDeployHelper.initialize(null, true); + + const { identityTreeStore} = + await deployHelper.deployIdentityTreeStore('0x9c905B15D6EAd043cfce50Bb93eeF36279153d03'); + + } + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/genesis-state/deploy_genesis_state_output.json b/scripts/genesis-state/deploy_genesis_state_output.json new file mode 100644 index 0000000..8097742 --- /dev/null +++ b/scripts/genesis-state/deploy_genesis_state_output.json @@ -0,0 +1,10 @@ +{ + "state": "0x9c905B15D6EAd043cfce50Bb93eeF36279153d03", // 0xf941A245136A1Ada6557284F87C3d91711BB020D - implementation + "verifier": "0xECc5C3c591Fee9150F6f3FC96AEEf02fe7E27a51", + "stateLib": "0x723bA76845aC96955657b3c8d76292cBc72B5f0A", + "smtLib": "0xc3Af1587389691373f5dAbE27109c938576607e6", + "poseidon1": "0x3262eeEcbcA5C29650C385D6DB0c0146Bc7c0273", + "poseidon2": "0x03F534D2d2874B195b6D289c8aD5B73eba33BDf5", + "poseidon3": "0x15cb0E1b7018D3c461A3715FAB9beB8C4c93B228", + "network": "sepolia" +} \ No newline at end of file diff --git a/scripts/verax/setRequests-v3validator-verax.ts b/scripts/verax/setRequests-v3validator-verax.ts index eb2cc5a..7d327e4 100644 --- a/scripts/verax/setRequests-v3validator-verax.ts +++ b/scripts/verax/setRequests-v3validator-verax.ts @@ -35,8 +35,8 @@ export const QueryOperators = { }; async function main() { - const validatorAddressV3 = '0xba0EB888B1CDD41523d541E0d06246460f0D32a8'; - const veraxZKPVerifierAddress = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; // verax validator + const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; + const veraxZKPVerifierAddress = '0xcE2d01c6b65290C3D3AF09324D516aB1976657d9'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai diff --git a/test/helpers/ChainIdDefTypeMap.ts b/test/helpers/ChainIdDefTypeMap.ts index 8d45287..f38dd33 100644 --- a/test/helpers/ChainIdDefTypeMap.ts +++ b/test/helpers/ChainIdDefTypeMap.ts @@ -3,4 +3,5 @@ export const chainIdDefaultIdTypeMap = new Map() .set(80001, '0x0212') // polygon mumbai .set(1101, '0x0231') // zkEVM .set(1442, '0x0232') // zkEVM testnet - .set(137, '0x0211'); // polygon main + .set(137, '0x0211') // polygon main + .set(59141, "0x0148"); // linea-sepolia diff --git a/test/helpers/StateDeployHelper.ts b/test/helpers/StateDeployHelper.ts index 8aa14f9..91e061f 100644 --- a/test/helpers/StateDeployHelper.ts +++ b/test/helpers/StateDeployHelper.ts @@ -1,4 +1,4 @@ -import { ethers, upgrades, network } from 'hardhat'; +import { ethers, upgrades, network, run } from 'hardhat'; import { Contract } from 'ethers'; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; import { deployPoseidons } from '../utils/deploy-poseidons.util'; @@ -25,7 +25,7 @@ export class StateDeployHelper { return new StateDeployHelper(sgrs, enableLogging); } - async deployState(verifierContractName = 'VerifierStateTransition'): Promise<{ + async deployState(verifierContractName = 'VerifierStateTransition', stateContractName = 'State'): Promise<{ state: Contract; verifier: Contract; stateLib: Contract; @@ -62,7 +62,7 @@ export class StateDeployHelper { const stateLib = await this.deployStateLib(); this.log('deploying state...'); - const StateFactory = await ethers.getContractFactory('State', { + const StateFactory = await ethers.getContractFactory(stateContractName, { libraries: { StateLib: await stateLib.getAddress(), SmtLib: await smtLib.getAddress(), @@ -85,6 +85,11 @@ export class StateDeployHelper { `State contract deployed to address ${await state.getAddress()} from ${await owner.getAddress()}` ); + await run("verify:verify", { + address: await state.getAddress(), + constructorArguments: [], + }); + this.log('======== State: deploy completed ========'); return { @@ -99,6 +104,37 @@ export class StateDeployHelper { }; } + async deployIdentityTreeStore(stateContractAddress: string): Promise<{ + identityTreeStore: Contract; + }> { + const signer = this.signers[0]; + const [poseidon2Elements, poseidon3Elements] = await deployPoseidons(signer, [2, 3]); + + const IdentityTreeStore = await ethers.getContractFactory("IdentityTreeStore", { + libraries: { + PoseidonUnit2L: await poseidon2Elements.getAddress(), + PoseidonUnit3L: await poseidon3Elements.getAddress(), + }, + }); + + const identityTreeStore = await upgrades.deployProxy( + IdentityTreeStore, + [stateContractAddress], + { unsafeAllow: ["external-library-linking"] } + ); + await identityTreeStore.waitForDeployment(); + + await run("verify:verify", { + address: await identityTreeStore.getAddress(), + constructorArguments: [], + }); + + console.log("\nIdentityTreeStore deployed to:", await identityTreeStore.getAddress()); + return { + identityTreeStore, + }; + } + async deploySmtLib( poseidon2Address: string, poseidon3Address: string, From c343c6256efd2f53b71d4dadb34e4058232d3200 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 4 Jun 2024 12:40:26 +0300 Subject: [PATCH 16/49] deploy --- contracts/examples/verax/VeraxZKPVerifier.sol | 1 - scripts/genesis-state/Readme.md | 11 +++++++++-- scripts/verax/create-default-portal.ts | 2 +- scripts/verax/deploy-module.ts | 2 +- scripts/verax/get-attestation.ts | 2 +- scripts/verax/setPortalInfo.ts | 4 ++-- scripts/verax/setRequests-v3validator-verax.ts | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index 77329b2..deb591c 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -84,7 +84,6 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { uint256[2][2] calldata b, uint256[2] calldata c ) public virtual override { - super.submitZKPResponse(requestId, inputs, a, b, c); _attest(requestId, inputs, a, b ,c); } diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index c24de55..90dc22f 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -24,9 +24,16 @@ CredentialAtomicQueryV3Validator deployed to: 0x03e26bf5B8Aa3287a6D229B524f9F44 3. Verax flow: -VeraxZKPVerifier deployed to: 0xcE2d01c6b65290C3D3AF09324D516aB1976657d9 +VeraxZKPVerifier deployed to: 0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46 request: -did:polygonid:linea:sepolia:32232vGknSaK9oC8UysgJy3QquqvYKg8YAgin7W7wo +did:polygonid:linea:sepolia:32232vGknSaJHfCBffnbzHzYYy6FvHDkK9QL4SFAq6 200 +nullifierSessionID: 5543 +300 +nullifierSessionID: 300 +301 +nullifierSessionID: 301 +302 +nullifierSessionID: 302 diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 462b804..082471c 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -5,7 +5,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const moduleAddress = '0xF2a68Cb1ab2AE548943805695af580901A6C7B48'; + const moduleAddress = '0xdaa63CB80effa8be27b029cE6021eB7Ab0917A64'; const tx = await veraxSdk.portal.deployDefaultPortal( [moduleAddress], "ZKPVerifyModule portal", "This Portal is used as an example for ZKPVerifyModule contract", false, "Iden3", true); diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index 7b9299e..ba52b0c 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -2,7 +2,7 @@ import { ethers } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { - const VeraxZKPVerifier = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; + const VeraxZKPVerifier = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index ffeda04..c381131 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x00000000000000000000000000000000000000000000000000000000000000d5'; + const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000101'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); diff --git a/scripts/verax/setPortalInfo.ts b/scripts/verax/setPortalInfo.ts index e4b17dd..f88182a 100644 --- a/scripts/verax/setPortalInfo.ts +++ b/scripts/verax/setPortalInfo.ts @@ -1,13 +1,13 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x60fd74e29e38453CDc04890a6E318735D7657f18'; + const veraxVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); - const portalAddress = '0xe8acF827a91b9B4996Cad687f4d9cd0f6b3B9eA9'; + const portalAddress = '0x215c556049354F6217d85936f9986B5368621FEb'; const tx = await verax.setPortalInfo( portalAddress, '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e' diff --git a/scripts/verax/setRequests-v3validator-verax.ts b/scripts/verax/setRequests-v3validator-verax.ts index 7d327e4..be3b9ee 100644 --- a/scripts/verax/setRequests-v3validator-verax.ts +++ b/scripts/verax/setRequests-v3validator-verax.ts @@ -36,7 +36,7 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0xcE2d01c6b65290C3D3AF09324D516aB1976657d9'; // verax validator + const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai From 40c34cc7587633bee2974a3bb4b7972005a0d32c Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 4 Jun 2024 14:35:51 +0300 Subject: [PATCH 17/49] add set-requests for Anima --- ...-v3validator-verax-AnimaProofOfIdentity.ts | 185 ++++++++++++++++++ ...3validator-verax-AnimaProofOfUniqueness.ts | 185 ++++++++++++++++++ 2 files changed, 370 insertions(+) create mode 100644 scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts create mode 100644 scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts new file mode 100644 index 0000000..ca65dc6 --- /dev/null +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts @@ -0,0 +1,185 @@ +import { ethers } from 'hardhat'; +import { packV3ValidatorParams } from '../../test/utils/pack-utils'; +import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; +import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../../test/utils/utils'; +const Operators = { + NOOP: 0, // No operation, skip query verification in circuit + EQ: 1, // equal + LT: 2, // less than + GT: 3, // greater than + IN: 4, // in + NIN: 5, // not in + NE: 6, // not equal + SD: 16, // selective disclosure + LTE: 7, // less than equal + GTE: 8, // greater than equal + BETWEEN: 9, // between + NONBETWEEN: 10, // non between + EXISTS: 11 // exists +}; + +export const QueryOperators = { + $noop: Operators.NOOP, + $eq: Operators.EQ, + $lt: Operators.LT, + $gt: Operators.GT, + $in: Operators.IN, + $nin: Operators.NIN, + $ne: Operators.NE, + $sd: Operators.SD, + $between: Operators.BETWEEN, + $nonbetween: Operators.NONBETWEEN, + $exists: Operators.EXISTS, + $lte: Operators.LTE, + $gte: Operators.GTE +}; + +async function main() { + const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; + const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator + + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); + const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai + console.log(veraxVerifier, ' attached to:', await veraxVerifier.getAddress()); + + // set default query + const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; + + const type = 'AnimaProofOfIdentity'; + + const queryHash = ''; + const circuitIds = [circuitIdV3]; + const skipClaimRevocationCheck = false; + const allowedIssuers = []; + const schemaUrl = + 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/poi-v1.json-ld'; + const schema = '124850561539049671310487367157968055340'; + const schemaClaimPathKey = + '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + const slotIndex = 0; + const merklized = 1; + const groupID = 0; + + const chainId = 59141; + + const network = 'linea-sepolia'; + + registerDidMethodNetwork({ + method: DidMethod.PolygonId, + blockchain: 'linea', + chainId: 59141, + network: 'sepolia', + networkFlag: 0b0100_0000 | 0b0000_1000 + }); + + const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); + + if (!networkFlag) { + throw new Error(`Invalid chain id ${chainId}`); + } + const [blockchain, networkId] = networkFlag.split(':'); + + const verifierId = buildVerifierId(await veraxVerifier.getAddress(), { + blockchain, + networkId, + method: DidMethod.PolygonId + }); + console.log(verifierId.bigInt()); + const dateOfBirthQuery = [ + { + requestId: 2002, + schema: schema, + claimPathKey: schemaClaimPathKey, + operator: Operators.LT, + value: [20020101], + slotIndex, + queryHash, + circuitIds, + allowedIssuers, + skipClaimRevocationCheck, + verifierID: verifierId.bigInt(), + nullifierSessionID: 0, + groupID, + proofType: 0 + } + ]; + console.log(DID.parseFromId(verifierId).string()); + + try { + for (let i = 0; i < dateOfBirthQuery.length; i++) { + const query = dateOfBirthQuery[i]; + console.log(query.requestId); + + const operatorKey = + Object.keys(QueryOperators)[Object.values(QueryOperators).indexOf(query.operator)]; + + const schemaHash = coreSchemaFromStr(query.schema); + query.queryHash = calculateQueryHashV3( + query.value.map((i) => BigInt(i)), + schemaHash, + query.slotIndex, + query.operator, + query.claimPathKey, + query.value.length, + merklized, + query.skipClaimRevocationCheck ? 0 : 1, + query.verifierID.toString(), + query.nullifierSessionID + ).toString(); + + const invokeRequestMetadata = { + id: '7f38a193-0918-4a48-9fac-36adfdb8b542', + typ: 'application/iden3comm-plain-json', + type: 'https://iden3-communication.io/proofs/1.0/contract-invoke-request', + thid: '7f38a193-0918-4a48-9fac-36adfdb8b542', + from: DID.parseFromId(verifierId).string(), + body: { + reason: 'for testing', + transaction_data: { + contract_address: veraxZKPVerifierAddress, + method_id: 'b68967e2', + chain_id: chainId, + network: network + }, + scope: [ + { + id: query.requestId, + circuitId: circuitIdV3, + query: { + allowedIssuers: ['*'], + context: schemaUrl, + credentialSubject: { + date_of_birth: { + [operatorKey]: + query.operator === Operators.IN || query.operator === Operators.NIN + ? query.value + : query.value[0] + } + }, + type: type + } + } + ] + } + }; + + const tx = await veraxVerifier.setZKPRequest(query.requestId, { + metadata: JSON.stringify(invokeRequestMetadata), + validator: validatorAddressV3, + data: packV3ValidatorParams(query) + }); + + console.log(tx.hash); + await tx.wait(); + } + } catch (e) { + console.log('error: ', e); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts new file mode 100644 index 0000000..a327d02 --- /dev/null +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -0,0 +1,185 @@ +import { ethers } from 'hardhat'; +import { packV3ValidatorParams } from '../../test/utils/pack-utils'; +import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; +import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../../test/utils/utils'; +const Operators = { + NOOP: 0, // No operation, skip query verification in circuit + EQ: 1, // equal + LT: 2, // less than + GT: 3, // greater than + IN: 4, // in + NIN: 5, // not in + NE: 6, // not equal + SD: 16, // selective disclosure + LTE: 7, // less than equal + GTE: 8, // greater than equal + BETWEEN: 9, // between + NONBETWEEN: 10, // non between + EXISTS: 11 // exists +}; + +export const QueryOperators = { + $noop: Operators.NOOP, + $eq: Operators.EQ, + $lt: Operators.LT, + $gt: Operators.GT, + $in: Operators.IN, + $nin: Operators.NIN, + $ne: Operators.NE, + $sd: Operators.SD, + $between: Operators.BETWEEN, + $nonbetween: Operators.NONBETWEEN, + $exists: Operators.EXISTS, + $lte: Operators.LTE, + $gte: Operators.GTE +}; + +async function main() { + const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; + const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator + + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); + const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai + console.log(veraxVerifier, ' attached to:', await veraxVerifier.getAddress()); + + // set default query + const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; + + const type = 'AnimaProofOfUniqueness'; + + const queryHash = ''; + const circuitIds = [circuitIdV3]; + const skipClaimRevocationCheck = false; + const allowedIssuers = []; + const schemaUrl = + 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pou-v1.json-ld'; + const schema = '154254168293843647812290076058923399205'; + const schemaClaimPathKey = + '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + const slotIndex = 0; + const merklized = 1; + const groupID = 0; + + const chainId = 59141; + + const network = 'linea-sepolia'; + + registerDidMethodNetwork({ + method: DidMethod.PolygonId, + blockchain: 'linea', + chainId: 59141, + network: 'sepolia', + networkFlag: 0b0100_0000 | 0b0000_1000 + }); + + const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); + + if (!networkFlag) { + throw new Error(`Invalid chain id ${chainId}`); + } + const [blockchain, networkId] = networkFlag.split(':'); + + const verifierId = buildVerifierId(await veraxVerifier.getAddress(), { + blockchain, + networkId, + method: DidMethod.PolygonId + }); + console.log(verifierId.bigInt()); + const uniqueQuery = [ + { + requestId: 2001, + schema: schema, + claimPathKey: schemaClaimPathKey, + operator: Operators.EQ, + value: true, + slotIndex, + queryHash, + circuitIds, + allowedIssuers, + skipClaimRevocationCheck, + verifierID: verifierId.bigInt(), + nullifierSessionID: 0, + groupID, + proofType: 0 + } + ]; + console.log(DID.parseFromId(verifierId).string()); + + try { + for (let i = 0; i < uniqueQuery.length; i++) { + const query = uniqueQuery[i]; + console.log(query.requestId); + + const operatorKey = + Object.keys(QueryOperators)[Object.values(QueryOperators).indexOf(query.operator)]; + + const schemaHash = coreSchemaFromStr(query.schema); + query.queryHash = calculateQueryHashV3( + query.value.map((i) => BigInt(i)), + schemaHash, + query.slotIndex, + query.operator, + query.claimPathKey, + query.value.length, + merklized, + query.skipClaimRevocationCheck ? 0 : 1, + query.verifierID.toString(), + query.nullifierSessionID + ).toString(); + + const invokeRequestMetadata = { + id: '7f38a193-0918-4a48-9fac-36adfdb8b542', + typ: 'application/iden3comm-plain-json', + type: 'https://iden3-communication.io/proofs/1.0/contract-invoke-request', + thid: '7f38a193-0918-4a48-9fac-36adfdb8b542', + from: DID.parseFromId(verifierId).string(), + body: { + reason: 'for testing', + transaction_data: { + contract_address: veraxZKPVerifierAddress, + method_id: 'b68967e2', + chain_id: chainId, + network: network + }, + scope: [ + { + id: query.requestId, + circuitId: circuitIdV3, + query: { + allowedIssuers: ['*'], + context: schemaUrl, + credentialSubject: { + unique: { + [operatorKey]: + query.operator === Operators.IN || query.operator === Operators.NIN + ? query.value + : query.value[0] + } + }, + type: type + } + } + ] + } + }; + + const tx = await veraxVerifier.setZKPRequest(query.requestId, { + metadata: JSON.stringify(invokeRequestMetadata), + validator: validatorAddressV3, + data: packV3ValidatorParams(query) + }); + + console.log(tx.hash); + await tx.wait(); + } + } catch (e) { + console.log('error: ', e); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); From 4460bff272fbdba4e8172c5cc35b5c67fcb6db38 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:30:29 +0300 Subject: [PATCH 18/49] fix eq true --- ...ts-v3validator-verax-AnimaProofOfUniqueness.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index a327d02..1233c32 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -2,6 +2,8 @@ import { ethers } from 'hardhat'; import { packV3ValidatorParams } from '../../test/utils/pack-utils'; import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../../test/utils/utils'; +import { Merklizer } from '@iden3/js-jsonld-merklization'; + const Operators = { NOOP: 0, // No operation, skip query verification in circuit EQ: 1, // equal @@ -36,7 +38,7 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator + const veraxZKPVerifierAddress = '0xb9FB57344f28b82BfBAbDd52609fdACc1BB5F604'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -55,7 +57,7 @@ async function main() { 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pou-v1.json-ld'; const schema = '154254168293843647812290076058923399205'; const schemaClaimPathKey = - '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + '12108295158402738095426831653137229485035232473156116723769892077296285974307'; const slotIndex = 0; const merklized = 1; const groupID = 0; @@ -85,13 +87,14 @@ async function main() { method: DidMethod.PolygonId }); console.log(verifierId.bigInt()); + const value = [true]; const uniqueQuery = [ { - requestId: 2001, + requestId: 2004, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, - value: true, + value: [await Merklizer.hashValue('http://www.w3.org/2001/XMLSchema#boolean', value[0])], slotIndex, queryHash, circuitIds, @@ -152,8 +155,8 @@ async function main() { unique: { [operatorKey]: query.operator === Operators.IN || query.operator === Operators.NIN - ? query.value - : query.value[0] + ? value + : value[0] } }, type: type From a7d6670ce9415d5a92f8a22ed4e75ee22c370472 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:33:21 +0300 Subject: [PATCH 19/49] request --- .../setRequests-v3validator-verax-AnimaProofOfUniqueness.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index 1233c32..d03c498 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -38,7 +38,7 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0xb9FB57344f28b82BfBAbDd52609fdACc1BB5F604'; // verax validator + const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -90,7 +90,7 @@ async function main() { const value = [true]; const uniqueQuery = [ { - requestId: 2004, + requestId: 2002, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, From 88a031e45f30c3fde6e75b2eb83e6670f03b21a1 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:42:52 +0300 Subject: [PATCH 20/49] 2003 --- .../setRequests-v3validator-verax-AnimaProofOfUniqueness.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index d03c498..154f2a7 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -90,7 +90,7 @@ async function main() { const value = [true]; const uniqueQuery = [ { - requestId: 2002, + requestId: 2003, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 0, + nullifierSessionID: 6345123, groupID, proofType: 0 } From bbb4073d4d8e557ea16e35f24174b81254915517 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:43:07 +0300 Subject: [PATCH 21/49] jsonld-merklization --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 2f6e07e..7986f2e 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^10.0.6", "@typescript-eslint/eslint-plugin": "^7.6.0", + "@iden3/js-jsonld-merklization": "1.2.0", "async": "^3.2.3", "circomlibjs": "^0.1.7", "dotenv": "^16.4.5", From 33348c2725a63c790e4a4cacce070d415cbf453f Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:59:28 +0300 Subject: [PATCH 22/49] PoL --- scripts/verax/get-attestation.ts | 2 +- ...equests-v3validator-verax-AnimaProofOfLife.ts} | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) rename scripts/verax/{setRequests-v3validator-verax-AnimaProofOfIdentity.ts => setRequests-v3validator-verax-AnimaProofOfLife.ts} (93%) diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index c381131..06a9bb7 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000101'; + const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000106'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts similarity index 93% rename from scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts rename to scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index ca65dc6..05d6157 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfIdentity.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -2,6 +2,7 @@ import { ethers } from 'hardhat'; import { packV3ValidatorParams } from '../../test/utils/pack-utils'; import { ChainIds, DID, DidMethod, registerDidMethodNetwork } from '@iden3/js-iden3-core'; import { buildVerifierId, calculateQueryHashV3, coreSchemaFromStr } from '../../test/utils/utils'; +import { Merklizer } from '@iden3/js-jsonld-merklization'; const Operators = { NOOP: 0, // No operation, skip query verification in circuit EQ: 1, // equal @@ -52,7 +53,7 @@ async function main() { const skipClaimRevocationCheck = false; const allowedIssuers = []; const schemaUrl = - 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/poi-v1.json-ld'; + 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pol-v1.json-ld'; const schema = '124850561539049671310487367157968055340'; const schemaClaimPathKey = '20376033832371109177683048456014525905119173674985843915445634726167450989630'; @@ -85,13 +86,15 @@ async function main() { method: DidMethod.PolygonId }); console.log(verifierId.bigInt()); + const value = [true]; + const dateOfBirthQuery = [ { - requestId: 2002, + requestId: 3001, schema: schema, claimPathKey: schemaClaimPathKey, - operator: Operators.LT, - value: [20020101], + operator: Operators.EQ, + value: [await Merklizer.hashValue('http://www.w3.org/2001/XMLSchema#boolean', value[0])], slotIndex, queryHash, circuitIds, @@ -152,8 +155,8 @@ async function main() { date_of_birth: { [operatorKey]: query.operator === Operators.IN || query.operator === Operators.NIN - ? query.value - : query.value[0] + ? value + : value[0] } }, type: type From 00c96b09e8dd14c7c42c80df42790ba862bebc7d Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 14:59:37 +0300 Subject: [PATCH 23/49] package-lock --- package-lock.json | 325 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 325 insertions(+) diff --git a/package-lock.json b/package-lock.json index b522025..4de5abf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "@iden3/contracts": "^2.1.0", "@iden3/js-crypto": "^1.1.0", "@iden3/js-iden3-core": "^1.3.1", + "@iden3/js-jsonld-merklization": "1.2.0", "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@nomicfoundation/hardhat-verify": "^2.0.5", "@openzeppelin/contracts": "^5.0.2", @@ -1331,6 +1332,20 @@ "node": ">=12" } }, + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", + "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "dev": true, + "dependencies": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/@envelop/core": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@envelop/core/-/core-5.0.1.tgz", @@ -4419,6 +4434,32 @@ "@iden3/js-crypto": "1.1.0" } }, + "node_modules/@iden3/js-jsonld-merklization": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@iden3/js-jsonld-merklization/-/js-jsonld-merklization-1.2.0.tgz", + "integrity": "sha512-7SplwPwNxdwdG/cx2xReEHskgF1Xs+z292M1OYtSrM1PYNY4TRBI5BVMgDcp7im6ehUnsGNOWvdqt78dYiGRqg==", + "dev": true, + "dependencies": { + "@js-temporal/polyfill": "0.4.4", + "jsonld": "8.3.1", + "n3": "1.17.1" + }, + "peerDependencies": { + "@iden3/js-crypto": "1.1.0", + "@iden3/js-merkletree": "1.2.0" + } + }, + "node_modules/@iden3/js-merkletree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@iden3/js-merkletree/-/js-merkletree-1.2.0.tgz", + "integrity": "sha512-tM6jj1v/41qQ6V2K6CTrv0KsNHQ2y/O6Q9RSB1SdN2LTu+cgA9FnD2Qr3whzSvwgUs7X3SjuJgb9OTgs0lDemQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "@iden3/js-crypto": "1.1.0", + "idb-keyval": "^6.2.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -4573,6 +4614,25 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@js-temporal/polyfill": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.4.4.tgz", + "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==", + "dev": true, + "dependencies": { + "jsbi": "^4.3.0", + "tslib": "^2.4.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@js-temporal/polyfill/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, "node_modules/@kamilkisiela/fast-url-parser": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz", @@ -6499,6 +6559,18 @@ } } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", @@ -7373,6 +7445,12 @@ } ] }, + "node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", + "dev": true + }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", @@ -8155,6 +8233,15 @@ "node": "*" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -9366,12 +9453,30 @@ "npm": ">=3" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -9542,6 +9647,29 @@ "asap": "~2.0.3" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/ffjavascript": { "version": "0.2.63", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.2.63.tgz", @@ -9730,6 +9858,18 @@ "node": ">= 14.17" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fp-ts": { "version": "1.19.3", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", @@ -10912,6 +11052,13 @@ "node": ">=0.10.0" } }, + "node_modules/idb-keyval": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", + "dev": true, + "peer": true + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -11608,6 +11755,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz", + "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==", + "dev": true + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -11706,6 +11859,21 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonld": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.1.tgz", + "integrity": "sha512-tYfKpWL56meSJCHS91Ph0+EUThHZOZ8bKuboME4998SF+Kkukp2PhCPdRCvA7tsGUKr9FvSoyIRqJPuImBcBuA==", + "dev": true, + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", @@ -11775,6 +11943,61 @@ "node": ">=6" } }, + "node_modules/ky": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", + "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", + "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + } + }, + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/latest-version": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", @@ -12332,6 +12555,59 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/n3": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.1.tgz", + "integrity": "sha512-HlanMWpvN2kcTrFuU3GPObyY7qrVQWy2Hp7l4GSXJlcQapjQMR7OM4kCr788pTQzNIpiHS3JRvyZ2YUcYJ82rA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.1.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/n3/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/n3/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/nanoassert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", @@ -12393,6 +12669,25 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -13096,6 +13391,15 @@ "node": ">=10" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -13285,6 +13589,18 @@ "node": ">=0.10.0" } }, + "node_modules/rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -15902,6 +16218,15 @@ "wasmbuilder": "0.0.16" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/web-worker": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", From 59f014e268ee3227d1946c66e56f16ed17472462 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 5 Jun 2024 15:10:16 +0300 Subject: [PATCH 24/49] AnimaProofOfLife set request --- scripts/verax/get-attestation.ts | 2 +- .../setRequests-v3validator-verax-AnimaProofOfLife.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index 06a9bb7..5c215b2 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000106'; + const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000107'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 05d6157..5f9ac33 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -46,7 +46,7 @@ async function main() { // set default query const circuitIdV3 = 'credentialAtomicQueryV3OnChain-beta.1'; - const type = 'AnimaProofOfIdentity'; + const type = 'AnimaProofOfLife'; const queryHash = ''; const circuitIds = [circuitIdV3]; @@ -54,9 +54,9 @@ async function main() { const allowedIssuers = []; const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pol-v1.json-ld'; - const schema = '124850561539049671310487367157968055340'; + const schema = '210527560731691333146408988058384574850'; const schemaClaimPathKey = - '20376033832371109177683048456014525905119173674985843915445634726167450989630'; + '13751106843739971482657571607497906795066562763243795313411556194188082993570'; const slotIndex = 0; const merklized = 1; const groupID = 0; @@ -90,7 +90,7 @@ async function main() { const dateOfBirthQuery = [ { - requestId: 3001, + requestId: 3002, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 0, + nullifierSessionID: 775432423, groupID, proofType: 0 } From 07ff6be063e944fcdd97aeb626fb70f73b578075 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 6 Jun 2024 16:51:03 +0300 Subject: [PATCH 25/49] iden3 method --- .../setRequests-v3validator-verax-AnimaProofOfLife.ts | 8 ++++---- ...etRequests-v3validator-verax-AnimaProofOfUniqueness.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 5f9ac33..9d9cd90 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -66,7 +66,7 @@ async function main() { const network = 'linea-sepolia'; registerDidMethodNetwork({ - method: DidMethod.PolygonId, + method: DidMethod.Iden3, blockchain: 'linea', chainId: 59141, network: 'sepolia', @@ -83,14 +83,14 @@ async function main() { const verifierId = buildVerifierId(await veraxVerifier.getAddress(), { blockchain, networkId, - method: DidMethod.PolygonId + method: DidMethod.Iden3 }); console.log(verifierId.bigInt()); const value = [true]; const dateOfBirthQuery = [ { - requestId: 3002, + requestId: 3003, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 775432423, + nullifierSessionID: 3003, groupID, proofType: 0 } diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index 154f2a7..e085abd 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -67,7 +67,7 @@ async function main() { const network = 'linea-sepolia'; registerDidMethodNetwork({ - method: DidMethod.PolygonId, + method: DidMethod.Iden3, blockchain: 'linea', chainId: 59141, network: 'sepolia', @@ -84,13 +84,13 @@ async function main() { const verifierId = buildVerifierId(await veraxVerifier.getAddress(), { blockchain, networkId, - method: DidMethod.PolygonId + method: DidMethod.Iden3 }); console.log(verifierId.bigInt()); const value = [true]; const uniqueQuery = [ { - requestId: 2003, + requestId: 2004, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 6345123, + nullifierSessionID: 2004, groupID, proofType: 0 } From e820a09d7738832f97e2b35ede39c4fcf9fcb130 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 6 Jun 2024 18:44:30 +0300 Subject: [PATCH 26/49] allowedIssuers --- .../setRequests-v3validator-verax-AnimaProofOfLife.ts | 8 ++++---- ...etRequests-v3validator-verax-AnimaProofOfUniqueness.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 9d9cd90..fe5fdbd 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -51,7 +51,7 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = []; + const allowedIssuers = ['did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v']; const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pol-v1.json-ld'; const schema = '210527560731691333146408988058384574850'; @@ -90,7 +90,7 @@ async function main() { const dateOfBirthQuery = [ { - requestId: 3003, + requestId: 3005, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 3003, + nullifierSessionID: 3005, groupID, proofType: 0 } @@ -149,7 +149,7 @@ async function main() { id: query.requestId, circuitId: circuitIdV3, query: { - allowedIssuers: ['*'], + allowedIssuers: !allowedIssuers.length ? ['*'] : allowedIssuers, context: schemaUrl, credentialSubject: { date_of_birth: { diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index e085abd..b601507 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -52,7 +52,7 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = []; + const allowedIssuers = ['did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v']; const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pou-v1.json-ld'; const schema = '154254168293843647812290076058923399205'; @@ -90,7 +90,7 @@ async function main() { const value = [true]; const uniqueQuery = [ { - requestId: 2004, + requestId: 2005, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 2004, + nullifierSessionID: 2005, groupID, proofType: 0 } @@ -149,7 +149,7 @@ async function main() { id: query.requestId, circuitId: circuitIdV3, query: { - allowedIssuers: ['*'], + allowedIssuers: !allowedIssuers.length ? ['*'] : allowedIssuers, context: schemaUrl, credentialSubject: { unique: { From 96f248f4c74eaf27b50c20f5cfce53c2bdc5317c Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 11:24:23 +0300 Subject: [PATCH 27/49] split PoU/PoL --- contracts/examples/verax/VeraxZKPVerifier.sol | 36 +++++++---- ...erifyModule.sol => ZKPVerifyModulePoL.sol} | 8 +-- .../examples/verax/ZKPVerifyModulePoU.sol | 63 +++++++++++++++++++ scripts/genesis-state/Readme.md | 22 +++---- scripts/verax/create-default-portal.ts | 4 +- scripts/verax/create-schema.ts | 10 +-- scripts/verax/deploy-module.ts | 11 ++-- scripts/verax/get-attestation.ts | 9 +-- ...o.ts => setPortalInfo-AnimaProofOfLife.ts} | 12 +++- ...ests-v3validator-verax-AnimaProofOfLife.ts | 16 ++--- 10 files changed, 135 insertions(+), 56 deletions(-) rename contracts/examples/verax/{ZKPVerifyModule.sol => ZKPVerifyModulePoL.sol} (87%) create mode 100644 contracts/examples/verax/ZKPVerifyModulePoU.sol rename scripts/verax/{setPortalInfo.ts => setPortalInfo-AnimaProofOfLife.ts} (59%) diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index deb591c..0f91855 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -19,10 +19,17 @@ interface AttestationRegistry { contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { event AttestError(string message); event AttestOk(string message); - /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier - struct VeraxZKPVerifierStorage { + + enum AttestationSchemaType { PoU, PoL } + + struct PortalInfo { IPortal attestationPortalContract; bytes32 schemaId; + AttestationSchemaType schemaType; + } + /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier + struct VeraxZKPVerifierStorage { + mapping (uint64 requestId => PortalInfo portalInfo) portalInfoForReq; } // keccak256(abi.encode(uint256(keccak256("polygonid.storage.ERC20SelectiveDisclosureVerifier")) - 1)) & ~bytes32(uint256(0xff)) @@ -39,10 +46,9 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { __Ownable_init(_msgSender()); } - function setPortalInfo(address portalAddress, bytes32 schemaId) public onlyOwner { + function setPortalInfo(uint64 requestId, address portalAddress, bytes32 schemaId, AttestationSchemaType schemaType) public onlyOwner { VeraxZKPVerifierStorage storage $ = _getVeraxZKPVerifierStorage(); - $.attestationPortalContract = IPortal(portalAddress); - $.schemaId = schemaId; + $.portalInfoForReq[requestId] = PortalInfo(IPortal(portalAddress), schemaId, schemaType); } function _attest( uint64 requestId, @@ -51,19 +57,27 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { uint256[2][2] calldata b, uint256[2] calldata c) internal { VeraxZKPVerifierStorage storage $ = _getVeraxZKPVerifierStorage(); - if ($.attestationPortalContract == IPortal(address(0))) { - return; + PortalInfo memory portalInfo = $.portalInfoForReq[requestId]; + if (portalInfo.attestationPortalContract == IPortal(address(0))) { + revert("Attestation portal not found for request"); + } + bytes memory attestationPayload; + + if (portalInfo.schemaType == AttestationSchemaType.PoL) { + attestationPayload = abi.encode(requestId, inputs[4]); // requestId, nullifier + } else { + attestationPayload = abi.encode(requestId, inputs[4], inputs[5]); // requestId, nullifier, operator output } AttestationPayload memory payload = AttestationPayload( - bytes32($.schemaId), + bytes32(portalInfo.schemaId), uint64(inputs[12]), // expiration - abi.encode(inputs[0]), // user id - abi.encode(requestId, inputs[4]) // requestId, nullifier + abi.encode(msg.sender), // message sender + attestationPayload ); bytes memory validationData = abi.encode(requestId, inputs, a, b, c); bytes[] memory validationPayload = new bytes[](1); validationPayload[0] = validationData; - try $.attestationPortalContract.attest(payload, validationPayload) { + try portalInfo.attestationPortalContract.attest(payload, validationPayload) { emit AttestOk("attestation done"); } catch { emit AttestError("attestation error"); diff --git a/contracts/examples/verax/ZKPVerifyModule.sol b/contracts/examples/verax/ZKPVerifyModulePoL.sol similarity index 87% rename from contracts/examples/verax/ZKPVerifyModule.sol rename to contracts/examples/verax/ZKPVerifyModulePoL.sol index bfbf987..5f768d1 100644 --- a/contracts/examples/verax/ZKPVerifyModule.sol +++ b/contracts/examples/verax/ZKPVerifyModulePoL.sol @@ -5,7 +5,7 @@ import { AttestationPayload } from "./types/Structs.sol"; import { AbstractModule } from "./abstracts/AbstractModule.sol"; import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; -contract ZKPVerifyModule is AbstractModule { +contract ZKPVerifyModulePoL is AbstractModule { IZKPVerifier public zkpVerifier; mapping (uint256 nullifierSessionID => bool) isNullifierAttested; @@ -18,9 +18,9 @@ contract ZKPVerifyModule is AbstractModule { (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = abi.decode(attestationPayload.attestationData, (uint64, uint256)); - (uint256 attestationSubject) = - abi.decode(attestationPayload.subject, (uint256)); - require(attestationSubject == inputs[0], "attestation subject doesn't match to user id input"); + // (uint256 attestationSubject) = + // abi.decode(attestationPayload.subject, (uint256)); + // require(attestationSubject == inputs[0], "attestation subject doesn't match to user id input"); require(attestationRequestId == inputs[7], "request Id doesn't match"); require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); diff --git a/contracts/examples/verax/ZKPVerifyModulePoU.sol b/contracts/examples/verax/ZKPVerifyModulePoU.sol new file mode 100644 index 0000000..ca02f28 --- /dev/null +++ b/contracts/examples/verax/ZKPVerifyModulePoU.sol @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.20; + +import { AttestationPayload } from "./types/Structs.sol"; +import { AbstractModule } from "./abstracts/AbstractModule.sol"; +import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; + +contract ZKPVerifyModulePoU is AbstractModule { + + IZKPVerifier public zkpVerifier; + struct PoUData { + address sender; + uint256 reputationLevel; + } + + mapping (uint256 nullifierSessionID => PoUData data) nullifierAttestedData; + + constructor(address _zkpVerifier) { + zkpVerifier = IZKPVerifier(_zkpVerifier); + } + + function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs) internal { + (uint64 attestationRequestId, uint256 attestationNullifierSessionID, uint256 reputationLevel) = + abi.decode(attestationPayload.attestationData, (uint64, uint256, uint256)); + + require(attestationRequestId == inputs[7], "request Id doesn't match"); + require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); + } + + function run( + AttestationPayload memory attestationPayload, + bytes memory validationPayload, + address txSender, + uint256 /*value*/ + ) public override { + (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = + abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); + + PoUData memory prevAttestationData = nullifierAttestedData[inputs[4]]; + if (prevAttestationData.sender != address(0)) { + if (prevAttestationData.sender != txSender) { + revert("sender of the previous attestation for this nullifier doesn't match"); + } + if (prevAttestationData.reputationLevel <= inputs[5]) { + revert("reputation level not increased"); + } + } + + IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); + request.validator.verify( + inputs, + a, + b, + c, + request.data, + txSender); + + _verifyAttestationPayload(attestationPayload, inputs); + + nullifierAttestedData[inputs[4]] = PoUData(txSender, inputs[5]); + } + +} diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index 90dc22f..1a5c28b 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -24,16 +24,14 @@ CredentialAtomicQueryV3Validator deployed to: 0x03e26bf5B8Aa3287a6D229B524f9F44 3. Verax flow: -VeraxZKPVerifier deployed to: 0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46 - -request: -did:polygonid:linea:sepolia:32232vGknSaJHfCBffnbzHzYYy6FvHDkK9QL4SFAq6 -200 -nullifierSessionID: 5543 -300 -nullifierSessionID: 300 -301 -nullifierSessionID: 301 -302 -nullifierSessionID: 302 +VeraxZKPVerifier deployed to: 0x975218461843300C46683e2F16B5FA781E7ef97f + +npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts --network sepolia + +* +did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c +575757 + +ZKPVerifyModulePoL deployed to: 0xBe08e0B599ccCBc59214ee651fc1805ef96349d9 +ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F \ No newline at end of file diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 082471c..a8d7b48 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -5,9 +5,9 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const moduleAddress = '0xdaa63CB80effa8be27b029cE6021eB7Ab0917A64'; + const moduleAddress = '0xBe08e0B599ccCBc59214ee651fc1805ef96349d9'; const tx = await veraxSdk.portal.deployDefaultPortal( - [moduleAddress], "ZKPVerifyModule portal", "This Portal is used as an example for ZKPVerifyModule contract", false, "Iden3", true); + [moduleAddress], "ZKPVerifyModulePoL portal", "This Portal is used as an example for ZKPVerifyModulePoL contract", false, "Iden3", true); console.log(tx); } diff --git a/scripts/verax/create-schema.ts b/scripts/verax/create-schema.ts index be6131a..f1b2673 100644 --- a/scripts/verax/create-schema.ts +++ b/scripts/verax/create-schema.ts @@ -20,13 +20,15 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; export const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; export const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; -// schema id - 0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e - "(uint64 requestId, uint256 nullifierSessionID)" +// schema ids: +// 0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e - "(uint64 requestId, uint256 nullifierSessionID)" +// 0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6 - "(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)" async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const schemaString = "(uint64 requestId, uint256 nullifierSessionID)"; + const schemaString = "(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)"; - // const schemaTx = await veraxSdk.schema.create("Verification schema", - // "Verification schema", "", schemaString, true); + // const schemaTx = await veraxSdk.schema.create("Verification schema with reputation level", + // "Verification schema with reputation level", "", schemaString, true); // console.log(schemaTx); diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index ba52b0c..8e64927 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -2,12 +2,13 @@ import { ethers } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { - const VeraxZKPVerifier = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; + const VeraxZKPVerifier = '0x975218461843300C46683e2F16B5FA781E7ef97f'; - const ZKPVerifyModuleFactory = await ethers.getContractFactory("ZKPVerifyModule"); + const moduleName = 'ZKPVerifyModulePoL'; + const ZKPVerifyModuleFactory = await ethers.getContractFactory(moduleName); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); await ZKPVerifyModule.waitForDeployment(); - console.log("ZKPVerifyModule deployed to:", await ZKPVerifyModule.getAddress()); + console.log(moduleName, " deployed to:", await ZKPVerifyModule.getAddress()); // register module const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; @@ -15,8 +16,8 @@ async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); const tx = await veraxSdk.module.register( - "ZKPVerifyModule", - "This Module is used as an example of ZKPVerifyModule", + moduleName, + "This Module is used as an example of " + moduleName, (await ZKPVerifyModule.getAddress()) as `0x${string}`, true ); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index 5c215b2..659db52 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000107'; + const attestationId = '0x000000000000000000000000000000000000000000000000000000000000012b'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); @@ -17,12 +17,7 @@ async function main() { attestation.attestationData as `0x${string}` ); console.log(decoded); - - const decodedSubj = veraxSdk.utils.decode('uint256', - attestation.subject)[0] as string; - - const userId = Id.fromBigInt(BigInt(decodedSubj)); - console.log(userId.bigInt()); + console.log('sender', attestation.subject); } main() diff --git a/scripts/verax/setPortalInfo.ts b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts similarity index 59% rename from scripts/verax/setPortalInfo.ts rename to scripts/verax/setPortalInfo-AnimaProofOfLife.ts index f88182a..7c14e7d 100644 --- a/scripts/verax/setPortalInfo.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts @@ -1,16 +1,22 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; + const veraxVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); - const portalAddress = '0x215c556049354F6217d85936f9986B5368621FEb'; + const requestId = 575757; + const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; + const schemaType = 1; + + const portalAddress = '0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F'; const tx = await verax.setPortalInfo( + requestId, portalAddress, - '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e' + schemaId, + schemaType ); console.log(tx); } diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index fe5fdbd..d2bb95b 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -37,7 +37,7 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator + const veraxZKPVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -51,7 +51,7 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = ['did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v']; + const allowedIssuers = []; // 'did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v' const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pol-v1.json-ld'; const schema = '210527560731691333146408988058384574850'; @@ -88,9 +88,9 @@ async function main() { console.log(verifierId.bigInt()); const value = [true]; - const dateOfBirthQuery = [ + const polQuery = [ { - requestId: 3005, + requestId: 575757, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 3005, + nullifierSessionID: 575757, groupID, proofType: 0 } @@ -109,8 +109,8 @@ async function main() { console.log(DID.parseFromId(verifierId).string()); try { - for (let i = 0; i < dateOfBirthQuery.length; i++) { - const query = dateOfBirthQuery[i]; + for (let i = 0; i < polQuery.length; i++) { + const query = polQuery[i]; console.log(query.requestId); const operatorKey = @@ -152,7 +152,7 @@ async function main() { allowedIssuers: !allowedIssuers.length ? ['*'] : allowedIssuers, context: schemaUrl, credentialSubject: { - date_of_birth: { + human: { [operatorKey]: query.operator === Operators.IN || query.operator === Operators.NIN ? value From 26d83144b8782c34b95b4b07e4b7415400e136af Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 12:46:23 +0300 Subject: [PATCH 28/49] POU fix and request --- .../examples/verax/ZKPVerifyModulePoU.sol | 2 +- scripts/genesis-state/Readme.md | 15 +++++++++- scripts/verax/create-default-portal.ts | 4 +-- scripts/verax/deploy-module.ts | 2 +- scripts/verax/get-attestation.ts | 4 +-- .../verax/setPortalInfo-AnimaProofOfLife.ts | 2 +- .../setPortalInfo-AnimaProofOfUniqueness.ts | 29 +++++++++++++++++++ ...3validator-verax-AnimaProofOfUniqueness.ts | 26 ++++++++--------- 8 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts diff --git a/contracts/examples/verax/ZKPVerifyModulePoU.sol b/contracts/examples/verax/ZKPVerifyModulePoU.sol index ca02f28..9a0afe3 100644 --- a/contracts/examples/verax/ZKPVerifyModulePoU.sol +++ b/contracts/examples/verax/ZKPVerifyModulePoU.sol @@ -41,7 +41,7 @@ contract ZKPVerifyModulePoU is AbstractModule { if (prevAttestationData.sender != txSender) { revert("sender of the previous attestation for this nullifier doesn't match"); } - if (prevAttestationData.reputationLevel <= inputs[5]) { + if (prevAttestationData.reputationLevel >= inputs[5]) { revert("reputation level not increased"); } } diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index 1a5c28b..cc1b2d7 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -27,6 +27,7 @@ CredentialAtomicQueryV3Validator deployed to: 0x03e26bf5B8Aa3287a6D229B524f9F44 VeraxZKPVerifier deployed to: 0x975218461843300C46683e2F16B5FA781E7ef97f +POL: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts --network sepolia * @@ -34,4 +35,16 @@ did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c 575757 ZKPVerifyModulePoL deployed to: 0xBe08e0B599ccCBc59214ee651fc1805ef96349d9 -ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F \ No newline at end of file +ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F + + +POU: +npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts --network sepolia + +* +did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c +454545454 + + +ZKPVerifyModulePoU deployed to: 0x4CB60066E9db643F244a04216BDEBC103D76A595 +ZKPVerifyModulePoU portal : 0x52dEA76F098a5897757F49f639f93A39fC435AE2 diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index a8d7b48..7dda96e 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -5,9 +5,9 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const moduleAddress = '0xBe08e0B599ccCBc59214ee651fc1805ef96349d9'; + const moduleAddress = '0x4CB60066E9db643F244a04216BDEBC103D76A595'; const tx = await veraxSdk.portal.deployDefaultPortal( - [moduleAddress], "ZKPVerifyModulePoL portal", "This Portal is used as an example for ZKPVerifyModulePoL contract", false, "Iden3", true); + [moduleAddress], "ZKPVerifyModulePoU portal", "This Portal is used as an example for ZKPVerifyModulePoU contract", false, "Iden3", true); console.log(tx); } diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index 8e64927..ff44e1e 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -4,7 +4,7 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { const VeraxZKPVerifier = '0x975218461843300C46683e2F16B5FA781E7ef97f'; - const moduleName = 'ZKPVerifyModulePoL'; + const moduleName = 'ZKPVerifyModulePoU'; const ZKPVerifyModuleFactory = await ethers.getContractFactory(moduleName); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); await ZKPVerifyModule.waitForDeployment(); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index 659db52..f50264d 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,14 +6,14 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x000000000000000000000000000000000000000000000000000000000000012b'; + const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000135'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); const decoded = veraxSdk.utils.decode( - '(uint64 requestId, uint256 nullifierSessionID)', + '(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)', attestation.attestationData as `0x${string}` ); console.log(decoded); diff --git a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts index 7c14e7d..25131ab 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts @@ -9,7 +9,7 @@ async function main() { const requestId = 575757; const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; - const schemaType = 1; + const schemaType = 1; // PoL const portalAddress = '0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F'; const tx = await verax.setPortalInfo( diff --git a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts new file mode 100644 index 0000000..5622237 --- /dev/null +++ b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts @@ -0,0 +1,29 @@ +import { ethers } from 'hardhat'; + +async function main() { + const veraxVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; + + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); + const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); + console.log(verax, ' attached to:', await verax.getAddress()); + + const requestId = 454545454; + const schemaId = '0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6'; + const schemaType = 0; // PoU + + const portalAddress = '0x52dEA76F098a5897757F49f639f93A39fC435AE2'; + const tx = await verax.setPortalInfo( + requestId, + portalAddress, + schemaId, + schemaType + ); + console.log(tx); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index b601507..7a65281 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -38,7 +38,7 @@ export const QueryOperators = { async function main() { const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0x1571fA0f7CCb065Fc8F27c221C0a4ad4ea8c2A46'; // verax validator + const veraxZKPVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -52,12 +52,12 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = ['did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v']; + const allowedIssuers = []; // 'did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v' const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pou-v1.json-ld'; const schema = '154254168293843647812290076058923399205'; const schemaClaimPathKey = - '12108295158402738095426831653137229485035232473156116723769892077296285974307'; + '9835688698410935663542366129505429686563883986990826014707760188814087828145'; const slotIndex = 0; const merklized = 1; const groupID = 0; @@ -87,21 +87,21 @@ async function main() { method: DidMethod.Iden3 }); console.log(verifierId.bigInt()); - const value = [true]; + // const value = [true]; const uniqueQuery = [ { - requestId: 2005, + requestId: 454545454, schema: schema, claimPathKey: schemaClaimPathKey, - operator: Operators.EQ, - value: [await Merklizer.hashValue('http://www.w3.org/2001/XMLSchema#boolean', value[0])], + operator: Operators.SD, + value: [], // await Merklizer.hashValue('http://www.w3.org/2001/XMLSchema#boolean', value[0]) slotIndex, queryHash, circuitIds, allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 2005, + nullifierSessionID: 454545454, groupID, proofType: 0 } @@ -152,11 +152,11 @@ async function main() { allowedIssuers: !allowedIssuers.length ? ['*'] : allowedIssuers, context: schemaUrl, credentialSubject: { - unique: { - [operatorKey]: - query.operator === Operators.IN || query.operator === Operators.NIN - ? value - : value[0] + reputation_level: { + // [operatorKey]: + // query.operator === Operators.IN || query.operator === Operators.NIN + // ? value + // : value[0] } }, type: type From f5f35ca1e5df2ee916d70db66cfc8b7cdfbb5cc5 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 15:43:47 +0300 Subject: [PATCH 29/49] add run script --- scripts/genesis-state/Readme.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index cc1b2d7..e661301 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -37,6 +37,7 @@ did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c ZKPVerifyModulePoL deployed to: 0xBe08e0B599ccCBc59214ee651fc1805ef96349d9 ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F +npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfLife.ts --network sepolia POU: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts --network sepolia @@ -48,3 +49,5 @@ did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c ZKPVerifyModulePoU deployed to: 0x4CB60066E9db643F244a04216BDEBC103D76A595 ZKPVerifyModulePoU portal : 0x52dEA76F098a5897757F49f639f93A39fC435AE2 + +npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts --network sepolia \ No newline at end of file From 581d73395445f63b3a56cd930ba835cf0671d525 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 16:03:58 +0300 Subject: [PATCH 30/49] allowed issuer --- scripts/genesis-state/Readme.md | 7 +++++++ scripts/verax/setPortalInfo-AnimaProofOfLife.ts | 2 +- scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts | 2 +- .../setRequests-v3validator-verax-AnimaProofOfLife.ts | 6 +++--- ...setRequests-v3validator-verax-AnimaProofOfUniqueness.ts | 6 +++--- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index e661301..3043d0f 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -34,6 +34,10 @@ npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c 575757 +did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer +did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c - verifier +100001 - requestId/nullifier + ZKPVerifyModulePoL deployed to: 0xBe08e0B599ccCBc59214ee651fc1805ef96349d9 ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F @@ -46,6 +50,9 @@ npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniquene did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c 454545454 +did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer +did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c - verifier +100002 - requestId/nullifier ZKPVerifyModulePoU deployed to: 0x4CB60066E9db643F244a04216BDEBC103D76A595 ZKPVerifyModulePoU portal : 0x52dEA76F098a5897757F49f639f93A39fC435AE2 diff --git a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts index 25131ab..47ca657 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts @@ -7,7 +7,7 @@ async function main() { const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); - const requestId = 575757; + const requestId = 100001; const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; const schemaType = 1; // PoL diff --git a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts index 5622237..65b3eb0 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts @@ -7,7 +7,7 @@ async function main() { const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); - const requestId = 454545454; + const requestId = 100002; const schemaId = '0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6'; const schemaType = 0; // PoU diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index d2bb95b..187b92c 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -51,7 +51,7 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = []; // 'did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v' + const allowedIssuers = ['did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7']; const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pol-v1.json-ld'; const schema = '210527560731691333146408988058384574850'; @@ -90,7 +90,7 @@ async function main() { const polQuery = [ { - requestId: 575757, + requestId: 100001, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.EQ, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 575757, + nullifierSessionID: 100001, groupID, proofType: 0 } diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index 7a65281..488747d 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -52,7 +52,7 @@ async function main() { const queryHash = ''; const circuitIds = [circuitIdV3]; const skipClaimRevocationCheck = false; - const allowedIssuers = []; // 'did:iden3:privado:main:2SiLQjkvTkTsuc4ZPEckmDFM9JohBeyaPahX6Gwg7v' + const allowedIssuers = ['did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7']; const schemaUrl = 'https://raw.githubusercontent.com/anima-protocol/claims-polygonid/main/schemas/json-ld/pou-v1.json-ld'; const schema = '154254168293843647812290076058923399205'; @@ -90,7 +90,7 @@ async function main() { // const value = [true]; const uniqueQuery = [ { - requestId: 454545454, + requestId: 100002, schema: schema, claimPathKey: schemaClaimPathKey, operator: Operators.SD, @@ -101,7 +101,7 @@ async function main() { allowedIssuers, skipClaimRevocationCheck, verifierID: verifierId.bigInt(), - nullifierSessionID: 454545454, + nullifierSessionID: 100002, groupID, proofType: 0 } From b5341cbb39d6eda63e1bf377d010177c3cbddfa6 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 17:39:54 +0300 Subject: [PATCH 31/49] fix storage location --- contracts/examples/verax/VeraxZKPVerifier.sol | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index 0f91855..74249d0 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.20; import {Attestation, AttestationPayload} from './types/Structs.sol'; import {ZKPVerifierBase} from '@iden3/contracts/verifiers/ZKPVerifierBase.sol'; import {Ownable2StepUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol"; +import {IZKPVerifier} from '@iden3/contracts/interfaces/IZKPVerifier.sol'; interface IPortal { function attest(AttestationPayload memory attestationPayload, bytes[] memory validationPayloads) external payable; @@ -27,14 +28,14 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { bytes32 schemaId; AttestationSchemaType schemaType; } - /// @custom:storage-location erc7201:polygonid.storage.ERC20SelectiveDisclosureVerifier + /// @custom:storage-location erc7201:polygonid.storage.VeraxZKPVerifier struct VeraxZKPVerifierStorage { mapping (uint64 requestId => PortalInfo portalInfo) portalInfoForReq; } - // keccak256(abi.encode(uint256(keccak256("polygonid.storage.ERC20SelectiveDisclosureVerifier")) - 1)) & ~bytes32(uint256(0xff)) + // keccak256(abi.encode(uint256(keccak256("polygonid.storage.VeraxZKPVerifier")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant VeraxZKPVerifierStorageLocation = - 0xb76e10afcb000a9a2532ea819d260b0a3c0ddb1d54ee499ab0643718cbae8700; + 0xf2a0fb5adce57cdd20ffa282dfdeffa5cf790754d88eeeedb507a130ec7f2900; function _getVeraxZKPVerifierStorage() private pure returns (VeraxZKPVerifierStorage storage $) { assembly { @@ -51,7 +52,7 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { $.portalInfoForReq[requestId] = PortalInfo(IPortal(portalAddress), schemaId, schemaType); } - function _attest( uint64 requestId, + function _attest(uint64 requestId, uint256[] calldata inputs, uint256[2] calldata a, uint256[2][2] calldata b, @@ -63,14 +64,16 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { } bytes memory attestationPayload; + IZKPVerifier.ZKPRequest memory request = getZKPRequest(requestId); + if (portalInfo.schemaType == AttestationSchemaType.PoL) { - attestationPayload = abi.encode(requestId, inputs[4]); // requestId, nullifier + attestationPayload = abi.encode(requestId, inputs[request.validator.inputIndexOf('nullifier')]); } else { - attestationPayload = abi.encode(requestId, inputs[4], inputs[5]); // requestId, nullifier, operator output + attestationPayload = abi.encode(requestId, inputs[request.validator.inputIndexOf('nullifier')], inputs[request.validator.inputIndexOf('operatorOutput')]); } AttestationPayload memory payload = AttestationPayload( bytes32(portalInfo.schemaId), - uint64(inputs[12]), // expiration + uint64(inputs[request.validator.inputIndexOf('timestamp')]), // expiration abi.encode(msg.sender), // message sender attestationPayload ); From 7fd6afae20d0f6699b33a9963530556fa7966064 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 18:16:09 +0300 Subject: [PATCH 32/49] replace indexes to named inputs --- .../examples/verax/ZKPVerifyModulePoL.sol | 26 +++++++++---------- .../examples/verax/ZKPVerifyModulePoU.sol | 17 ++++++------ .../verax/abstracts/AbstractModule.sol | 1 + contracts/examples/verax/types/Structs.sol | 1 + 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/contracts/examples/verax/ZKPVerifyModulePoL.sol b/contracts/examples/verax/ZKPVerifyModulePoL.sol index 5f768d1..87ee970 100644 --- a/contracts/examples/verax/ZKPVerifyModulePoL.sol +++ b/contracts/examples/verax/ZKPVerifyModulePoL.sol @@ -4,6 +4,7 @@ pragma solidity 0.8.20; import { AttestationPayload } from "./types/Structs.sol"; import { AbstractModule } from "./abstracts/AbstractModule.sol"; import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; +import { ICircuitValidator } from '@iden3/contracts/interfaces/ICircuitValidator.sol'; contract ZKPVerifyModulePoL is AbstractModule { IZKPVerifier public zkpVerifier; @@ -14,16 +15,12 @@ contract ZKPVerifyModulePoL is AbstractModule { zkpVerifier = IZKPVerifier(_zkpVerifier); } - function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs) internal { - (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = + function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs, ICircuitValidator validator) internal view { + (uint64 attestationRequestId, uint256 attestationNullifierSessionID) = abi.decode(attestationPayload.attestationData, (uint64, uint256)); - // (uint256 attestationSubject) = - // abi.decode(attestationPayload.subject, (uint256)); - // require(attestationSubject == inputs[0], "attestation subject doesn't match to user id input"); - - require(attestationRequestId == inputs[7], "request Id doesn't match"); - require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); + require(attestationRequestId == inputs[validator.inputIndexOf('requestID')], "request Id doesn't match"); + require(attestationNullifierSessionID == inputs[validator.inputIndexOf('nullifier')], "nullifier doesn't match"); } function run( @@ -35,11 +32,9 @@ contract ZKPVerifyModulePoL is AbstractModule { (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); - uint256 nullifierSessionId = inputs[4]; - require(!isNullifierAttested[nullifierSessionId], "attestation for nullifier already provided"); - - IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); - request.validator.verify( + IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(requestId); + ICircuitValidator validator = request.validator; + validator.verify( inputs, a, b, @@ -47,7 +42,10 @@ contract ZKPVerifyModulePoL is AbstractModule { request.data, txSender); - _verifyAttestationPayload(attestationPayload, inputs); + uint256 nullifierSessionId = inputs[validator.inputIndexOf('nullifier')]; + require(!isNullifierAttested[nullifierSessionId], "attestation for nullifier already provided"); + + _verifyAttestationPayload(attestationPayload, inputs, validator); isNullifierAttested[nullifierSessionId] = true; } diff --git a/contracts/examples/verax/ZKPVerifyModulePoU.sol b/contracts/examples/verax/ZKPVerifyModulePoU.sol index 9a0afe3..ef71d21 100644 --- a/contracts/examples/verax/ZKPVerifyModulePoU.sol +++ b/contracts/examples/verax/ZKPVerifyModulePoU.sol @@ -4,9 +4,9 @@ pragma solidity 0.8.20; import { AttestationPayload } from "./types/Structs.sol"; import { AbstractModule } from "./abstracts/AbstractModule.sol"; import { IZKPVerifier } from '@iden3/contracts/interfaces/IZKPVerifier.sol'; +import { ICircuitValidator } from '@iden3/contracts/interfaces/ICircuitValidator.sol'; contract ZKPVerifyModulePoU is AbstractModule { - IZKPVerifier public zkpVerifier; struct PoUData { address sender; @@ -19,12 +19,12 @@ contract ZKPVerifyModulePoU is AbstractModule { zkpVerifier = IZKPVerifier(_zkpVerifier); } - function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs) internal { + function _verifyAttestationPayload(AttestationPayload memory attestationPayload, uint256[] memory inputs, ICircuitValidator validator) internal view { (uint64 attestationRequestId, uint256 attestationNullifierSessionID, uint256 reputationLevel) = abi.decode(attestationPayload.attestationData, (uint64, uint256, uint256)); - require(attestationRequestId == inputs[7], "request Id doesn't match"); - require(attestationNullifierSessionID == inputs[4], "nullifier doesn't match"); + require(attestationRequestId == inputs[validator.inputIndexOf('requestID')], "request Id doesn't match"); + require(attestationNullifierSessionID == inputs[validator.inputIndexOf('nullifier')], "nullifier doesn't match"); } function run( @@ -36,7 +36,9 @@ contract ZKPVerifyModulePoU is AbstractModule { (uint64 requestId, uint256[] memory inputs, uint256[2] memory a, uint256[2][2] memory b, uint256[2] memory c) = abi.decode(validationPayload, (uint64, uint256[], uint256[2], uint256[2][2], uint256[2])); - PoUData memory prevAttestationData = nullifierAttestedData[inputs[4]]; + IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(requestId); + + PoUData memory prevAttestationData = nullifierAttestedData[inputs[request.validator.inputIndexOf('nullifier')]]; if (prevAttestationData.sender != address(0)) { if (prevAttestationData.sender != txSender) { revert("sender of the previous attestation for this nullifier doesn't match"); @@ -46,7 +48,6 @@ contract ZKPVerifyModulePoU is AbstractModule { } } - IZKPVerifier.ZKPRequest memory request = zkpVerifier.getZKPRequest(uint64(inputs[7])); request.validator.verify( inputs, a, @@ -55,9 +56,9 @@ contract ZKPVerifyModulePoU is AbstractModule { request.data, txSender); - _verifyAttestationPayload(attestationPayload, inputs); + _verifyAttestationPayload(attestationPayload, inputs, request.validator); - nullifierAttestedData[inputs[4]] = PoUData(txSender, inputs[5]); + nullifierAttestedData[inputs[request.validator.inputIndexOf('nullifier')]] = PoUData(txSender, inputs[request.validator.inputIndexOf('operatorOutput')]); } } diff --git a/contracts/examples/verax/abstracts/AbstractModule.sol b/contracts/examples/verax/abstracts/AbstractModule.sol index caf60be..2efa530 100644 --- a/contracts/examples/verax/abstracts/AbstractModule.sol +++ b/contracts/examples/verax/abstracts/AbstractModule.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// copied from https://github.com/Consensys/linea-attestation-registry/blob/dev/contracts/src/abstracts/AbstractModule.sol pragma solidity 0.8.20; import { AttestationPayload } from "../types/Structs.sol"; diff --git a/contracts/examples/verax/types/Structs.sol b/contracts/examples/verax/types/Structs.sol index 2b004cf..435c2c4 100644 --- a/contracts/examples/verax/types/Structs.sol +++ b/contracts/examples/verax/types/Structs.sol @@ -1,4 +1,5 @@ // SPDX-License-Identifier: MIT +// copied from https://github.com/Consensys/linea-attestation-registry/blob/dev/contracts/src/types/Structs.sol pragma solidity 0.8.20; struct AttestationPayload { From 8ea76167696a77b7df23e21dbc323d7b5dc30ccc Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 18:26:53 +0300 Subject: [PATCH 33/49] rename readonly state --- contracts/examples/{GenesisState.sol => ReadonlyState.sol} | 6 +++--- .../{deployGenesiState.ts => deployReadonlyState.ts} | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename contracts/examples/{GenesisState.sol => ReadonlyState.sol} (98%) rename scripts/genesis-state/{deployGenesiState.ts => deployReadonlyState.ts} (92%) diff --git a/contracts/examples/GenesisState.sol b/contracts/examples/ReadonlyState.sol similarity index 98% rename from contracts/examples/GenesisState.sol rename to contracts/examples/ReadonlyState.sol index 1f48294..a20ae92 100644 --- a/contracts/examples/GenesisState.sol +++ b/contracts/examples/ReadonlyState.sol @@ -10,11 +10,11 @@ import {StateLib} from "@iden3/contracts/lib/StateLib.sol"; import {GenesisUtils} from "@iden3/contracts/lib/GenesisUtils.sol"; /// @title Set and get states for each identity -contract GenesisState is Ownable2StepUpgradeable, IState { +contract ReadonlyState is Ownable2StepUpgradeable, IState { /** * @dev Version of contract */ - string public constant VERSION = "2.4.0-only-genesis"; + string public constant VERSION = "2.4.1-readonly"; // This empty reserved space is put in place to allow future versions // of the State contract to inherit from other contracts without a risk of @@ -381,7 +381,7 @@ contract GenesisState is Ownable2StepUpgradeable, IState { uint256 newState, bool isOldStateGenesis ) internal { - revert("only genesis states are allowed for this contract"); + revert("readonly contract: state transition is prohibited"); require(id != 0, "ID should not be zero"); require(newState != 0, "New state should not be zero"); diff --git a/scripts/genesis-state/deployGenesiState.ts b/scripts/genesis-state/deployReadonlyState.ts similarity index 92% rename from scripts/genesis-state/deployGenesiState.ts rename to scripts/genesis-state/deployReadonlyState.ts index ea31cc2..bc8032e 100644 --- a/scripts/genesis-state/deployGenesiState.ts +++ b/scripts/genesis-state/deployReadonlyState.ts @@ -8,7 +8,7 @@ async function main() { const deployHelper = await StateDeployHelper.initialize(null, true); const { state, verifier, stateLib, smtLib, poseidon1, poseidon2, poseidon3 } = - await deployHelper.deployState('VerifierStateTransition', 'GenesisState'); + await deployHelper.deployState('VerifierStateTransition', 'ReadonlyState'); const outputJson = { state: await state.getAddress(), From bb399fbdf2a7e2146e2c6be4bcf1c343c9dd04d9 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 18:40:46 +0300 Subject: [PATCH 34/49] clear comments --- contracts/examples/ReadonlyState.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/examples/ReadonlyState.sol b/contracts/examples/ReadonlyState.sol index a20ae92..3fd76a9 100644 --- a/contracts/examples/ReadonlyState.sol +++ b/contracts/examples/ReadonlyState.sol @@ -224,7 +224,7 @@ contract ReadonlyState is Ownable2StepUpgradeable, IState { * @param state A state. * @return The state info. */ - function getStateInfoByIdAndState( // works with 0 root + function getStateInfoByIdAndState( uint256 id, uint256 state ) external view returns (IState.StateInfo memory) { @@ -247,7 +247,7 @@ contract ReadonlyState is Ownable2StepUpgradeable, IState { * @param root GIST root * @return The GIST inclusion or non-inclusion proof for the identity */ - function getGISTProofByRoot( // works with 0 root + function getGISTProofByRoot( uint256 id, uint256 root ) external view returns (IState.GistProof memory) { From 430e2045656acc2931cf94cbf28f0dcd81b1c2df Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 12 Jun 2024 19:28:54 +0300 Subject: [PATCH 35/49] deploy artifacts after review --- .openzeppelin/unknown-59141.json | 1266 +++++++++++++++++ scripts/deployV3Validator.ts | 2 +- scripts/deploy_validator_output.json | 7 + scripts/genesis-state/Readme.md | 62 +- .../deployIdentityTreeStorage.ts | 2 +- scripts/genesis-state/deployReadonlyState.ts | 2 +- .../deploy_genesis_state_output.json | 10 - .../deploy_readonly_state_output.json | 10 + scripts/verax/create-default-portal.ts | 4 +- scripts/verax/deploy-module.ts | 2 +- scripts/verax/get-attestation.ts | 2 +- .../verax/setPortalInfo-AnimaProofOfLife.ts | 4 +- .../setPortalInfo-AnimaProofOfUniqueness.ts | 4 +- ...ests-v3validator-verax-AnimaProofOfLife.ts | 4 +- ...3validator-verax-AnimaProofOfUniqueness.ts | 4 +- 15 files changed, 1329 insertions(+), 56 deletions(-) create mode 100644 .openzeppelin/unknown-59141.json create mode 100644 scripts/deploy_validator_output.json delete mode 100644 scripts/genesis-state/deploy_genesis_state_output.json create mode 100644 scripts/genesis-state/deploy_readonly_state_output.json diff --git a/.openzeppelin/unknown-59141.json b/.openzeppelin/unknown-59141.json new file mode 100644 index 0000000..f1fd1f8 --- /dev/null +++ b/.openzeppelin/unknown-59141.json @@ -0,0 +1,1266 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0xDc4E2e08CbCaDe2976b6f2c3ba76A6b254239DB1", + "txHash": "0x2fdf3a5d1a0d45c21f9f093b73e1bb767e899f05a422b82ddfbfa1531dda71e9", + "kind": "transparent" + }, + { + "address": "0xD8869a439a07Edcc990F8f21E638702ee9273293", + "txHash": "0x8509cdda0965757433958f73faf9cd1aeece4215ce111d19b28ed3d89fe8b737", + "kind": "transparent" + }, + { + "address": "0x0727E37edE02f37bf789C7b71a4A90806267726f", + "txHash": "0xbfcca3ffcd37f4909de382d104fbdc39113875301dc0360a7b317ca87f00fcd4", + "kind": "transparent" + }, + { + "address": "0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5", + "txHash": "0x44daf6f554a647ca579d9cdcead26facf6d27c91550854f77accb6900f4f65b9", + "kind": "transparent" + }, + { + "address": "0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b", + "txHash": "0x89eab71aaf5677111a5c887b880f5e53abf0fa0f26079003a0e7e89215de28e1", + "kind": "transparent" + } + ], + "impls": { + "4a9a93ba9220d01d461738e04fc613d6d62d41beb12df636717a8234eb8449d0": { + "address": "0x96890e9b215D1E84C9a29538FeB8e58F43AB8DAE", + "txHash": "0xc0fd0575a1322f68000b26566739f05a232773b723e45c0bbf1a43f0e571aa3f", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "__gap", + "offset": 0, + "slot": "0", + "type": "t_array(t_uint256)651_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:27" + }, + { + "label": "verifier", + "offset": 0, + "slot": "651", + "type": "t_contract(IStateTransitionVerifier)176", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:32" + }, + { + "label": "_stateData", + "offset": 0, + "slot": "652", + "type": "t_struct(Data)2900_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:37" + }, + { + "label": "_gistData", + "offset": 0, + "slot": "702", + "type": "t_struct(Data)1172_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:42" + }, + { + "label": "_defaultIdType", + "offset": 0, + "slot": "752", + "type": "t_bytes2", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:47" + }, + { + "label": "_defaultIdTypeInitialized", + "offset": 2, + "slot": "752", + "type": "t_bool", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:52" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)591_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)498_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)540_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_struct(Entry)2881_storage)dyn_storage": { + "label": "struct StateLib.Entry[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(RootEntry)1199_storage)dyn_storage": { + "label": "struct SmtLib.RootEntry[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)651_storage": { + "label": "uint256[651]", + "numberOfBytes": "20832" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bytes2": { + "label": "bytes2", + "numberOfBytes": "2" + }, + "t_contract(IStateTransitionVerifier)176": { + "label": "contract IStateTransitionVerifier", + "numberOfBytes": "20" + }, + "t_enum(NodeType)1148": { + "label": "enum SmtLib.NodeType", + "members": [ + "EMPTY", + "LEAF", + "MIDDLE" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_array(t_struct(Entry)2881_storage)dyn_storage)": { + "label": "mapping(uint256 => struct StateLib.Entry[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)": { + "label": "mapping(uint256 => uint256[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))": { + "label": "mapping(uint256 => mapping(uint256 => uint256[]))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Node)1226_storage)": { + "label": "mapping(uint256 => struct SmtLib.Node)", + "numberOfBytes": "32" + }, + "t_struct(Data)1172_storage": { + "label": "struct SmtLib.Data", + "members": [ + { + "label": "nodes", + "type": "t_mapping(t_uint256,t_struct(Node)1226_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "rootEntries", + "type": "t_array(t_struct(RootEntry)1199_storage)dyn_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "rootIndexes", + "type": "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)", + "offset": 0, + "slot": "2" + }, + { + "label": "maxDepth", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "initialized", + "type": "t_bool", + "offset": 0, + "slot": "4" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)45_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Data)2900_storage": { + "label": "struct StateLib.Data", + "members": [ + { + "label": "stateEntries", + "type": "t_mapping(t_uint256,t_array(t_struct(Entry)2881_storage)dyn_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "stateIndexes", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))", + "offset": 0, + "slot": "1" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)48_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Entry)2881_storage": { + "label": "struct StateLib.Entry", + "members": [ + { + "label": "state", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "timestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "block", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Node)1226_storage": { + "label": "struct SmtLib.Node", + "members": [ + { + "label": "nodeType", + "type": "t_enum(NodeType)1148", + "offset": 0, + "slot": "0" + }, + { + "label": "childLeft", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "childRight", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "index", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "value", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(RootEntry)1199_storage": { + "label": "struct SmtLib.RootEntry", + "members": [ + { + "label": "root", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "createdAtTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "createdAtBlock", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "7c88c0eb1b8661f731cf618ab4bfdbb4d776d79de792923d13646a05c4a90c51": { + "address": "0x0C0576A734c34E15aBb7bCfC5669ABD2052a44DB", + "txHash": "0xa360c62859eb0c678213bfaceee2f85044aafd36b939867dd4092c6e574ec2ac", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "__gap", + "offset": 0, + "slot": "0", + "type": "t_array(t_uint256)651_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:27" + }, + { + "label": "verifier", + "offset": 0, + "slot": "651", + "type": "t_contract(IStateTransitionVerifier)176", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:32" + }, + { + "label": "_stateData", + "offset": 0, + "slot": "652", + "type": "t_struct(Data)2900_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:37" + }, + { + "label": "_gistData", + "offset": 0, + "slot": "702", + "type": "t_struct(Data)1172_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:42" + }, + { + "label": "_defaultIdType", + "offset": 0, + "slot": "752", + "type": "t_bytes2", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:47" + }, + { + "label": "_defaultIdTypeInitialized", + "offset": 2, + "slot": "752", + "type": "t_bool", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:52" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)591_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)498_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)540_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_struct(Entry)2881_storage)dyn_storage": { + "label": "struct StateLib.Entry[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(RootEntry)1199_storage)dyn_storage": { + "label": "struct SmtLib.RootEntry[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)651_storage": { + "label": "uint256[651]", + "numberOfBytes": "20832" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bytes2": { + "label": "bytes2", + "numberOfBytes": "2" + }, + "t_contract(IStateTransitionVerifier)176": { + "label": "contract IStateTransitionVerifier", + "numberOfBytes": "20" + }, + "t_enum(NodeType)1148": { + "label": "enum SmtLib.NodeType", + "members": [ + "EMPTY", + "LEAF", + "MIDDLE" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_array(t_struct(Entry)2881_storage)dyn_storage)": { + "label": "mapping(uint256 => struct StateLib.Entry[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)": { + "label": "mapping(uint256 => uint256[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))": { + "label": "mapping(uint256 => mapping(uint256 => uint256[]))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Node)1226_storage)": { + "label": "mapping(uint256 => struct SmtLib.Node)", + "numberOfBytes": "32" + }, + "t_struct(Data)1172_storage": { + "label": "struct SmtLib.Data", + "members": [ + { + "label": "nodes", + "type": "t_mapping(t_uint256,t_struct(Node)1226_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "rootEntries", + "type": "t_array(t_struct(RootEntry)1199_storage)dyn_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "rootIndexes", + "type": "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)", + "offset": 0, + "slot": "2" + }, + { + "label": "maxDepth", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "initialized", + "type": "t_bool", + "offset": 0, + "slot": "4" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)45_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Data)2900_storage": { + "label": "struct StateLib.Data", + "members": [ + { + "label": "stateEntries", + "type": "t_mapping(t_uint256,t_array(t_struct(Entry)2881_storage)dyn_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "stateIndexes", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))", + "offset": 0, + "slot": "1" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)48_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Entry)2881_storage": { + "label": "struct StateLib.Entry", + "members": [ + { + "label": "state", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "timestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "block", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Node)1226_storage": { + "label": "struct SmtLib.Node", + "members": [ + { + "label": "nodeType", + "type": "t_enum(NodeType)1148", + "offset": 0, + "slot": "0" + }, + { + "label": "childLeft", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "childRight", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "index", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "value", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(RootEntry)1199_storage": { + "label": "struct SmtLib.RootEntry", + "members": [ + { + "label": "root", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "createdAtTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "createdAtBlock", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "134ea58caf6ca57c3bc6034a6e67d17f52f6ed0b89b820cd95d6edfc064f30ae": { + "address": "0x51fD42E38D89193761ff43063710B269B782Ec19", + "txHash": "0x103a8a1c21f410f1cf1dec871d828613e76568b63b808869bd6d55f39ae36683", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IState)287": { + "label": "contract IState", + "numberOfBytes": "20" + }, + "t_struct(IdentityTreeStoreMainStorage)48_storage": { + "label": "struct IdentityTreeStore.IdentityTreeStoreMainStorage", + "members": [ + { + "label": "_state", + "type": "t_contract(IState)287", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:iden3.storage.IdentityTreeStore.Main": [ + { + "contract": "IdentityTreeStore", + "label": "_state", + "type": "t_contract(IState)287", + "src": "@iden3/contracts/identitytreestore/IdentityTreeStore.sol:50", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "a4dcfd1c9a01be65565803e48f8b5471cebc94dbc0cbee7354ce5eb8a4a90fbe": { + "address": "0xc9e01aAed88635DE43bCC44371C23Dae25531Ee8", + "txHash": "0x5d850ebe915e8e44364a15e1863b5c40cd8905cb290184525bc38446d5268202", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "85f396390f982af38d33aba136893fb7c2fd657a5dd8e1c240957ac1238602fe": { + "address": "0xbD8Db53645a93A62d5ca30d62B8014Cf009ea4f6", + "txHash": "0xbd3ea95187217f6d19950bb0850b0098b8518087505117b8c0352a28d9bf0506", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)96": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)3796": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)3814": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)3823_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)2387_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)3823_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)3796", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)3814", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)2387_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)3830_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3823_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)309_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)96", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)2404_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3823_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:33", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + } + } +} diff --git a/scripts/deployV3Validator.ts b/scripts/deployV3Validator.ts index b27c7d5..dbe3146 100644 --- a/scripts/deployV3Validator.ts +++ b/scripts/deployV3Validator.ts @@ -7,7 +7,7 @@ async function main() { // const stateAddress = '0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D'; // current iden3 state smart contract on main // const stateAddress = '0x134b1be34911e39a8397ec6289782989729807a4'; // current iden3 state smart contract on mumbai // const stateAddress = '0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124'; // current iden3 state smart contract on amoy testnet - const stateAddress = '0x9c905B15D6EAd043cfce50Bb93eeF36279153d03'; // curren iden3 genesis only state smart contract on linea sepolia + const stateAddress = '0xD8869a439a07Edcc990F8f21E638702ee9273293'; // curren iden3 readonly only state smart contract on linea sepolia const verifierContractWrapperName = 'VerifierV3Wrapper'; const validatorContractName = 'CredentialAtomicQueryV3Validator'; diff --git a/scripts/deploy_validator_output.json b/scripts/deploy_validator_output.json new file mode 100644 index 0000000..811ad26 --- /dev/null +++ b/scripts/deploy_validator_output.json @@ -0,0 +1,7 @@ +{ + "verifierContractWrapperName": "VerifierV3Wrapper", + "validatorContractName": "CredentialAtomicQueryV3Validator", + "validator": "0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5", + "verifier": "0xeb34EDF18b3208aFF08E1426Da822f0cAF73d5f3", + "network": "sepolia" +} \ No newline at end of file diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index 3043d0f..966e55f 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -1,45 +1,43 @@ -1. npx hardhat run scripts/genesis-state/deployGenesiState.ts --network sepolia -https://sepolia.lineascan.build/address/0xf941A245136A1Ada6557284F87C3d91711BB020D#code - +1. npx hardhat run scripts/genesis-state/deployReadonlyState.ts --network sepolia +https://sepolia.lineascan.build/address/0x0C0576A734c34E15aBb7bCfC5669ABD2052a44DB#code - implementation { - "state": "0x9c905B15D6EAd043cfce50Bb93eeF36279153d03", - // 0xf941A245136A1Ada6557284F87C3d91711BB020D - implementation - "verifier": "0xECc5C3c591Fee9150F6f3FC96AEEf02fe7E27a51", - "stateLib": "0x723bA76845aC96955657b3c8d76292cBc72B5f0A", - "smtLib": "0xc3Af1587389691373f5dAbE27109c938576607e6", - "poseidon1": "0x3262eeEcbcA5C29650C385D6DB0c0146Bc7c0273", - "poseidon2": "0x03F534D2d2874B195b6D289c8aD5B73eba33BDf5", - "poseidon3": "0x15cb0E1b7018D3c461A3715FAB9beB8C4c93B228", + "state": "0xD8869a439a07Edcc990F8f21E638702ee9273293", + "verifier": "0xf418D0aecF3153cbAabD6d7EE25F72003283104e", + "stateLib": "0x2966196793c38AB1ED07a07671006A36E254F3AC", + "smtLib": "0x05FB9f1410D380Ab98203F807267617BA3f3372d", + "poseidon1": "0x78B3fd7173D7a4Bf98210c447bD4b8F0928F5943", + "poseidon2": "0xB2CF3724D501F1584E429f3B3E1f3b11bfc2A150", + "poseidon3": "0x2dbDe11085987AD9279E08574dbbE5a00657655b", "network": "sepolia" } 2. npx hardhat run scripts/genesis-state/deployIdentityTreeStorage.ts --network sepolia -IdentityTreeStore deployed to: 0x483340bf249D3bFeF5333e7AE0058B0D2931A711 +IdentityTreeStore deployed to: 0x0727E37edE02f37bf789C7b71a4A90806267726f -3. npx hardhat run scripts/deployV3Validator.ts --network sepolia +3. npx hardhat run scripts/deployV3Validator.ts --network sepolia -VerifierV3Wrapper deployed to: 0x312e0DE00B35CF1cE948F722F8A2f16c465A942b -CredentialAtomicQueryV3Validator deployed to: 0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2 -(look into "no-transition" state contract - 0x9c905B15D6EAd043cfce50Bb93eeF36279153d03) +VerifierV3Wrapper deployed to: 0xeb34EDF18b3208aFF08E1426Da822f0cAF73d5f3 +CredentialAtomicQueryV3Validator deployed to: 0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5 +(look into "no-transition" state contract - 0xD8869a439a07Edcc990F8f21E638702ee9273293) 3. Verax flow: -VeraxZKPVerifier deployed to: 0x975218461843300C46683e2F16B5FA781E7ef97f +VeraxZKPVerifier deployed to: 0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b POL: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts --network sepolia * -did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c -575757 +did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v +11000001 -did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer -did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c - verifier -100001 - requestId/nullifier +did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer +did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier +100001 -ZKPVerifyModulePoL deployed to: 0xBe08e0B599ccCBc59214ee651fc1805ef96349d9 -ZKPVerifyModulePoL portal 0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F +ZKPVerifyModulePoL deployed to: 0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54 +ZKPVerifyModulePoL portal 0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfLife.ts --network sepolia @@ -47,14 +45,16 @@ POU: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts --network sepolia * -did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c -454545454 +did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v +2200002 + + +did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer +did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier +100002 -did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer -did:iden3:linea:sepolia:28itzVLBHnMJWgJypKwVSjmZgkTHhxppbfk1s6EU1c - verifier -100002 - requestId/nullifier -ZKPVerifyModulePoU deployed to: 0x4CB60066E9db643F244a04216BDEBC103D76A595 -ZKPVerifyModulePoU portal : 0x52dEA76F098a5897757F49f639f93A39fC435AE2 +ZKPVerifyModulePoU deployed to: 0x2AFe076aFf86551eCAd5e48c2fb0E7F7324E04f3 +ZKPVerifyModulePoU portal : 0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27 npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts --network sepolia \ No newline at end of file diff --git a/scripts/genesis-state/deployIdentityTreeStorage.ts b/scripts/genesis-state/deployIdentityTreeStorage.ts index 1f89615..fe66284 100644 --- a/scripts/genesis-state/deployIdentityTreeStorage.ts +++ b/scripts/genesis-state/deployIdentityTreeStorage.ts @@ -4,7 +4,7 @@ async function main() { const deployHelper = await StateDeployHelper.initialize(null, true); const { identityTreeStore} = - await deployHelper.deployIdentityTreeStore('0x9c905B15D6EAd043cfce50Bb93eeF36279153d03'); + await deployHelper.deployIdentityTreeStore('0xD8869a439a07Edcc990F8f21E638702ee9273293'); } diff --git a/scripts/genesis-state/deployReadonlyState.ts b/scripts/genesis-state/deployReadonlyState.ts index bc8032e..c713b37 100644 --- a/scripts/genesis-state/deployReadonlyState.ts +++ b/scripts/genesis-state/deployReadonlyState.ts @@ -2,7 +2,7 @@ import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; import fs from "fs"; import path from "path"; -const pathOutputJson = path.join(__dirname, "./deploy_genesis_state_output.json"); +const pathOutputJson = path.join(__dirname, "./deploy_readonly_state_output.json"); async function main() { const deployHelper = await StateDeployHelper.initialize(null, true); diff --git a/scripts/genesis-state/deploy_genesis_state_output.json b/scripts/genesis-state/deploy_genesis_state_output.json deleted file mode 100644 index 8097742..0000000 --- a/scripts/genesis-state/deploy_genesis_state_output.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "state": "0x9c905B15D6EAd043cfce50Bb93eeF36279153d03", // 0xf941A245136A1Ada6557284F87C3d91711BB020D - implementation - "verifier": "0xECc5C3c591Fee9150F6f3FC96AEEf02fe7E27a51", - "stateLib": "0x723bA76845aC96955657b3c8d76292cBc72B5f0A", - "smtLib": "0xc3Af1587389691373f5dAbE27109c938576607e6", - "poseidon1": "0x3262eeEcbcA5C29650C385D6DB0c0146Bc7c0273", - "poseidon2": "0x03F534D2d2874B195b6D289c8aD5B73eba33BDf5", - "poseidon3": "0x15cb0E1b7018D3c461A3715FAB9beB8C4c93B228", - "network": "sepolia" -} \ No newline at end of file diff --git a/scripts/genesis-state/deploy_readonly_state_output.json b/scripts/genesis-state/deploy_readonly_state_output.json new file mode 100644 index 0000000..09f5b62 --- /dev/null +++ b/scripts/genesis-state/deploy_readonly_state_output.json @@ -0,0 +1,10 @@ +{ + "state": "0xD8869a439a07Edcc990F8f21E638702ee9273293", + "verifier": "0xf418D0aecF3153cbAabD6d7EE25F72003283104e", + "stateLib": "0x2966196793c38AB1ED07a07671006A36E254F3AC", + "smtLib": "0x05FB9f1410D380Ab98203F807267617BA3f3372d", + "poseidon1": "0x78B3fd7173D7a4Bf98210c447bD4b8F0928F5943", + "poseidon2": "0xB2CF3724D501F1584E429f3B3E1f3b11bfc2A150", + "poseidon3": "0x2dbDe11085987AD9279E08574dbbE5a00657655b", + "network": "sepolia" +} \ No newline at end of file diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 7dda96e..0953cf0 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -5,9 +5,9 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const moduleAddress = '0x4CB60066E9db643F244a04216BDEBC103D76A595'; + const moduleAddress = '0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54'; const tx = await veraxSdk.portal.deployDefaultPortal( - [moduleAddress], "ZKPVerifyModulePoU portal", "This Portal is used as an example for ZKPVerifyModulePoU contract", false, "Iden3", true); + [moduleAddress], "ZKPVerifyModulePoL portal", "This Portal is used as an example for ZKPVerifyModulePoL contract", false, "Iden3", true); console.log(tx); } diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index ff44e1e..50c2f86 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -2,7 +2,7 @@ import { ethers } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { - const VeraxZKPVerifier = '0x975218461843300C46683e2F16B5FA781E7ef97f'; + const VeraxZKPVerifier = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; const moduleName = 'ZKPVerifyModulePoU'; const ZKPVerifyModuleFactory = await ethers.getContractFactory(moduleName); diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index f50264d..622dc56 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -6,7 +6,7 @@ const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000135'; + const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000137'; const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; console.log(attestation); diff --git a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts index 47ca657..0ee360c 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; + const veraxVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); @@ -11,7 +11,7 @@ async function main() { const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; const schemaType = 1; // PoL - const portalAddress = '0xe4Dd9A4FE93cd486e7A2b5a83461896eF5c4F01F'; + const portalAddress = '0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a'; const tx = await verax.setPortalInfo( requestId, portalAddress, diff --git a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts index 65b3eb0..abcef7c 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts @@ -1,7 +1,7 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; + const veraxVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); @@ -11,7 +11,7 @@ async function main() { const schemaId = '0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6'; const schemaType = 0; // PoU - const portalAddress = '0x52dEA76F098a5897757F49f639f93A39fC435AE2'; + const portalAddress = '0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27'; const tx = await verax.setPortalInfo( requestId, portalAddress, diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 187b92c..8666d33 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -36,8 +36,8 @@ export const QueryOperators = { }; async function main() { - const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; // verax validator + const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5'; + const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index 488747d..ff320d5 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -37,8 +37,8 @@ export const QueryOperators = { }; async function main() { - const validatorAddressV3 = '0x03e26bf5B8Aa3287a6D229B524f9F444151a44B2'; - const veraxZKPVerifierAddress = '0x975218461843300C46683e2F16B5FA781E7ef97f'; // verax validator + const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5'; + const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai From b0cdf3e62c842dee742291bf6e2efe1c2512217a Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 13 Jun 2024 12:51:27 +0300 Subject: [PATCH 36/49] add verifications --- scripts/deployV3Validator.ts | 12 +++++++++++- scripts/verax/deploy-module.ts | 7 ++++++- scripts/verax/deployVeraxZKPVerifier.ts | 7 ++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/scripts/deployV3Validator.ts b/scripts/deployV3Validator.ts index dbe3146..803e695 100644 --- a/scripts/deployV3Validator.ts +++ b/scripts/deployV3Validator.ts @@ -1,4 +1,4 @@ -import { ethers, upgrades } from 'hardhat'; +import { ethers, run, upgrades } from 'hardhat'; import fs from 'fs'; import path from 'path'; const pathOutputJson = path.join(__dirname, './deploy_validator_output.json'); @@ -17,6 +17,11 @@ async function main() { await verifierWrapper.waitForDeployment(); console.log(verifierContractWrapperName, ' deployed to:', await verifierWrapper.getAddress()); + await run("verify:verify", { + address: await verifierWrapper.getAddress(), + constructorArguments: [], + }); + const CredentialAtomicQueryValidator = await ethers.getContractFactory(validatorContractName); const CredentialAtomicQueryValidatorProxy = await upgrades.deployProxy( @@ -31,6 +36,11 @@ async function main() { await CredentialAtomicQueryValidatorProxy.getAddress() ); + await run("verify:verify", { + address: await CredentialAtomicQueryValidatorProxy.getAddress(), + constructorArguments: [], + }); + const outputJson = { verifierContractWrapperName, validatorContractName, diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index 50c2f86..eb08d47 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -1,4 +1,4 @@ -import { ethers } from 'hardhat'; +import { ethers, run } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { @@ -10,6 +10,11 @@ async function main() { await ZKPVerifyModule.waitForDeployment(); console.log(moduleName, " deployed to:", await ZKPVerifyModule.getAddress()); + await run("verify:verify", { + address: await ZKPVerifyModule.getAddress(), + constructorArguments: [], + }); + // register module const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; diff --git a/scripts/verax/deployVeraxZKPVerifier.ts b/scripts/verax/deployVeraxZKPVerifier.ts index 5e3aaca..9bfe794 100644 --- a/scripts/verax/deployVeraxZKPVerifier.ts +++ b/scripts/verax/deployVeraxZKPVerifier.ts @@ -1,4 +1,4 @@ -import { ethers, upgrades } from 'hardhat'; +import { ethers, run, upgrades } from 'hardhat'; async function main() { const contractName = 'VeraxZKPVerifier'; @@ -7,6 +7,11 @@ async function main() { await erc20instance.waitForDeployment(); console.log(contractName, ' deployed to:', await erc20instance.getAddress()); + + await run("verify:verify", { + address: await erc20instance.getAddress(), + constructorArguments: [], + }); } main() From c35f0d621184f49dbef640bffb27fdc7f1f8c4b7 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 13 Jun 2024 15:03:45 +0300 Subject: [PATCH 37/49] fix verify constructor args --- scripts/genesis-state/Readme.md | 8 ++++++++ scripts/verax/deploy-module.ts | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index 966e55f..0ec1456 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -36,6 +36,14 @@ did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier 100001 +w/o uniquness +ZKPVerifyModulePoL deployed to: 0x559Dd0eB3148f77349deae0aEAaEC4f3eD9e36E9 +portal: 0x57e8e6491093A9032e7d0e8Af52d49D40F89d5ca + +did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer +did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier +8575753243 + ZKPVerifyModulePoL deployed to: 0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54 ZKPVerifyModulePoL portal 0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index eb08d47..081549f 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -4,7 +4,7 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { const VeraxZKPVerifier = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; - const moduleName = 'ZKPVerifyModulePoU'; + const moduleName = 'ZKPVerifyModulePoL'; const ZKPVerifyModuleFactory = await ethers.getContractFactory(moduleName); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); await ZKPVerifyModule.waitForDeployment(); @@ -12,7 +12,7 @@ async function main() { await run("verify:verify", { address: await ZKPVerifyModule.getAddress(), - constructorArguments: [], + constructorArguments: [VeraxZKPVerifier], }); // register module From 1b5339755d3c75f060cb7b53d593a50d3ef515fe Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 13 Jun 2024 15:12:50 +0300 Subject: [PATCH 38/49] add linea config --- hardhat.config.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index cf19466..ea64540 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -37,11 +37,16 @@ const config: HardhatUserConfig = { // url: `${process.env.AMOY_RPC_URL}`, // accounts: [`0x${process.env.AMOY_PRIVATE_KEY}`] // }, - sepolia: { - chainId: 59141, - url: `${process.env.SEPOLIA_RPC_URL}`, - accounts: [`0x${process.env.SEPOLIA_PRIVATE_KEY}`] - }, + // linea: { + // chainId: 59144, + // url: `${process.env.LINEA_RPC_URL}`, + // accounts: [`0x${process.env.LINEA_PRIVATE_KEY}`] + // }, + // sepolia: { + // chainId: 59141, + // url: `${process.env.SEPOLIA_RPC_URL}`, + // accounts: [`0x${process.env.SEPOLIA_PRIVATE_KEY}`] + // }, localhost: { url: 'http://127.0.0.1:8545', accounts: { From 8186a7071c3ac9dece2795b30e13f225033bc17e Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 13 Jun 2024 15:25:22 +0300 Subject: [PATCH 39/49] add defoult id type to linea --- test/helpers/ChainIdDefTypeMap.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/helpers/ChainIdDefTypeMap.ts b/test/helpers/ChainIdDefTypeMap.ts index f38dd33..52a31fc 100644 --- a/test/helpers/ChainIdDefTypeMap.ts +++ b/test/helpers/ChainIdDefTypeMap.ts @@ -4,4 +4,5 @@ export const chainIdDefaultIdTypeMap = new Map() .set(1101, '0x0231') // zkEVM .set(1442, '0x0232') // zkEVM testnet .set(137, '0x0211') // polygon main - .set(59141, "0x0148"); // linea-sepolia + .set(59141, "0x0148") // linea-sepolia: iden3 0b0100_0000 | 0b0000_1000 + .set(59144, "0x0149"); // linea: iden3 0b0100_0000 | 0b0000_1001 From 9f0419c24901ed26ba92a8c8190dcce452f3db58 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Thu, 13 Jun 2024 16:04:05 +0300 Subject: [PATCH 40/49] add msg.sender to ok event --- contracts/examples/verax/VeraxZKPVerifier.sol | 12 ++++-------- contracts/examples/verax/ZKPVerifyModulePoU.sol | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index 74249d0..f32a6d7 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -18,8 +18,7 @@ interface AttestationRegistry { } contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { - event AttestError(string message); - event AttestOk(string message); + event AttestOk(string message, address indexed sender); enum AttestationSchemaType { PoU, PoL } @@ -80,12 +79,9 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { bytes memory validationData = abi.encode(requestId, inputs, a, b, c); bytes[] memory validationPayload = new bytes[](1); validationPayload[0] = validationData; - try portalInfo.attestationPortalContract.attest(payload, validationPayload) { - emit AttestOk("attestation done"); - } catch { - emit AttestError("attestation error"); - require(false, "attestation err"); - } + portalInfo.attestationPortalContract.attest(payload, validationPayload) ; + emit AttestOk("attestation done", msg.sender); + } /// @dev Submits a ZKP response and updates proof status diff --git a/contracts/examples/verax/ZKPVerifyModulePoU.sol b/contracts/examples/verax/ZKPVerifyModulePoU.sol index ef71d21..97e5b6a 100644 --- a/contracts/examples/verax/ZKPVerifyModulePoU.sol +++ b/contracts/examples/verax/ZKPVerifyModulePoU.sol @@ -43,7 +43,7 @@ contract ZKPVerifyModulePoU is AbstractModule { if (prevAttestationData.sender != txSender) { revert("sender of the previous attestation for this nullifier doesn't match"); } - if (prevAttestationData.reputationLevel >= inputs[5]) { + if (prevAttestationData.reputationLevel >= inputs[request.validator.inputIndexOf('operatorOutput')]) { revert("reputation level not increased"); } } From 3d031b9cd08e9fe4a3cbbe349cb9257584d7640c Mon Sep 17 00:00:00 2001 From: vmidyllic <74898029+vmidyllic@users.noreply.github.com> Date: Thu, 13 Jun 2024 17:58:41 +0300 Subject: [PATCH 41/49] changes after deploy to main --- .openzeppelin/unknown-59144.json | 897 ++++++++++++++++++ hardhat.config.ts | 9 + scripts/deployV3Validator.ts | 2 +- scripts/deploy_validator_output.json | 6 +- scripts/genesis-state/Readme.md | 82 +- .../deployIdentityTreeStorage.ts | 2 +- .../deploy_readonly_state_output_main.json | 11 + scripts/verax/create-default-portal.ts | 6 +- scripts/verax/create-schema.ts | 10 +- scripts/verax/deploy-module.ts | 8 +- .../verax/setPortalInfo-AnimaProofOfLife.ts | 10 +- .../setPortalInfo-AnimaProofOfUniqueness.ts | 10 +- ...ests-v3validator-verax-AnimaProofOfLife.ts | 18 +- ...3validator-verax-AnimaProofOfUniqueness.ts | 18 +- 14 files changed, 1044 insertions(+), 45 deletions(-) create mode 100644 .openzeppelin/unknown-59144.json create mode 100644 scripts/genesis-state/deploy_readonly_state_output_main.json diff --git a/.openzeppelin/unknown-59144.json b/.openzeppelin/unknown-59144.json new file mode 100644 index 0000000..c0e6f7d --- /dev/null +++ b/.openzeppelin/unknown-59144.json @@ -0,0 +1,897 @@ +{ + "manifestVersion": "3.2", + "proxies": [ + { + "address": "0x742673Fc2108d526fc3494d3780141552B660cAB", + "txHash": "0xbcd206be959d0c069960689d63a94c4e9f60e33d34565133e0e87a86e5aeecbf", + "kind": "transparent" + }, + { + "address": "0x6f6E19781600d6B06D64A6b86431FB7dB3E919e0", + "txHash": "0xd78bb2ecc56136bdce60cf52ec59fcb31d3990291c556c74c965ed8561b2ffc3", + "kind": "transparent" + }, + { + "address": "0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b", + "txHash": "0xce0ec6d55cdec2bc6e1c44ed49274e50dc4fac04fcb3747bcf9f920a2177a2ac", + "kind": "transparent" + }, + { + "address": "0x07D5A8d32A3B42536c3019fD10F62A893aCc9021", + "txHash": "0xb2ffeaeb52b292bff56560a4f4f8d6a7915bee17be0a416dfe5f514c63051d51", + "kind": "transparent" + } + ], + "impls": { + "02372e3ed19399eefa40832968318d78a67b06fd256231d45b210b2c0b182ef2": { + "address": "0xD5059856ABcB962208C22A1d3B315914a9Ff7E2B", + "txHash": "0x772a3bd000b0a6fe044e0af6fba0755acf010d093036a05c582099651393839b", + "layout": { + "solcVersion": "0.8.20", + "storage": [ + { + "label": "__gap", + "offset": 0, + "slot": "0", + "type": "t_array(t_uint256)651_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:27" + }, + { + "label": "verifier", + "offset": 0, + "slot": "651", + "type": "t_contract(IStateTransitionVerifier)971", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:32" + }, + { + "label": "_stateData", + "offset": 0, + "slot": "652", + "type": "t_struct(Data)5788_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:37" + }, + { + "label": "_gistData", + "offset": 0, + "slot": "702", + "type": "t_struct(Data)4060_storage", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:42" + }, + { + "label": "_defaultIdType", + "offset": 0, + "slot": "752", + "type": "t_bytes2", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:47" + }, + { + "label": "_defaultIdTypeInitialized", + "offset": 2, + "slot": "752", + "type": "t_bool", + "contract": "ReadonlyState", + "src": "contracts/examples/ReadonlyState.sol:52" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + }, + "t_array(t_struct(Entry)5769_storage)dyn_storage": { + "label": "struct StateLib.Entry[]", + "numberOfBytes": "32" + }, + "t_array(t_struct(RootEntry)4087_storage)dyn_storage": { + "label": "struct SmtLib.RootEntry[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)45_storage": { + "label": "uint256[45]", + "numberOfBytes": "1440" + }, + "t_array(t_uint256)48_storage": { + "label": "uint256[48]", + "numberOfBytes": "1536" + }, + "t_array(t_uint256)651_storage": { + "label": "uint256[651]", + "numberOfBytes": "20832" + }, + "t_array(t_uint256)dyn_storage": { + "label": "uint256[]", + "numberOfBytes": "32" + }, + "t_bytes2": { + "label": "bytes2", + "numberOfBytes": "2" + }, + "t_contract(IStateTransitionVerifier)971": { + "label": "contract IStateTransitionVerifier", + "numberOfBytes": "20" + }, + "t_enum(NodeType)4036": { + "label": "enum SmtLib.NodeType", + "members": [ + "EMPTY", + "LEAF", + "MIDDLE" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_array(t_struct(Entry)5769_storage)dyn_storage)": { + "label": "mapping(uint256 => struct StateLib.Entry[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)": { + "label": "mapping(uint256 => uint256[])", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))": { + "label": "mapping(uint256 => mapping(uint256 => uint256[]))", + "numberOfBytes": "32" + }, + "t_mapping(t_uint256,t_struct(Node)4114_storage)": { + "label": "mapping(uint256 => struct SmtLib.Node)", + "numberOfBytes": "32" + }, + "t_struct(Data)4060_storage": { + "label": "struct SmtLib.Data", + "members": [ + { + "label": "nodes", + "type": "t_mapping(t_uint256,t_struct(Node)4114_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "rootEntries", + "type": "t_array(t_struct(RootEntry)4087_storage)dyn_storage", + "offset": 0, + "slot": "1" + }, + { + "label": "rootIndexes", + "type": "t_mapping(t_uint256,t_array(t_uint256)dyn_storage)", + "offset": 0, + "slot": "2" + }, + { + "label": "maxDepth", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "initialized", + "type": "t_bool", + "offset": 0, + "slot": "4" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)45_storage", + "offset": 0, + "slot": "5" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Data)5788_storage": { + "label": "struct StateLib.Data", + "members": [ + { + "label": "stateEntries", + "type": "t_mapping(t_uint256,t_array(t_struct(Entry)5769_storage)dyn_storage)", + "offset": 0, + "slot": "0" + }, + { + "label": "stateIndexes", + "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_array(t_uint256)dyn_storage))", + "offset": 0, + "slot": "1" + }, + { + "label": "__gap", + "type": "t_array(t_uint256)48_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "1600" + }, + "t_struct(Entry)5769_storage": { + "label": "struct StateLib.Entry", + "members": [ + { + "label": "state", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "timestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "block", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Node)4114_storage": { + "label": "struct SmtLib.Node", + "members": [ + { + "label": "nodeType", + "type": "t_enum(NodeType)4036", + "offset": 0, + "slot": "0" + }, + { + "label": "childLeft", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "childRight", + "type": "t_uint256", + "offset": 0, + "slot": "2" + }, + { + "label": "index", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "value", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(RootEntry)4087_storage": { + "label": "struct SmtLib.RootEntry", + "members": [ + { + "label": "root", + "type": "t_uint256", + "offset": 0, + "slot": "0" + }, + { + "label": "createdAtTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "1" + }, + { + "label": "createdAtBlock", + "type": "t_uint256", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "1b5d76363e58be5d496ce6ddf358646b968c880504eebcd3c91e4ef420f0b2f9": { + "address": "0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D", + "txHash": "0x2af375c72bd597e00c192530b9bfd4f1086c3f5c17aeccc45a3bf9a8513707a6", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IState)287": { + "label": "contract IState", + "numberOfBytes": "20" + }, + "t_struct(IdentityTreeStoreMainStorage)48_storage": { + "label": "struct IdentityTreeStore.IdentityTreeStoreMainStorage", + "members": [ + { + "label": "_state", + "type": "t_contract(IState)287", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:iden3.storage.IdentityTreeStore.Main": [ + { + "contract": "IdentityTreeStore", + "label": "_state", + "type": "t_contract(IState)287", + "src": "@iden3/contracts/identitytreestore/IdentityTreeStore.sol:50", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "a4dcfd1c9a01be65565803e48f8b5471cebc94dbc0cbee7354ce5eb8a4a90fbe": { + "address": "0x566D1cDB65520eB7Ae2A43a36843d76A3DC195f1", + "txHash": "0xa1fff8fff436fd7b9d372239479733fc991a2a3cc1ed52397bc64c80721e14aa", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "aebba297af1a566f59de4886db10a298dd474b60a7f6932246b437cc69c3374b": { + "address": "0x9DB901F3AFdAAA73F5B2123B186F566fA3Ed1551", + "txHash": "0x763413ffb252336dccfc1c69980c1242f5d67a7e05a7bf098249e37295165721", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)96": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)3796": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)3812": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)2387_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)3821_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)3796", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)3812", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)2387_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)3828_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)309_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)96", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)2404_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + } + } +} diff --git a/hardhat.config.ts b/hardhat.config.ts index ea64540..7ebbb2e 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -59,6 +59,7 @@ const config: HardhatUserConfig = { }, etherscan: { apiKey: { + 'linea': process.env.LINEA_API_KEY, 'linea-sepolia': process.env.LINEA_API_KEY, 'amoy': process.env.AMOY_API_KEY, }, @@ -80,6 +81,14 @@ const config: HardhatUserConfig = { browserURL: "https://sepolia.lineascan.build", }, }, + { + network: "linea", + chainId: 59144, + urls: { + apiURL: "https://api.lineascan.build/api", + browserURL: "https://lineascan.build", + }, + }, ] }, gasReporter: { diff --git a/scripts/deployV3Validator.ts b/scripts/deployV3Validator.ts index 803e695..cc09ed3 100644 --- a/scripts/deployV3Validator.ts +++ b/scripts/deployV3Validator.ts @@ -7,7 +7,7 @@ async function main() { // const stateAddress = '0x624ce98D2d27b20b8f8d521723Df8fC4db71D79D'; // current iden3 state smart contract on main // const stateAddress = '0x134b1be34911e39a8397ec6289782989729807a4'; // current iden3 state smart contract on mumbai // const stateAddress = '0x1a4cC30f2aA0377b0c3bc9848766D90cb4404124'; // current iden3 state smart contract on amoy testnet - const stateAddress = '0xD8869a439a07Edcc990F8f21E638702ee9273293'; // curren iden3 readonly only state smart contract on linea sepolia + const stateAddress = '0x742673Fc2108d526fc3494d3780141552B660cAB'; // curren iden3 readonly only state smart contract on linea sepolia const verifierContractWrapperName = 'VerifierV3Wrapper'; const validatorContractName = 'CredentialAtomicQueryV3Validator'; diff --git a/scripts/deploy_validator_output.json b/scripts/deploy_validator_output.json index 811ad26..d9ebe39 100644 --- a/scripts/deploy_validator_output.json +++ b/scripts/deploy_validator_output.json @@ -1,7 +1,7 @@ { "verifierContractWrapperName": "VerifierV3Wrapper", "validatorContractName": "CredentialAtomicQueryV3Validator", - "validator": "0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5", - "verifier": "0xeb34EDF18b3208aFF08E1426Da822f0cAF73d5f3", - "network": "sepolia" + "validator": "0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b", + "verifier": "0x4BE489Fd4Bd13C6b48Dd70f1523D8275b4Aa69be", + "network": "linea" } \ No newline at end of file diff --git a/scripts/genesis-state/Readme.md b/scripts/genesis-state/Readme.md index 0ec1456..8b9e97a 100644 --- a/scripts/genesis-state/Readme.md +++ b/scripts/genesis-state/Readme.md @@ -11,23 +11,51 @@ https://sepolia.lineascan.build/address/0x0C0576A734c34E15aBb7bCfC5669ABD2052a44 "network": "sepolia" } +{ + "state": "0x742673Fc2108d526fc3494d3780141552B660cAB", + "verifier": "0x1f10e4751180a0C31F840bbe80bE5117A03fb61B", + "stateLib": "0xaB3D12056e39D8347Df16a51F3A5dc978E9FbcA6", + "smtLib": "0x26d717A110C63bF8368Fa811888e9ac35a19530E", + "poseidon1": "0x59870f921945E031605EC3544EC3963201510ba7", + "poseidon2": "0xd726B7CFf1fE694D68B04808D59E0Fcf466917B9", + "poseidon3": "0x085d878a1Cf7A5905Aa0d82747136a57DE8409f5", + "poseidon4": "0xEccbd18FFC41671A19FBc40e7ea04C6003630705", + "network": "linea" +} + 2. npx hardhat run scripts/genesis-state/deployIdentityTreeStorage.ts --network sepolia -IdentityTreeStore deployed to: 0x0727E37edE02f37bf789C7b71a4A90806267726f +IdentityTreeStore deployed to: 0x0727E37edE02f37bf789C7b71a4A90806267726f sepolia +IdentityTreeStore deployed to: 0x6f6E19781600d6B06D64A6b86431FB7dB3E919e0 linea 3. npx hardhat run scripts/deployV3Validator.ts --network sepolia +sepolia + VerifierV3Wrapper deployed to: 0xeb34EDF18b3208aFF08E1426Da822f0cAF73d5f3 CredentialAtomicQueryV3Validator deployed to: 0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5 (look into "no-transition" state contract - 0xD8869a439a07Edcc990F8f21E638702ee9273293) -3. Verax flow: +linea + +VerifierV3Wrapper deployed to: 0x4BE489Fd4Bd13C6b48Dd70f1523D8275b4Aa69be +CredentialAtomicQueryV3Validator deployed to: 0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b -VeraxZKPVerifier deployed to: 0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b +3. Verax flow: +VeraxZKPVerifier deployed to: 0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b sepolia +VeraxZKPVerifier deployed to: 0x07D5A8d32A3B42536c3019fD10F62A893aCc9021 linea POL: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts --network sepolia +main: +15440111504995303282131413553872819257758117393758193881365814364675787009n +did:iden3:linea:main:28vX3frJDbAvKTmZBH1u45uomixVxDf3SPC24QgoQs +100001 +0x8ac9d6f7ecf3f7fdbacbbec9775e9c67ad9b7970b1d8af2c48eb016a4adc853b + + +sepolia: * did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v 11000001 @@ -36,6 +64,9 @@ did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier 100001 + + + w/o uniquness ZKPVerifyModulePoL deployed to: 0x559Dd0eB3148f77349deae0aEAaEC4f3eD9e36E9 portal: 0x57e8e6491093A9032e7d0e8Af52d49D40F89d5ca @@ -44,14 +75,23 @@ did:iden3:privado:main:2ScrbEuw9jLXMapW3DELXBbDco5EURzJZRN1tYj7L7 - issuer did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier 8575753243 -ZKPVerifyModulePoL deployed to: 0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54 -ZKPVerifyModulePoL portal 0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a +ZKPVerifyModulePoL deployed to: 0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54 sepolia +ZKPVerifyModulePoL portal 0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a sepolia + +ZKPVerifyModulePoL deployed to: 0x880Fe89dD5C59696c196B33F00FeE31f7b672209 main +portal pol 0x5C426a0387fAa8Bac13C371dF44494FBd19B141c main npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfLife.ts --network sepolia POU: npx hardhat run scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts --network sepolia +main: +15440111504995303282131413553872819257758117393758193881365814364675787009n +did:iden3:linea:main:28vX3frJDbAvKTmZBH1u45uomixVxDf3SPC24QgoQs +100002 +0x156fe3862c62adac4f074d393a9971d8e62abae87ef878e69f845a50e2081005 + * did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v 2200002 @@ -62,7 +102,33 @@ did:iden3:linea:sepolia:28itzVLBHnMJV8sdjyffcAtWCx8HZ7btdKXxs7fJ6v - verifier 100002 -ZKPVerifyModulePoU deployed to: 0x2AFe076aFf86551eCAd5e48c2fb0E7F7324E04f3 -ZKPVerifyModulePoU portal : 0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27 +ZKPVerifyModulePoU deployed to: 0x2AFe076aFf86551eCAd5e48c2fb0E7F7324E04f3 sepolia +ZKPVerifyModulePoU portal : 0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27 sepolia + + +ZKPVerifyModulePoU deployed to: 0xD1d3e0524E676afe079D0b2acE58ec7aB4ddE11f main +portal 0x3486d714C6e6F7257Fa7f0bB8396161150B9f100 main +npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts --network sepolia + + + +scheam PoU -npx hardhat run scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts --network sepolia \ No newline at end of file +{ + id: '0x021fa993b2ac55b95340608478282821b89398de6fa14073b4d44a3564a8c79d', + name: 'AnimaProofOfUniqueness', + description: 'Verification schema with reputation level, nullifier and zkp request id', + context: 'https://www.privado.id', + schema: '(uint64 requestId, uint256 nullifier, uint256 reputationLevel)' +} + + +PoL + +{ + id: '0xe3a3e680fe5fbfbddff981752989e660514e1fc49fdee922f26d345cc10b1be4', + name: 'AnimaProofOfLife', + description: 'Verification schema with nullifier and zkp request id', + context: 'https://www.privado.id', + schema: '(uint64 requestId, uint256 nullifier)' +} \ No newline at end of file diff --git a/scripts/genesis-state/deployIdentityTreeStorage.ts b/scripts/genesis-state/deployIdentityTreeStorage.ts index fe66284..278f8a0 100644 --- a/scripts/genesis-state/deployIdentityTreeStorage.ts +++ b/scripts/genesis-state/deployIdentityTreeStorage.ts @@ -4,7 +4,7 @@ async function main() { const deployHelper = await StateDeployHelper.initialize(null, true); const { identityTreeStore} = - await deployHelper.deployIdentityTreeStore('0xD8869a439a07Edcc990F8f21E638702ee9273293'); + await deployHelper.deployIdentityTreeStore('0x742673Fc2108d526fc3494d3780141552B660cAB'); } diff --git a/scripts/genesis-state/deploy_readonly_state_output_main.json b/scripts/genesis-state/deploy_readonly_state_output_main.json new file mode 100644 index 0000000..f6479ee --- /dev/null +++ b/scripts/genesis-state/deploy_readonly_state_output_main.json @@ -0,0 +1,11 @@ +{ + "state": "0x742673Fc2108d526fc3494d3780141552B660cAB", + "verifier": "0x1f10e4751180a0C31F840bbe80bE5117A03fb61B", + "stateLib": "0xaB3D12056e39D8347Df16a51F3A5dc978E9FbcA6", + "smtLib": "0x26d717A110C63bF8368Fa811888e9ac35a19530E", + "poseidon1": "0x59870f921945E031605EC3544EC3963201510ba7", + "poseidon2": "0xd726B7CFf1fE694D68B04808D59E0Fcf466917B9", + "poseidon3": "0x085d878a1Cf7A5905Aa0d82747136a57DE8409f5", + "poseidon4": "0xEccbd18FFC41671A19FBc40e7ea04C6003630705", + "network": "linea" +} \ No newline at end of file diff --git a/scripts/verax/create-default-portal.ts b/scripts/verax/create-default-portal.ts index 0953cf0..8fd40e3 100644 --- a/scripts/verax/create-default-portal.ts +++ b/scripts/verax/create-default-portal.ts @@ -4,10 +4,10 @@ const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { - const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const moduleAddress = '0x39e8a6af9D5d1D36c4E5BC2f1F43902a6F9A7C54'; + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_MAINNET, publicAddress, privateKey); + const moduleAddress = '0xD1d3e0524E676afe079D0b2acE58ec7aB4ddE11f'; const tx = await veraxSdk.portal.deployDefaultPortal( - [moduleAddress], "ZKPVerifyModulePoL portal", "This Portal is used as an example for ZKPVerifyModulePoL contract", false, "Iden3", true); + [moduleAddress], "ZKPVerifyModulePoU portal", "This Portal is used for attestations verified by ZKPVerifyModulePoU module", false, "PrivadoID", true); console.log(tx); } diff --git a/scripts/verax/create-schema.ts b/scripts/verax/create-schema.ts index f1b2673..0ede669 100644 --- a/scripts/verax/create-schema.ts +++ b/scripts/verax/create-schema.ts @@ -24,13 +24,13 @@ export const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; // 0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e - "(uint64 requestId, uint256 nullifierSessionID)" // 0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6 - "(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)" async function main() { - const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const schemaString = "(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)"; + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_MAINNET, publicAddress, privateKey); + const schemaString = "(uint64 requestId, uint256 nullifier)"; - // const schemaTx = await veraxSdk.schema.create("Verification schema with reputation level", - // "Verification schema with reputation level", "", schemaString, true); + const schemaTx = await veraxSdk.schema.create("AnimaProofOfLife", + "Verification schema with nullifier and zkp request id", "https://www.privado.id", schemaString, true); - // console.log(schemaTx); + console.log(schemaTx); const schemaId = await veraxSdk.schema.getIdFromSchemaString(schemaString); console.log(schemaId); diff --git a/scripts/verax/deploy-module.ts b/scripts/verax/deploy-module.ts index 081549f..7af657f 100644 --- a/scripts/verax/deploy-module.ts +++ b/scripts/verax/deploy-module.ts @@ -2,9 +2,9 @@ import { ethers, run } from 'hardhat'; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { - const VeraxZKPVerifier = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; + const VeraxZKPVerifier = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; - const moduleName = 'ZKPVerifyModulePoL'; + const moduleName = 'ZKPVerifyModulePoU'; const ZKPVerifyModuleFactory = await ethers.getContractFactory(moduleName); const ZKPVerifyModule = await ZKPVerifyModuleFactory.deploy(VeraxZKPVerifier); await ZKPVerifyModule.waitForDeployment(); @@ -18,11 +18,11 @@ async function main() { // register module const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; - const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_MAINNET, publicAddress, privateKey); const tx = await veraxSdk.module.register( moduleName, - "This Module is used as an example of " + moduleName, + "This Module is used to verify zkp by ZKPVerifyModulePoU verifier", (await ZKPVerifyModule.getAddress()) as `0x${string}`, true ); diff --git a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts index 0ee360c..f89c502 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfLife.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfLife.ts @@ -1,17 +1,21 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; + const veraxVerifierAddress = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); const requestId = 100001; - const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; + const schemaId = '0xe3a3e680fe5fbfbddff981752989e660514e1fc49fdee922f26d345cc10b1be4'; + // const schemaId = '0x59a0acecb3a782c9035cb1d0e8d5661f6848ebcb4d44c212c891d0fbc06c081e'; sepolia const schemaType = 1; // PoL - const portalAddress = '0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a'; + const portalAddress = '0x5C426a0387fAa8Bac13C371dF44494FBd19B141c'; + // const portalAddress = '0xE72bcb4f7065DB683BC16BEf9A01C059309DFe4a'; sepolia + + const tx = await verax.setPortalInfo( requestId, portalAddress, diff --git a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts index abcef7c..1950fde 100644 --- a/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setPortalInfo-AnimaProofOfUniqueness.ts @@ -1,17 +1,21 @@ import { ethers } from 'hardhat'; async function main() { - const veraxVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; + const veraxVerifierAddress = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; + // const veraxVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const verax = await veraxVerifierFactory.attach(veraxVerifierAddress); console.log(verax, ' attached to:', await verax.getAddress()); const requestId = 100002; - const schemaId = '0x2bc6511034614a23bcbdfaa8055005b5ff2e416032dad968313a1caa980538e6'; + const schemaId = '0x021fa993b2ac55b95340608478282821b89398de6fa14073b4d44a3564a8c79d'; const schemaType = 0; // PoU - const portalAddress = '0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27'; + const portalAddress = '0x3486d714C6e6F7257Fa7f0bB8396161150B9f100'; + + // const portalAddress = '0x5FfDa857bF7c63A70ac1ABAE67a3368f0eE7dC27'; + const tx = await verax.setPortalInfo( requestId, portalAddress, diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 8666d33..35a2d77 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -36,8 +36,12 @@ export const QueryOperators = { }; async function main() { - const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5'; - const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator + const validatorAddressV3 = '0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b'; + const veraxZKPVerifierAddress = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; // verax validator + + // const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5'; sepolia + // const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator sepolia + const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -61,16 +65,16 @@ async function main() { const merklized = 1; const groupID = 0; - const chainId = 59141; + const chainId = 59144; - const network = 'linea-sepolia'; + const network = 'linea-main'; registerDidMethodNetwork({ method: DidMethod.Iden3, blockchain: 'linea', - chainId: 59141, - network: 'sepolia', - networkFlag: 0b0100_0000 | 0b0000_1000 + chainId: chainId, + network: 'main', + networkFlag: 0b0100_0000 | 0b0000_1001 }); const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index ff320d5..2ff5593 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -37,8 +37,12 @@ export const QueryOperators = { }; async function main() { - const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5'; - const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator + + const validatorAddressV3 = '0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b'; + const veraxZKPVerifierAddress = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; // verax validator + + // const validatorAddressV3 = '0x266fe15bE3a1969496967aE44F0bAc3EFb7ca6f5';sepolia + // const veraxZKPVerifierAddress = '0x91a3a28B401adDeBcb5Cd0b1364474fF6255F00b'; // verax validator sepolia const veraxVerifierFactory = await ethers.getContractFactory('VeraxZKPVerifier'); const veraxVerifier = await veraxVerifierFactory.attach(veraxZKPVerifierAddress); // current mtp validator address on mumbai @@ -62,16 +66,16 @@ async function main() { const merklized = 1; const groupID = 0; - const chainId = 59141; + const chainId = 59144; - const network = 'linea-sepolia'; + const network = 'linea-main'; registerDidMethodNetwork({ method: DidMethod.Iden3, blockchain: 'linea', - chainId: 59141, - network: 'sepolia', - networkFlag: 0b0100_0000 | 0b0000_1000 + chainId: chainId, + network: 'main', + networkFlag: 0b0100_0000 | 0b0000_1001 }); const networkFlag = Object.keys(ChainIds).find((key) => ChainIds[key] === chainId); From 2f42747985be416f5c83a2aaf4414d4f5a29b076 Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 18 Jun 2024 21:04:52 +0300 Subject: [PATCH 42/49] add verifier upgrade --- .openzeppelin/unknown-59141.json | 320 +++++++++++++++++++++++ scripts/verax/upgradeVeraxZKPVerifier.ts | 23 ++ test/helpers/StateDeployHelper.ts | 27 ++ 3 files changed, 370 insertions(+) create mode 100644 scripts/verax/upgradeVeraxZKPVerifier.ts diff --git a/.openzeppelin/unknown-59141.json b/.openzeppelin/unknown-59141.json index f1fd1f8..ba053f1 100644 --- a/.openzeppelin/unknown-59141.json +++ b/.openzeppelin/unknown-59141.json @@ -1261,6 +1261,326 @@ ] } } + }, + "aebba297af1a566f59de4886db10a298dd474b60a7f6932246b437cc69c3374b": { + "address": "0x81848D5503Ca102D0CE4e45975C1666232781544", + "txHash": "0x1dea5e4924c2553196b724b942da0d9e2b68fa62d213212fc91e39e673d38121", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)15": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)355": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)371": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)380_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)90_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)274_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)181_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)223_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)380_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)355", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)371", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)90_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)387_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)380_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)27_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)15", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)107_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)380_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/scripts/verax/upgradeVeraxZKPVerifier.ts b/scripts/verax/upgradeVeraxZKPVerifier.ts new file mode 100644 index 0000000..4547038 --- /dev/null +++ b/scripts/verax/upgradeVeraxZKPVerifier.ts @@ -0,0 +1,23 @@ +import { ethers, run, upgrades } from 'hardhat'; +import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; + +async function main() { + const contractAddress = ''; + const contractName = 'VeraxZKPVerifier'; + + const stateDeployHelper = await StateDeployHelper.initialize(); + + const v = await stateDeployHelper.upgradeZkpVerifier( + contractAddress, + contractName + ); + console.log(contractName, 'verifier upgraded on ', await v.verifier.getAddress()); + +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/test/helpers/StateDeployHelper.ts b/test/helpers/StateDeployHelper.ts index 91e061f..af53c72 100644 --- a/test/helpers/StateDeployHelper.ts +++ b/test/helpers/StateDeployHelper.ts @@ -189,6 +189,33 @@ export class StateDeployHelper { }; } + async upgradeZkpVerifier( + contractAddress: string, + contractName: string + ): Promise<{ + verifier: Contract; + }> { + console.log('======== verifier: upgrade started ========'); + + const owner = this.signers[0]; + + const VerifierFactory = await ethers.getContractFactory(contractName); + const verifier = await upgrades.upgradeProxy(contractAddress, VerifierFactory); + await verifier.waitForDeployment(); + const s = await verifier.getZKPRequests(0, 4); + console.log('======== requests: ', s); + + console.log( + `Verifier contract upgraded at address ${await verifier.getAddress()} from ${await owner.getAddress()}` + ); + + console.log('======== verifier: upgrade completed ========'); + + return { + verifier + }; + } + async getDefaultIdType(): Promise<{ defaultIdType: number; chainId: number }> { const chainId = parseInt(await network.provider.send('eth_chainId'), 16); const defaultIdType = chainIdDefaultIdTypeMap.get(chainId); From 96b222d31f41916099aceae5d287beb5d4a4d24f Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Tue, 18 Jun 2024 21:36:20 +0300 Subject: [PATCH 43/49] fix attestation expiration --- .openzeppelin/unknown-59141.json | 320 ++++++++++++++++++ contracts/examples/verax/VeraxZKPVerifier.sol | 17 +- scripts/verax/upgradeVeraxZKPVerifier.ts | 1 - 3 files changed, 335 insertions(+), 3 deletions(-) diff --git a/.openzeppelin/unknown-59141.json b/.openzeppelin/unknown-59141.json index ba053f1..9358a02 100644 --- a/.openzeppelin/unknown-59141.json +++ b/.openzeppelin/unknown-59141.json @@ -1581,6 +1581,326 @@ ] } } + }, + "abdd25647f2bccd872f0f7edf77b262cb822dc1187e4f1c36b19eb6c8ea07412": { + "address": "0xe31A1236238014Ff17aa6299Af42DE055CAAb0E3", + "txHash": "0xb877b48e15e7f3bbba337beb8e322edae1204c4ae4738ee1299c2c9e4be3222b", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)15": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)348": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)364": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)90_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)274_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)181_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)223_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)373_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)348", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)364", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)90_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)380_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)27_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)15", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)107_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index f32a6d7..2f8cf83 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -36,6 +36,11 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { bytes32 private constant VeraxZKPVerifierStorageLocation = 0xf2a0fb5adce57cdd20ffa282dfdeffa5cf790754d88eeeedb507a130ec7f2900; + /** + * @dev Version of contract + */ + string public constant VERSION = "1.0.1"; + function _getVeraxZKPVerifierStorage() private pure returns (VeraxZKPVerifierStorage storage $) { assembly { $.slot := VeraxZKPVerifierStorageLocation @@ -65,14 +70,22 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { IZKPVerifier.ZKPRequest memory request = getZKPRequest(requestId); + uint64 attestationExpiration; if (portalInfo.schemaType == AttestationSchemaType.PoL) { + attestationExpiration = 30 days * 6; attestationPayload = abi.encode(requestId, inputs[request.validator.inputIndexOf('nullifier')]); } else { - attestationPayload = abi.encode(requestId, inputs[request.validator.inputIndexOf('nullifier')], inputs[request.validator.inputIndexOf('operatorOutput')]); + uint256 reputationLevel = inputs[request.validator.inputIndexOf('operatorOutput')]; + if (reputationLevel >= 2) { + attestationExpiration = 30 days * 6; + } else { + attestationExpiration = 2 weeks; + } + attestationPayload = abi.encode(requestId, inputs[request.validator.inputIndexOf('nullifier')], reputationLevel); } AttestationPayload memory payload = AttestationPayload( bytes32(portalInfo.schemaId), - uint64(inputs[request.validator.inputIndexOf('timestamp')]), // expiration + uint64(inputs[request.validator.inputIndexOf('timestamp')]) + attestationExpiration, // expiration abi.encode(msg.sender), // message sender attestationPayload ); diff --git a/scripts/verax/upgradeVeraxZKPVerifier.ts b/scripts/verax/upgradeVeraxZKPVerifier.ts index 4547038..d854b03 100644 --- a/scripts/verax/upgradeVeraxZKPVerifier.ts +++ b/scripts/verax/upgradeVeraxZKPVerifier.ts @@ -1,4 +1,3 @@ -import { ethers, run, upgrades } from 'hardhat'; import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; async function main() { From 0735dc09473d1d8156f06b7418ca60ad04461846 Mon Sep 17 00:00:00 2001 From: vmidyllic <74898029+vmidyllic@users.noreply.github.com> Date: Tue, 18 Jun 2024 21:50:59 +0300 Subject: [PATCH 44/49] artifacts --- .openzeppelin/unknown-59144.json | 320 +++++++++++++++++++++++++++++++ 1 file changed, 320 insertions(+) diff --git a/.openzeppelin/unknown-59144.json b/.openzeppelin/unknown-59144.json index c0e6f7d..99873e7 100644 --- a/.openzeppelin/unknown-59144.json +++ b/.openzeppelin/unknown-59144.json @@ -892,6 +892,326 @@ ] } } + }, + "abdd25647f2bccd872f0f7edf77b262cb822dc1187e4f1c36b19eb6c8ea07412": { + "address": "0x6495E29E58A7F1e6f3E84669aD3B63D691A8d7F1", + "txHash": "0x88c96cedba2a469e565a9b1f7438d223091ebf66c7c1390b0d5312c8373fb125", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)96": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)3796": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)3812": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)2387_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)2571_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2478_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2520_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)3821_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)3796", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)3812", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)2387_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)3828_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)309_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)96", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)2404_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)3821_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)2387_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)309_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } From cfd650f01c7316866322f3c3d1bfb44f832d30bf Mon Sep 17 00:00:00 2001 From: vmidyllic <74898029+vmidyllic@users.noreply.github.com> Date: Sat, 29 Jun 2024 01:17:27 +0300 Subject: [PATCH 45/49] fix issuer --- .openzeppelin/unknown-59144.json | 640 ++++++++++++++++++ contracts/examples/verax/VeraxZKPVerifier.sol | 2 +- package-lock.json | 8 +- package.json | 2 +- ...ests-v3validator-verax-AnimaProofOfLife.ts | 4 +- ...3validator-verax-AnimaProofOfUniqueness.ts | 4 +- scripts/verax/upgradeVeraxZKPVerifier.ts | 2 +- 7 files changed, 653 insertions(+), 9 deletions(-) diff --git a/.openzeppelin/unknown-59144.json b/.openzeppelin/unknown-59144.json index 99873e7..2ac9609 100644 --- a/.openzeppelin/unknown-59144.json +++ b/.openzeppelin/unknown-59144.json @@ -1212,6 +1212,646 @@ ] } } + }, + "c383bec902123bac297af8e6cdb500109bde21591d4036bd7aeb9a5afbe6dce5": { + "address": "0x0aDFC9ba4a674513D87f2f0C2238Be9F54c44b32", + "txHash": "0xcc1182aa7dece1cabeed57a569b632b3a688db5368f4f394f966e74ee85a1171", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)15": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)348": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)364": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)90_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)274_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)181_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)223_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)373_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)348", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)364", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)90_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)380_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)27_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)15", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)107_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } + }, + "df4683855a9a8db092205e9948156c6a36a266946a8da859b3371bf04773530e": { + "address": "0xD26D43bBf3FdcFc441dcA1dAAaB80bCdb1E050d6", + "txHash": "0x8900d014751f52b40bd56338344ee309eb3c4ca635f3c35cb04faa77e0bde9ac", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint64)dyn_storage": { + "label": "uint64[]", + "numberOfBytes": "32" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_bytes_storage": { + "label": "bytes", + "numberOfBytes": "32" + }, + "t_contract(ICircuitValidator)15": { + "label": "contract ICircuitValidator", + "numberOfBytes": "20" + }, + "t_contract(IPortal)348": { + "label": "contract IPortal", + "numberOfBytes": "20" + }, + "t_enum(AttestationSchemaType)364": { + "label": "enum VeraxZKPVerifier.AttestationSchemaType", + "members": [ + "PoU", + "PoL" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))": { + "label": "mapping(address => mapping(uint64 => struct ZKPVerifierBase.Proof))", + "numberOfBytes": "32" + }, + "t_mapping(t_string_memory_ptr,t_uint256)": { + "label": "mapping(string => uint256)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)": { + "label": "mapping(uint64 => struct VeraxZKPVerifier.PortalInfo)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(Proof)90_storage)": { + "label": "mapping(uint64 => struct ZKPVerifierBase.Proof)", + "numberOfBytes": "32" + }, + "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)": { + "label": "mapping(uint64 => struct IZKPVerifier.ZKPRequest)", + "numberOfBytes": "32" + }, + "t_string_memory_ptr": { + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(InitializableStorage)274_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)181_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)223_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(PortalInfo)373_storage": { + "label": "struct VeraxZKPVerifier.PortalInfo", + "members": [ + { + "label": "attestationPortalContract", + "type": "t_contract(IPortal)348", + "offset": 0, + "slot": "0" + }, + { + "label": "schemaId", + "type": "t_bytes32", + "offset": 0, + "slot": "1" + }, + { + "label": "schemaType", + "type": "t_enum(AttestationSchemaType)364", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(Proof)90_storage": { + "label": "struct ZKPVerifierBase.Proof", + "members": [ + { + "label": "isVerified", + "type": "t_bool", + "offset": 0, + "slot": "0" + }, + { + "label": "storageFields", + "type": "t_mapping(t_string_memory_ptr,t_uint256)", + "offset": 0, + "slot": "1" + }, + { + "label": "validatorVersion", + "type": "t_string_storage", + "offset": 0, + "slot": "2" + }, + { + "label": "blockNumber", + "type": "t_uint256", + "offset": 0, + "slot": "3" + }, + { + "label": "blockTimestamp", + "type": "t_uint256", + "offset": 0, + "slot": "4" + } + ], + "numberOfBytes": "160" + }, + "t_struct(VeraxZKPVerifierStorage)380_storage": { + "label": "struct VeraxZKPVerifier.VeraxZKPVerifierStorage", + "members": [ + { + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(ZKPRequest)27_storage": { + "label": "struct IZKPVerifier.ZKPRequest", + "members": [ + { + "label": "metadata", + "type": "t_string_storage", + "offset": 0, + "slot": "0" + }, + { + "label": "validator", + "type": "t_contract(ICircuitValidator)15", + "offset": 0, + "slot": "1" + }, + { + "label": "data", + "type": "t_bytes_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_struct(ZKPVerifierStorage)107_storage": { + "label": "struct ZKPVerifierBase.ZKPVerifierStorage", + "members": [ + { + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "offset": 0, + "slot": "0" + }, + { + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "offset": 0, + "slot": "1" + }, + { + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "offset": 0, + "slot": "2" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:polygonid.storage.VeraxZKPVerifier": [ + { + "contract": "VeraxZKPVerifier", + "label": "portalInfoForReq", + "type": "t_mapping(t_uint64,t_struct(PortalInfo)373_storage)", + "src": "contracts/examples/verax/VeraxZKPVerifier.sol:32", + "offset": 0, + "slot": "0" + } + ], + "erc7201:iden3.storage.ZKPVerifier": [ + { + "contract": "ZKPVerifierBase", + "label": "_proofs", + "type": "t_mapping(t_address,t_mapping(t_uint64,t_struct(Proof)90_storage))", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:21", + "offset": 0, + "slot": "0" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requests", + "type": "t_mapping(t_uint64,t_struct(ZKPRequest)27_storage)", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:22", + "offset": 0, + "slot": "1" + }, + { + "contract": "ZKPVerifierBase", + "label": "_requestIds", + "type": "t_array(t_uint64)dyn_storage", + "src": "@iden3/contracts/verifiers/ZKPVerifierBase.sol:23", + "offset": 0, + "slot": "2" + } + ], + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/contracts/examples/verax/VeraxZKPVerifier.sol b/contracts/examples/verax/VeraxZKPVerifier.sol index 2f8cf83..19d3ada 100644 --- a/contracts/examples/verax/VeraxZKPVerifier.sol +++ b/contracts/examples/verax/VeraxZKPVerifier.sol @@ -39,7 +39,7 @@ contract VeraxZKPVerifier is Ownable2StepUpgradeable, ZKPVerifierBase { /** * @dev Version of contract */ - string public constant VERSION = "1.0.1"; + string public constant VERSION = "1.0.3"; function _getVeraxZKPVerifierStorage() private pure returns (VeraxZKPVerifierStorage storage $) { assembly { diff --git a/package-lock.json b/package-lock.json index a5a6677..94e2908 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "devDependencies": { "@iden3/contracts": "^2.1.1", "@iden3/js-crypto": "^1.1.0", - "@iden3/js-iden3-core": "^1.3.1", + "@iden3/js-iden3-core": "1.4.0", "@iden3/js-jsonld-merklization": "1.2.0", "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@nomicfoundation/hardhat-verify": "^2.0.5", @@ -4426,9 +4426,9 @@ "dev": true }, "node_modules/@iden3/js-iden3-core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@iden3/js-iden3-core/-/js-iden3-core-1.3.1.tgz", - "integrity": "sha512-cCPuEdbTtgqtcK57trS23FmRbLqh8maHyAlxapYPDlua5GFOtKcyPJlglDb1tfIRxEipErfY7gdvBh3hm26kMg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@iden3/js-iden3-core/-/js-iden3-core-1.4.0.tgz", + "integrity": "sha512-pXwzPLaORHq1xJDgLEmtqu6Vwnu+Ai1/OSb4BAwDoF4YeYPiJJlZ55hqwIQC/Eg/VeswuleUF211XT/ZGqoymQ==", "dev": true, "peerDependencies": { "@iden3/js-crypto": "1.1.0" diff --git a/package.json b/package.json index 9cdf269..2426b35 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "devDependencies": { "@iden3/contracts": "^2.1.1", "@iden3/js-crypto": "^1.1.0", - "@iden3/js-iden3-core": "^1.3.1", + "@iden3/js-iden3-core": "1.4.0", "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@nomicfoundation/hardhat-verify": "^2.0.5", "@openzeppelin/contracts": "^5.0.2", diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts index 35a2d77..e98685c 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfLife.ts @@ -170,10 +170,12 @@ async function main() { } }; + const issuers = !allowedIssuers.length ? [] : allowedIssuers.map( issuer => DID.idFromDID(DID.parse(issuer)).bigInt().toString()) + const tx = await veraxVerifier.setZKPRequest(query.requestId, { metadata: JSON.stringify(invokeRequestMetadata), validator: validatorAddressV3, - data: packV3ValidatorParams(query) + data: packV3ValidatorParams(query,issuers) }); console.log(tx.hash); diff --git a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts index 2ff5593..9991d61 100644 --- a/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts +++ b/scripts/verax/setRequests-v3validator-verax-AnimaProofOfUniqueness.ts @@ -170,10 +170,12 @@ async function main() { } }; + const issuers = !allowedIssuers.length ? [] : allowedIssuers.map( issuer => DID.idFromDID(DID.parse(issuer)).bigInt().toString()) + const tx = await veraxVerifier.setZKPRequest(query.requestId, { metadata: JSON.stringify(invokeRequestMetadata), validator: validatorAddressV3, - data: packV3ValidatorParams(query) + data: packV3ValidatorParams(query,issuers) }); console.log(tx.hash); diff --git a/scripts/verax/upgradeVeraxZKPVerifier.ts b/scripts/verax/upgradeVeraxZKPVerifier.ts index d854b03..63493c5 100644 --- a/scripts/verax/upgradeVeraxZKPVerifier.ts +++ b/scripts/verax/upgradeVeraxZKPVerifier.ts @@ -1,7 +1,7 @@ import { StateDeployHelper } from '../../test/helpers/StateDeployHelper'; async function main() { - const contractAddress = ''; + const contractAddress = '0x07D5A8d32A3B42536c3019fD10F62A893aCc9021'; const contractName = 'VeraxZKPVerifier'; const stateDeployHelper = await StateDeployHelper.initialize(); From 64aa7caa66d0e1c9dd57fa93fd877fabf2d63499 Mon Sep 17 00:00:00 2001 From: vmidyllic <74898029+vmidyllic@users.noreply.github.com> Date: Sat, 6 Jul 2024 23:57:32 +0300 Subject: [PATCH 46/49] upgrade to 2.0.4 --- .openzeppelin/unknown-59144.json | 104 +++++++++++++++++++++++++++++++ scripts/upgradeV3Validator.ts | 4 +- 2 files changed, 107 insertions(+), 1 deletion(-) diff --git a/.openzeppelin/unknown-59144.json b/.openzeppelin/unknown-59144.json index 2ac9609..3614471 100644 --- a/.openzeppelin/unknown-59144.json +++ b/.openzeppelin/unknown-59144.json @@ -1852,6 +1852,110 @@ ] } } + }, + "58ac265d2c147209c4fde48c1cbee0058176e3fcea3f4e1ce0f5de232ba180c4": { + "address": "0x4ab50e641a010ef9358246E4D1F70330A7715481", + "txHash": "0x36cb55716a514c437fd7b54bb8918e75d8ee436ae6ae60547cccf0ed1992cdb9", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)1965_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)1872_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)1914_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/scripts/upgradeV3Validator.ts b/scripts/upgradeV3Validator.ts index e5e2df2..b3011ae 100644 --- a/scripts/upgradeV3Validator.ts +++ b/scripts/upgradeV3Validator.ts @@ -5,7 +5,9 @@ import { StateDeployHelper } from '../test/helpers/StateDeployHelper'; const pathOutputJson = path.join(__dirname, './deploy_validator_output.json'); async function main() { - const validatorContractAddress = '0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a'; // mumbai + // const validatorContractAddress = '0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a'; // mumbai + const validatorContractAddress = '0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b'; // linea + const validatorContractName = 'CredentialAtomicQueryV3Validator'; const stateDeployHelper = await StateDeployHelper.initialize(); From 233c96e9e1821eefbd3898e05b5d6663e4d6470a Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Fri, 26 Jul 2024 15:00:32 +0300 Subject: [PATCH 47/49] get reputation lvl count script --- scripts/verax/get-attestation.ts | 41 +++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index 622dc56..471938a 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -1,23 +1,36 @@ -import { Id } from "@iden3/js-iden3-core"; import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; -const publicAddress: `0x${string}`= `0x${process.env.SEPOLIA_PUB_ADDRESS}`; -const privateKey: `0x${string}` = `0x${process.env.SEPOLIA_PRIVATE_KEY}`; async function main() { - const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_SEPOLIA, publicAddress, privateKey); - const attestationId = '0x0000000000000000000000000000000000000000000000000000000000000137'; - const attestation = await veraxSdk.attestation.getAttestation(attestationId) as {attestationData: `0x${string}`, subject: `0x${string}`}; + const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_MAINNET); + const attestations: { attestationData: `0x${string}`; subject: `0x${string}` }[] = []; + for (let i = 0; i < 40; i++) { + const attestationsBatch = (await veraxSdk.attestation.findBy(100, i * 100, { + schemaId: '0x021fa993b2ac55b95340608478282821b89398de6fa14073b4d44a3564a8c79d' // PoU schema in LINEA MAIN + })) as { attestationData: `0x${string}`; subject: `0x${string}` }[]; + attestations.push(...attestationsBatch); + console.log(attestations.length); + } - console.log(attestation); - - const decoded = - veraxSdk.utils.decode( + let repLvl1Count = 0; + let repVl2Count = 0; + for (let i = 0; i < attestations.length; i++) { + const decoded = veraxSdk.utils.decode( '(uint64 requestId, uint256 nullifierSessionID, uint256 reputationLevel)', - attestation.attestationData as `0x${string}` - ); - console.log(decoded); - console.log('sender', attestation.subject); + attestations[i].attestationData as `0x${string}` + ) as unknown as { requestId: number; nullifierSessionID: string; reputationLevel: bigint }[]; + const reputationLvlStr = decoded[0].reputationLevel.toString(); + if (reputationLvlStr == '1') { + repLvl1Count++; + } else if (reputationLvlStr == '2') { + repVl2Count++; + } else { + throw new Error('Invalid reputation level'); + } + } + + console.log('Reputation level 1 count:', repLvl1Count); + console.log('Reputation level 2 count:', repVl2Count); } main() From d8aa8fd7a45d1916650190993807406d47ccd13c Mon Sep 17 00:00:00 2001 From: vbasiuk Date: Wed, 14 Aug 2024 11:39:22 +0300 Subject: [PATCH 48/49] read all atestation till end --- scripts/verax/get-attestation.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/verax/get-attestation.ts b/scripts/verax/get-attestation.ts index 471938a..ba466bd 100644 --- a/scripts/verax/get-attestation.ts +++ b/scripts/verax/get-attestation.ts @@ -4,12 +4,17 @@ import { VeraxSdk } from "@verax-attestation-registry/verax-sdk"; async function main() { const veraxSdk = new VeraxSdk(VeraxSdk.DEFAULT_LINEA_MAINNET); const attestations: { attestationData: `0x${string}`; subject: `0x${string}` }[] = []; - for (let i = 0; i < 40; i++) { + let i = 0; + while (true) { const attestationsBatch = (await veraxSdk.attestation.findBy(100, i * 100, { schemaId: '0x021fa993b2ac55b95340608478282821b89398de6fa14073b4d44a3564a8c79d' // PoU schema in LINEA MAIN })) as { attestationData: `0x${string}`; subject: `0x${string}` }[]; attestations.push(...attestationsBatch); console.log(attestations.length); + i++; + if (attestationsBatch.length < 100) { + break; + } } let repLvl1Count = 0; From e25f29c52f529c9e54422c285493151b22eeb708 Mon Sep 17 00:00:00 2001 From: vmidyllic <74898029+vmidyllic@users.noreply.github.com> Date: Mon, 19 Aug 2024 12:52:04 +0300 Subject: [PATCH 49/49] upgraded v3 --- .openzeppelin/unknown-59141.json | 104 ++ contracts/examples/ReadonlyState.sol | 8 + package-lock.json | 2566 ++++++++++++++++++++++---- package.json | 6 +- scripts/upgradeV3Validator.ts | 3 +- 5 files changed, 2346 insertions(+), 341 deletions(-) diff --git a/.openzeppelin/unknown-59141.json b/.openzeppelin/unknown-59141.json index 9358a02..c8e24ab 100644 --- a/.openzeppelin/unknown-59141.json +++ b/.openzeppelin/unknown-59141.json @@ -1901,6 +1901,110 @@ ] } } + }, + "c2b61909f015140670c102f8438b377024411b302a4f0048ad3f8adc8fd35597": { + "address": "0xca7bBFF979ca97a9a3BF1462267f6dd1D144dE41", + "txHash": "0x8801783b903bc9a130ec9b69673c0381a526177ebf02658a2a178fcac86724ff", + "layout": { + "solcVersion": "0.8.20", + "storage": [], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_struct(InitializableStorage)2593_storage": { + "label": "struct Initializable.InitializableStorage", + "members": [ + { + "label": "_initialized", + "type": "t_uint64", + "offset": 0, + "slot": "0" + }, + { + "label": "_initializing", + "type": "t_bool", + "offset": 8, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(Ownable2StepStorage)2500_storage": { + "label": "struct Ownable2StepUpgradeable.Ownable2StepStorage", + "members": [ + { + "label": "_pendingOwner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_struct(OwnableStorage)2542_storage": { + "label": "struct OwnableUpgradeable.OwnableStorage", + "members": [ + { + "label": "_owner", + "type": "t_address", + "offset": 0, + "slot": "0" + } + ], + "numberOfBytes": "32" + }, + "t_uint64": { + "label": "uint64", + "numberOfBytes": "8" + } + }, + "namespaces": { + "erc7201:openzeppelin.storage.Ownable2Step": [ + { + "contract": "Ownable2StepUpgradeable", + "label": "_pendingOwner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol:23", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Ownable": [ + { + "contract": "OwnableUpgradeable", + "label": "_owner", + "type": "t_address", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:24", + "offset": 0, + "slot": "0" + } + ], + "erc7201:openzeppelin.storage.Initializable": [ + { + "contract": "Initializable", + "label": "_initialized", + "type": "t_uint64", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:69", + "offset": 0, + "slot": "0" + }, + { + "contract": "Initializable", + "label": "_initializing", + "type": "t_bool", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:73", + "offset": 8, + "slot": "0" + } + ] + } + } } } } diff --git a/contracts/examples/ReadonlyState.sol b/contracts/examples/ReadonlyState.sol index 3fd76a9..f68f5dd 100644 --- a/contracts/examples/ReadonlyState.sol +++ b/contracts/examples/ReadonlyState.sol @@ -99,6 +99,14 @@ contract ReadonlyState is Ownable2StepUpgradeable, IState { _setDefaultIdType(defaultIdType); } + function isIdTypeSupported(bytes2 idType) external view returns (bool){ + return idType == _defaultIdType; + } + function getIdTypeIfSupported(uint256 id) external view returns (bytes2){ + bytes2 idType = GenesisUtils.getIdType(id); + require( idType == _defaultIdType, "id type is not supported"); + return idType; + } /** * @dev Change the state of an identity (transit to the new state) with ZKP ownership check. * @param id Identity diff --git a/package-lock.json b/package-lock.json index 4aceb6a..67482c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,12 +6,11 @@ "": { "name": "contracts", "devDependencies": { - "@0xpolygonid/js-sdk": "1.14.1", + "@0xpolygonid/js-sdk": "1.17.2", "@iden3/contracts": "^2.2.0", "@iden3/js-crypto": "^1.1.0", - "@iden3/js-jsonld-merklization": "1.2.0", "@iden3/js-iden3-core": "1.4.0", - "@iden3/js-jsonld-merklization": "1.2.0", + "@iden3/js-jsonld-merklization": "1.3.1", "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@nomicfoundation/hardhat-verify": "^2.0.5", "@openzeppelin/contracts": "^5.0.2", @@ -42,9 +41,9 @@ } }, "node_modules/@0xpolygonid/js-sdk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@0xpolygonid/js-sdk/-/js-sdk-1.14.1.tgz", - "integrity": "sha512-RvF4C4fwxhoaPS3Y4+ZcieirLxsrjTUEcOmSSpoYyHLKegjIfXhJTp5h/w2Xe8aPsoJm8sRbs+ndXkkaS2Kjfw==", + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/@0xpolygonid/js-sdk/-/js-sdk-1.17.2.tgz", + "integrity": "sha512-6QRAL+ibY682tDebppo0d4eKYTxZEgGuuRhzoqcVUOxD34TWF/GW7GcXGjhmYqW7wN1AFGGVe+aFYpAarybu3g==", "dev": true, "dependencies": { "@noble/curves": "^1.4.0", @@ -52,7 +51,7 @@ "ajv-formats": "2.1.1", "did-jwt": "8.0.4", "did-resolver": "4.1.0", - "ethers": "6.8.0", + "ethers": "^6.13.1", "idb-keyval": "6.2.0", "js-sha3": "0.9.3", "jsonld": "8.3.1", @@ -64,21 +63,15 @@ }, "peerDependencies": { "@iden3/js-crypto": "1.1.0", - "@iden3/js-iden3-core": "1.3.1", - "@iden3/js-jsonld-merklization": "1.2.0", - "@iden3/js-jwz": "1.5.0", + "@iden3/js-iden3-core": "1.4.0", + "@iden3/js-jsonld-merklization": "1.3.1", + "@iden3/js-jwz": "1.6.0", "@iden3/js-merkletree": "1.2.0", "ffjavascript": "0.3.0", "rfc4648": "1.5.3", "snarkjs": "0.7.4" } }, - "node_modules/@0xpolygonid/js-sdk/node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "dev": true - }, "node_modules/@0xpolygonid/js-sdk/node_modules/@noble/curves": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", @@ -103,12 +96,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@0xpolygonid/js-sdk/node_modules/@types/node": { - "version": "18.15.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", - "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true - }, "node_modules/@0xpolygonid/js-sdk/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", @@ -125,46 +112,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@0xpolygonid/js-sdk/node_modules/ethers": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.8.0.tgz", - "integrity": "sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@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.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@0xpolygonid/js-sdk/node_modules/ethers/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dev": true, - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@0xpolygonid/js-sdk/node_modules/idb-keyval": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.0.tgz", @@ -186,12 +133,6 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/@0xpolygonid/js-sdk/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true - }, "node_modules/@0xpolygonid/js-sdk/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -1498,6 +1439,181 @@ "node": ">=12" } }, + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", + "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "dev": true, + "dependencies": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/@envelop/core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@envelop/core/-/core-5.0.1.tgz", + "integrity": "sha512-wxA8EyE1fPnlbP0nC/SFI7uU8wSNf4YjxZhAPu0P63QbgIvqHtHsH4L3/u+rsTruzhk3OvNRgQyLsMfaR9uzAQ==", + "dev": true, + "dependencies": { + "@envelop/types": "5.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/core/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/@envelop/extended-validation": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@envelop/extended-validation/-/extended-validation-4.0.0.tgz", + "integrity": "sha512-pvJ/OL+C+lpNiiCXezHT+vP3PTq37MQicoOB1l5MdgOOZZWRAp0NDOgvEKcXUY7AWNpvNHgSE0QFSRfGwsfwFQ==", + "dev": true, + "dependencies": { + "@graphql-tools/utils": "^10.0.0", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@envelop/core": "^5.0.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/extended-validation/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/@envelop/graphql-jit": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@envelop/graphql-jit/-/graphql-jit-8.0.3.tgz", + "integrity": "sha512-IZnKc7dVOQV9jEi5s5RkG8fVKqc6Ss/mBN9PRt2iYFa9o6XkL/haPLJRfWFsS/CSJfFOQuzLyxYuALA8DaoOYw==", + "dev": true, + "dependencies": { + "graphql-jit": "0.8.6", + "tslib": "^2.5.0", + "value-or-promise": "^1.0.12" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@envelop/core": "^5.0.0", + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@envelop/graphql-jit/node_modules/ajv/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==", + "dev": true + }, + "node_modules/@envelop/graphql-jit/node_modules/fast-json-stringify": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", + "dev": true, + "dependencies": { + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/graphql-jit": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/graphql-jit/-/graphql-jit-0.8.6.tgz", + "integrity": "sha512-oVJteh/uYDpIA/M4UHrI+DmzPnX1zTD0a7Je++JA8q8P68L/KbuepimDyrT5FhL4HAq3filUxaFvfsL6/A4msw==", + "dev": true, + "dependencies": { + "@graphql-typed-document-node/core": "^3.2.0", + "fast-json-stringify": "^5.8.0", + "generate-function": "^2.3.1", + "lodash.memoize": "^4.1.2", + "lodash.merge": "4.6.2", + "lodash.mergewith": "4.6.2" + }, + "peerDependencies": { + "graphql": ">=15" + } + }, + "node_modules/@envelop/graphql-jit/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@envelop/graphql-jit/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/@envelop/types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@envelop/types/-/types-5.0.0.tgz", + "integrity": "sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA==", + "dev": true, + "dependencies": { + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@envelop/types/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -3425,27 +3541,6 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@graphql-mesh/cli/node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "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 - } - } - }, "node_modules/@graphql-mesh/cli/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -3797,27 +3892,6 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@graphql-tools/executor-graphql-ws/node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "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 - } - } - }, "node_modules/@graphql-tools/executor-http": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.9.tgz", @@ -3870,27 +3944,6 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@graphql-tools/executor-legacy-ws/node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "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 - } - } - }, "node_modules/@graphql-tools/executor/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -4212,27 +4265,6 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@graphql-tools/url-loader/node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "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 - } - } - }, "node_modules/@graphql-tools/utils": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.2.0.tgz", @@ -4466,38 +4498,348 @@ "@iden3/js-crypto": "1.1.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@iden3/js-jsonld-merklization": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@iden3/js-jsonld-merklization/-/js-jsonld-merklization-1.3.1.tgz", + "integrity": "sha512-4h4D+KoTn17xkkfTGeVKQ/+d0Y+ALJ3inXsGTxly6EvcRtuiLjoJXmI6SFBd6VeRktKKSaFYosgPDc7y64haTg==", "dev": true, - "engines": { - "node": ">=6.0.0" + "hasInstallScript": true, + "dependencies": { + "@js-temporal/polyfill": "0.4.4", + "jsonld": "8.3.2", + "n3": "1.17.3", + "patch-package": "^8.0.0" + }, + "peerDependencies": { + "@iden3/js-crypto": "1.1.0", + "@iden3/js-merkletree": "1.2.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "node_modules/@iden3/js-jsonld-merklization/node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", "dev": true }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@iden3/js-jsonld-merklization/node_modules/jsonld": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.2.tgz", + "integrity": "sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@iden3/js-jwz": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@iden3/js-jwz/-/js-jwz-1.6.0.tgz", + "integrity": "sha512-OQWlgTMHN3+Fwoiuqp7i4lL7ofpcrVl5p0dsFCrsCVHjydOq1YMPQBrvttZRwN5hL3y28P1Yzq0yXDwcDqDwzQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "@iden3/js-crypto": "1.1.0", + "@iden3/js-iden3-core": "1.4.0", + "@iden3/js-merkletree": "1.2.0", + "ffjavascript": "0.3.0", + "rfc4648": "1.5.3", + "snarkjs": "0.7.4" + } + }, + "node_modules/@iden3/js-merkletree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@iden3/js-merkletree/-/js-merkletree-1.2.0.tgz", + "integrity": "sha512-tM6jj1v/41qQ6V2K6CTrv0KsNHQ2y/O6Q9RSB1SdN2LTu+cgA9FnD2Qr3whzSvwgUs7X3SjuJgb9OTgs0lDemQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "@iden3/js-crypto": "1.1.0", + "idb-keyval": "^6.2.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@js-temporal/polyfill": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.4.4.tgz", + "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==", + "dev": true, + "dependencies": { + "jsbi": "^4.3.0", + "tslib": "^2.4.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@js-temporal/polyfill/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/@kamilkisiela/fast-url-parser": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz", + "integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==", + "dev": true + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp/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, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/@metamask/eth-sig-util": { @@ -5027,6 +5369,83 @@ "node": ">= 10" } }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "optional": true + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/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, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@openzeppelin/contracts": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", @@ -6413,12 +6832,17 @@ "dev": true, "optional": true }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true, - "peer": true + "dev": true }, "node_modules/abitype": { "version": "0.7.1", @@ -6534,7 +6958,52 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/amazon-cognito-identity-js": { + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/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==", + "dev": true + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/amazon-cognito-identity-js": { "version": "6.3.12", "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz", "integrity": "sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==", @@ -6655,6 +7124,24 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz", + "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -6811,7 +7298,6 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "peer": true, "engines": { "node": ">= 4.0.0" } @@ -7202,6 +7688,58 @@ "node": ">= 0.8" } }, + "node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, + "optional": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "optional": true + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -7285,6 +7823,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/canonicalize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-2.0.0.tgz", + "integrity": "sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w==", + "dev": true + }, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, + "node_modules/capital-case/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -7462,6 +8043,16 @@ "node": ">= 6" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -7676,6 +8267,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -7920,6 +8521,13 @@ "proto-list": "~1.2.1" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -8306,6 +8914,13 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -8315,6 +8930,48 @@ "node": ">= 0.8" } }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/did-jwt": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/did-jwt/-/did-jwt-8.0.4.tgz", + "integrity": "sha512-KPtG7H+8GgKGMiDqFvOdNy5BBN3hpA+8xV7VygEnpst5oPIqjvcH3rTtnPF55a8bOxIzE2PudKGIXIQhekv7WA==", + "dev": true, + "dependencies": { + "@noble/ciphers": "^0.5.0", + "@noble/curves": "^1.0.0", + "@noble/hashes": "^1.3.0", + "@scure/base": "^1.1.3", + "canonicalize": "^2.0.0", + "did-resolver": "^4.1.0", + "multibase": "^4.0.6", + "multiformats": "^9.6.2", + "uint8arrays": "3.1.1" + } + }, + "node_modules/did-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/did-resolver/-/did-resolver-4.1.0.tgz", + "integrity": "sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA==", + "dev": true + }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -8396,6 +9053,43 @@ "dev": true, "license": "GPL-3.0" }, + "node_modules/dset": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", + "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "peer": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz", + "integrity": "sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==", + "dev": true + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -8429,7 +9123,6 @@ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "optional": true, - "peer": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -8440,7 +9133,6 @@ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "optional": true, - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -8470,6 +9162,13 @@ "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "optional": true + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -9193,9 +9892,9 @@ } }, "node_modules/ethers": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.0.tgz", - "integrity": "sha512-zL5NlOTjML239gIvtVJuaSk0N9GQLi1Hom3ZWUszE5lDTQE/IVB62mrPkQ2W1bGcZwVGSLaetQbWNQSvI4rGDQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", + "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", "dev": true, "funding": [ { @@ -9207,7 +9906,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "peer": true, "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -9215,7 +9913,7 @@ "@types/node": "18.15.13", "aes-js": "4.0.0-beta.5", "tslib": "2.4.0", - "ws": "8.5.0" + "ws": "8.17.1" }, "engines": { "node": ">=14.0.0" @@ -9225,15 +9923,13 @@ "version": "18.15.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", - "dev": true, - "peer": true + "dev": true }, "node_modules/ethers/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/ethjs-unit": { "version": "0.1.6", @@ -9305,6 +10001,13 @@ "safe-buffer": "^5.1.1" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true, + "optional": true + }, "node_modules/extract-files": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz", @@ -9393,13 +10096,6 @@ "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==", - "dev": true, - "peer": true - }, "node_modules/fast-querystring": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", @@ -9415,6 +10111,13 @@ "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==", "dev": 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==", + "dev": true, + "peer": true + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -9424,6 +10127,54 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", + "dev": true, + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^1.0.35" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "dev": true + }, + "node_modules/fbjs/node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "dependencies": { + "asap": "~2.0.3" + } + }, "node_modules/ffjavascript": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.3.0.tgz", @@ -9513,6 +10264,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -9669,6 +10429,19 @@ "node": ">=12" } }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -9732,6 +10505,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.2.tgz", + "integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -10648,6 +11455,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, "node_modules/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -10727,6 +11541,16 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "optional": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/http-basic": { "version": "8.1.3", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", @@ -10765,6 +11589,33 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-response-object": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", @@ -10912,7 +11763,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "peer": true, "engines": { "node": ">=0.8.19" } @@ -10990,6 +11840,27 @@ "fp-ts": "^1.0.0" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "optional": true + }, "node_modules/is-absolute": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", @@ -11193,6 +12064,13 @@ "npm": ">=3" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "optional": true + }, "node_modules/is-lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-2.0.2.tgz", @@ -11460,6 +12338,79 @@ "ws": "*" } }, + "node_modules/isows": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.4.tgz", + "integrity": "sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "peer": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", @@ -11490,6 +12441,37 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbi": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz", + "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==", + "dev": true + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "optional": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-bigint-patch": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/json-bigint-patch/-/json-bigint-patch-0.0.8.tgz", + "integrity": "sha512-xa0LTQsyaq8awYyZyuUsporWisZFiyqzxGW8CKM3t7oouf0GFAKYJnqAm6e9NLNBQOCtOLvy614DEiRX/rPbnA==", + "dev": true + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -11532,6 +12514,24 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -11539,6 +12539,12 @@ "dev": true, "peer": true }, + "node_modules/json-stable-stringify/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -11570,6 +12576,36 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsonld": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.1.tgz", + "integrity": "sha512-tYfKpWL56meSJCHS91Ph0+EUThHZOZ8bKuboME4998SF+Kkukp2PhCPdRCvA7tsGUKr9FvSoyIRqJPuImBcBuA==", + "dev": true, + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonld/node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", + "dev": true + }, "node_modules/jsonschema": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", @@ -11629,6 +12665,15 @@ "graceful-fs": "^4.1.9" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -11840,6 +12885,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/logplease": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/logplease/-/logplease-1.2.15.tgz", + "integrity": "sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA==", + "dev": true, + "peer": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -11910,12 +12974,62 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "optional": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "optional": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -12068,87 +13182,223 @@ } }, "node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, - "peer": true, + "optional": true, "dependencies": { - "minimist": "^1.2.6" + "minipass": "^7.0.3" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "optional": true, "dependencies": { - "obliterator": "^2.0.0" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, + "optional": true, "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 14.0.0" + "node": ">= 8" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/mocha/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "funding": [ - { + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "8.1.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { "type": "individual", "url": "https://paulmillr.com/funding/" } @@ -12239,6 +13489,86 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/multibase": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", + "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", + "deprecated": "This module has been superseded by the multiformats module", + "dev": true, + "dependencies": { + "@multiformats/base-x": "^4.0.1" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + } + }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "dev": true + }, + "node_modules/n3": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.17.3.tgz", + "integrity": "sha512-ZHc24eZi2GIJcJQVxtL6NT3g+mTHRNeTVfXWELzeUOirqLrh2AAyg0nfYZ/kryJWKFSCgO37DGB6Ok3qmGgEcA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.1.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/n3/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/n3/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true, + "optional": true + }, "node_modules/nanoassert": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", @@ -12271,6 +13601,16 @@ "node": ">=10" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -12300,25 +13640,6 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -12349,6 +13670,31 @@ } } }, + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dev": true, + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/node-gyp-build": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", @@ -12360,12 +13706,175 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "optional": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/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, + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, + "node_modules/node-libcurl": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/node-libcurl/-/node-libcurl-4.0.0.tgz", + "integrity": "sha512-v+u+OgSq6ldvf8MrdjieAy/mv8WeTN94nrTomh62zhItF2HH0Ckin/QEqs8+35DWyYrE5nBM2480UtWVXktzbQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@mapbox/node-pre-gyp": "1.0.11", + "env-paths": "2.2.0", + "nan": "2.18.0", + "node-gyp": "10.0.1", + "npmlog": "7.0.1", + "rimraf": "5.0.5", + "tslib": "2.6.2" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/node-libcurl/node_modules/env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/node-libcurl/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-libcurl/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-libcurl/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "optional": true + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -12415,6 +13924,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npmlog": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", @@ -12667,6 +14193,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "optional": true + }, "node_modules/package-json/node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -12728,42 +14261,136 @@ "path-root": "^0.1.1" }, "engines": { - "node": ">=0.8" + "node": ">=0.8" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/patch-package": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "json-stable-stringify": "^1.0.2", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^7.5.3", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^2.2.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=14", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/patch-package/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" + "glob": "^7.1.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "node_modules/patch-package/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, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/pascal-case/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/path-browserify": { "version": "1.0.1", @@ -13022,6 +14649,16 @@ "node": ">=10" } }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -13048,6 +14685,30 @@ "asap": "~2.0.6" } }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -13239,6 +14900,25 @@ "node": ">=0.10.0" } }, + "node_modules/rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "optional": true + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -13543,12 +15223,24 @@ "node": ">=0.10.0" } }, + "node_modules/rfc4648": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.3.tgz", + "integrity": "sha512-MjOWxM065+WswwnmNONOT+bD1nXzY9Km6u3kzvnx8F8/HXGZdz3T6e6vZJ8Q/RIMUSp/nxqjH3GwvJDy8ijeQQ==", + "dev": true, + "peer": true + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -14073,6 +15765,98 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/snake-case/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, + "node_modules/snarkjs": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/snarkjs/-/snarkjs-0.7.4.tgz", + "integrity": "sha512-x4cOCR4YXSyBlLtfnUUwfbZrw8wFd/Y0lk83eexJzKwZB8ELdpH+10ts8YtDsm2/a3WK7c7p514bbE8NpqxW8w==", + "dev": true, + "peer": true, + "dependencies": { + "@iden3/binfileutils": "0.0.12", + "bfj": "^7.0.2", + "blake2b-wasm": "^2.4.0", + "circom_runtime": "0.1.25", + "ejs": "^3.1.6", + "fastfile": "0.0.20", + "ffjavascript": "0.3.0", + "js-sha3": "^0.8.0", + "logplease": "^1.2.15", + "r1csfile": "0.0.48" + }, + "bin": { + "snarkjs": "build/cli.cjs" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "optional": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/solc": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", @@ -14546,6 +16330,19 @@ "dev": true, "peer": true }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/stacktrace-parser": { "version": "0.1.10", "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", @@ -14567,16 +16364,6 @@ "node": ">=8" } }, - "node_modules/static-eval": { - "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, - "peer": true, - "dependencies": { - "escodegen": "^1.8.1" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -14913,6 +16700,73 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "optional": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -15533,6 +17387,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -15557,6 +17420,32 @@ "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", "dev": true }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "optional": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -15855,6 +17744,8 @@ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 8" } @@ -16768,27 +18659,6 @@ "npm": ">=6.12.0" } }, - "node_modules/web3-providers-ws/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "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 - } - } - }, "node_modules/web3-rpc-methods": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.2.0.tgz", @@ -17051,6 +18921,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -17152,16 +19032,16 @@ "dev": true }, "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -17187,6 +19067,18 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index 411610a..82b3312 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "contracts", "devDependencies": { - "@0xpolygonid/js-sdk": "1.14.1", - "@iden3/js-jsonld-merklization": "1.2.0", + "@0xpolygonid/js-sdk": "1.17.2", + "@iden3/js-jsonld-merklization": "1.3.1", "@iden3/contracts": "^2.2.0", "@iden3/js-crypto": "^1.1.0", "@iden3/js-iden3-core": "1.4.0", @@ -16,7 +16,7 @@ "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^10.0.6", "@typescript-eslint/eslint-plugin": "^7.6.0", - "@iden3/js-jsonld-merklization": "1.2.0", + "@iden3/js-jsonld-merklization": "1.3.1", "async": "^3.2.3", "circomlibjs": "^0.1.7", "dotenv": "^16.4.5", diff --git a/scripts/upgradeV3Validator.ts b/scripts/upgradeV3Validator.ts index b3011ae..8ce928c 100644 --- a/scripts/upgradeV3Validator.ts +++ b/scripts/upgradeV3Validator.ts @@ -6,8 +6,9 @@ const pathOutputJson = path.join(__dirname, './deploy_validator_output.json'); async function main() { // const validatorContractAddress = '0x3412AB64acFf5d94Da4914F176A43aCbDdC7Fc4a'; // mumbai - const validatorContractAddress = '0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b'; // linea + // const validatorContractAddress = '0x9ee6a2682Caa2E0AC99dA46afb88Ad7e6A58Cd1b'; // linea + const validatorContractAddress = "0xcA16bdE835f067263F084F50b03E6cffA74eA403" // linea sepolia const validatorContractName = 'CredentialAtomicQueryV3Validator'; const stateDeployHelper = await StateDeployHelper.initialize();