From 36ebe8e3247bb2fd8e0d0cafc7bc7bc2c6ff15c0 Mon Sep 17 00:00:00 2001 From: Yu Jiang Tham Date: Mon, 18 Dec 2023 08:40:55 -0800 Subject: [PATCH] Circuit harness/tests (#5) * Add test framework * New circuit test framework * Dynamic input file lookup * Update workflow * Try using file: * Change ts-node call to tsx * Test prebuild * Include dotenv for GH actions * pnpm -> npx * Verify jest working * Remove extraneous items in package.json * Update for gh actions * Fix readme script name * Update test timeout, add file checks * Client harness for converting js circuits (#6) * Client harness * Update package link * Remove unused comments * Add provider support * Update version * Remove exec * Remove unused comments * Add tsconfig for automation * Update workflow * Tweak harness deps * Let harness use local client dependency * Update package structure * Update tests * Update gh workflow --- .github/workflows/test.yml | 38 + .gitignore | 4 +- client/package.json | 5 +- client/pnpm-lock.yaml | 252 ++ client/scripts/postTsc.js | 2 +- client/src/cli/components.ts | 7 + client/src/cli/index.ts | 4 +- harness/.prettierrc | 9 + harness/jest.config.js | 10 + harness/package.json | 46 + harness/pnpm-lock.yaml | 3074 +++++++++++++++++ harness/readme.md | 30 + harness/scripts/postBuild.js | 25 + harness/src/index.ts | 20 + harness/src/run.ts | 49 + harness/src/template/buildCircuit.ts | 80 + harness/src/template/template.circuit | 70 + harness/test/integration/goerli.test.ts | 45 + .../integration/input/account/7_balance.js | 10 + .../account/7_different_account_balance.js | 5 + .../test/integration/input/combo/default.js | 97 + .../test/integration/input/combo/max(128).js | 34 + .../test/integration/input/combo/max(30)#2.js | 25 + .../test/integration/input/combo/max(30)#3.js | 19 + .../test/integration/input/combo/max(30).js | 25 + .../input/combo/receipt+tx+mapping+storage.js | 20 + .../input/combo/receipt+tx+mapping.js | 14 + .../integration/input/combo/receipt+tx.js | 9 + .../test/integration/input/header/8_mixed.js | 13 + .../integration/input/header/8_state_root.js | 8 + .../input/mapping/different_blocks.js | 4 + .../input/mapping/different_keys.js | 4 + .../integration/input/receipt/diff_block.js | 4 + .../input/receipt/same_receipt_diff_fields.js | 7 + .../integration/input/storage/7_empty_slot.js | 5 + .../test/integration/input/storage/7_slots.js | 5 + .../input/tx/diff_block_diff_tx.js | 4 + .../input/tx/diff_block_diff_tx_legacy.js | 4 + .../input/tx/same_block_diff_tx.js | 4 + .../output/account/7_balance.build.json | 14 + .../output/account/7_balance.circuit.ts | 33 + .../output/account/7_balance.output.json | 90 + .../7_different_account_balance.build.json | 14 + .../7_different_account_balance.circuit.ts | 29 + .../7_different_account_balance.output.json | 90 + .../output/combo/default.build.json | 14 + .../output/combo/default.circuit.ts | 145 + .../output/combo/default.output.json | 141 + .../output/combo/max(128).build.json | 14 + .../output/combo/max(128).circuit.ts | 63 + .../output/combo/max(128).output.json | 1275 +++++++ .../output/combo/max(30)#2.build.json | 14 + .../output/combo/max(30)#2.circuit.ts | 54 + .../output/combo/max(30)#2.output.json | 317 ++ .../output/combo/max(30)#3.build.json | 14 + .../output/combo/max(30)#3.circuit.ts | 46 + .../output/combo/max(30)#3.output.json | 334 ++ .../output/combo/max(30).build.json | 14 + .../output/combo/max(30).circuit.ts | 54 + .../output/combo/max(30).output.json | 322 ++ .../receipt+tx+mapping+storage.build.json | 14 + .../receipt+tx+mapping+storage.circuit.ts | 48 + .../receipt+tx+mapping+storage.output.json | 266 ++ .../combo/receipt+tx+mapping.build.json | 14 + .../combo/receipt+tx+mapping.circuit.ts | 40 + .../combo/receipt+tx+mapping.output.json | 278 ++ .../output/combo/receipt+tx.build.json | 14 + .../output/combo/receipt+tx.circuit.ts | 34 + .../output/combo/receipt+tx.output.json | 187 + .../output/header/8_mixed.build.json | 14 + .../output/header/8_mixed.circuit.ts | 33 + .../output/header/8_mixed.output.json | 91 + .../output/header/8_state_root.build.json | 14 + .../output/header/8_state_root.circuit.ts | 28 + .../output/header/8_state_root.output.json | 91 + .../mapping/different_blocks.build.json | 14 + .../mapping/different_blocks.circuit.ts | 27 + .../mapping/different_blocks.output.json | 118 + .../output/mapping/different_keys.build.json | 14 + .../output/mapping/different_keys.circuit.ts | 27 + .../output/mapping/different_keys.output.json | 118 + .../output/receipt/diff_block.build.json | 14 + .../output/receipt/diff_block.circuit.ts | 28 + .../output/receipt/diff_block.output.json | 115 + .../same_receipt_diff_fields.build.json | 14 + .../same_receipt_diff_fields.circuit.ts | 29 + .../same_receipt_diff_fields.output.json | 106 + .../output/storage/7_empty_slot.build.json | 14 + .../output/storage/7_empty_slot.circuit.ts | 28 + .../output/storage/7_empty_slot.output.json | 90 + .../output/storage/7_slots.build.json | 14 + .../output/storage/7_slots.circuit.ts | 28 + .../output/storage/7_slots.output.json | 90 + .../output/tx/diff_block_diff_tx.build.json | 14 + .../output/tx/diff_block_diff_tx.circuit.ts | 27 + .../output/tx/diff_block_diff_tx.output.json | 99 + .../tx/diff_block_diff_tx_legacy.build.json | 14 + .../tx/diff_block_diff_tx_legacy.circuit.ts | 27 + .../tx/diff_block_diff_tx_legacy.output.json | 99 + .../output/tx/same_block_diff_tx.build.json | 14 + .../output/tx/same_block_diff_tx.circuit.ts | 27 + .../output/tx/same_block_diff_tx.output.json | 99 + harness/test/utils.ts | 28 + harness/tsconfig.json | 41 + readme.md | 8 +- 105 files changed, 9725 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 client/src/cli/components.ts create mode 100644 harness/.prettierrc create mode 100644 harness/jest.config.js create mode 100644 harness/package.json create mode 100644 harness/pnpm-lock.yaml create mode 100644 harness/readme.md create mode 100644 harness/scripts/postBuild.js create mode 100644 harness/src/index.ts create mode 100644 harness/src/run.ts create mode 100644 harness/src/template/buildCircuit.ts create mode 100644 harness/src/template/template.circuit create mode 100644 harness/test/integration/goerli.test.ts create mode 100644 harness/test/integration/input/account/7_balance.js create mode 100644 harness/test/integration/input/account/7_different_account_balance.js create mode 100644 harness/test/integration/input/combo/default.js create mode 100644 harness/test/integration/input/combo/max(128).js create mode 100644 harness/test/integration/input/combo/max(30)#2.js create mode 100644 harness/test/integration/input/combo/max(30)#3.js create mode 100644 harness/test/integration/input/combo/max(30).js create mode 100644 harness/test/integration/input/combo/receipt+tx+mapping+storage.js create mode 100644 harness/test/integration/input/combo/receipt+tx+mapping.js create mode 100644 harness/test/integration/input/combo/receipt+tx.js create mode 100644 harness/test/integration/input/header/8_mixed.js create mode 100644 harness/test/integration/input/header/8_state_root.js create mode 100644 harness/test/integration/input/mapping/different_blocks.js create mode 100644 harness/test/integration/input/mapping/different_keys.js create mode 100644 harness/test/integration/input/receipt/diff_block.js create mode 100644 harness/test/integration/input/receipt/same_receipt_diff_fields.js create mode 100644 harness/test/integration/input/storage/7_empty_slot.js create mode 100644 harness/test/integration/input/storage/7_slots.js create mode 100644 harness/test/integration/input/tx/diff_block_diff_tx.js create mode 100644 harness/test/integration/input/tx/diff_block_diff_tx_legacy.js create mode 100644 harness/test/integration/input/tx/same_block_diff_tx.js create mode 100644 harness/test/integration/output/account/7_balance.build.json create mode 100644 harness/test/integration/output/account/7_balance.circuit.ts create mode 100644 harness/test/integration/output/account/7_balance.output.json create mode 100644 harness/test/integration/output/account/7_different_account_balance.build.json create mode 100644 harness/test/integration/output/account/7_different_account_balance.circuit.ts create mode 100644 harness/test/integration/output/account/7_different_account_balance.output.json create mode 100644 harness/test/integration/output/combo/default.build.json create mode 100644 harness/test/integration/output/combo/default.circuit.ts create mode 100644 harness/test/integration/output/combo/default.output.json create mode 100644 harness/test/integration/output/combo/max(128).build.json create mode 100644 harness/test/integration/output/combo/max(128).circuit.ts create mode 100644 harness/test/integration/output/combo/max(128).output.json create mode 100644 harness/test/integration/output/combo/max(30)#2.build.json create mode 100644 harness/test/integration/output/combo/max(30)#2.circuit.ts create mode 100644 harness/test/integration/output/combo/max(30)#2.output.json create mode 100644 harness/test/integration/output/combo/max(30)#3.build.json create mode 100644 harness/test/integration/output/combo/max(30)#3.circuit.ts create mode 100644 harness/test/integration/output/combo/max(30)#3.output.json create mode 100644 harness/test/integration/output/combo/max(30).build.json create mode 100644 harness/test/integration/output/combo/max(30).circuit.ts create mode 100644 harness/test/integration/output/combo/max(30).output.json create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping+storage.build.json create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping+storage.circuit.ts create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping+storage.output.json create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping.build.json create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping.circuit.ts create mode 100644 harness/test/integration/output/combo/receipt+tx+mapping.output.json create mode 100644 harness/test/integration/output/combo/receipt+tx.build.json create mode 100644 harness/test/integration/output/combo/receipt+tx.circuit.ts create mode 100644 harness/test/integration/output/combo/receipt+tx.output.json create mode 100644 harness/test/integration/output/header/8_mixed.build.json create mode 100644 harness/test/integration/output/header/8_mixed.circuit.ts create mode 100644 harness/test/integration/output/header/8_mixed.output.json create mode 100644 harness/test/integration/output/header/8_state_root.build.json create mode 100644 harness/test/integration/output/header/8_state_root.circuit.ts create mode 100644 harness/test/integration/output/header/8_state_root.output.json create mode 100644 harness/test/integration/output/mapping/different_blocks.build.json create mode 100644 harness/test/integration/output/mapping/different_blocks.circuit.ts create mode 100644 harness/test/integration/output/mapping/different_blocks.output.json create mode 100644 harness/test/integration/output/mapping/different_keys.build.json create mode 100644 harness/test/integration/output/mapping/different_keys.circuit.ts create mode 100644 harness/test/integration/output/mapping/different_keys.output.json create mode 100644 harness/test/integration/output/receipt/diff_block.build.json create mode 100644 harness/test/integration/output/receipt/diff_block.circuit.ts create mode 100644 harness/test/integration/output/receipt/diff_block.output.json create mode 100644 harness/test/integration/output/receipt/same_receipt_diff_fields.build.json create mode 100644 harness/test/integration/output/receipt/same_receipt_diff_fields.circuit.ts create mode 100644 harness/test/integration/output/receipt/same_receipt_diff_fields.output.json create mode 100644 harness/test/integration/output/storage/7_empty_slot.build.json create mode 100644 harness/test/integration/output/storage/7_empty_slot.circuit.ts create mode 100644 harness/test/integration/output/storage/7_empty_slot.output.json create mode 100644 harness/test/integration/output/storage/7_slots.build.json create mode 100644 harness/test/integration/output/storage/7_slots.circuit.ts create mode 100644 harness/test/integration/output/storage/7_slots.output.json create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx.build.json create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx.circuit.ts create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx.output.json create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx_legacy.build.json create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx_legacy.circuit.ts create mode 100644 harness/test/integration/output/tx/diff_block_diff_tx_legacy.output.json create mode 100644 harness/test/integration/output/tx/same_block_diff_tx.build.json create mode 100644 harness/test/integration/output/tx/same_block_diff_tx.circuit.ts create mode 100644 harness/test/integration/output/tx/same_block_diff_tx.output.json create mode 100644 harness/test/utils.ts create mode 100644 harness/tsconfig.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..c003210b --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,38 @@ +name: Test + +on: + push: + branches: + - main + pull_request: + +jobs: + build: + name: Jest Testing + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Use Node.js 18.x + uses: actions/setup-node@v2 + with: + node-version: 18.x + + - name: Build Client + working-directory: ./client + run: npm install && npm run build + + - name: Install Harness dependencies + working-directory: ./harness + run: npm install + + - name: Run Integration Tests + working-directory: ./harness + run: | + export PROVIDER_URI_GOERLI=${{ secrets.PROVIDER_URI_GOERLI }} + ANVIL_PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + export PRIVATE_KEY=$ANVIL_PRIVATE_KEY # just needs to be in the correct format, no tx is sent in unit tests + export PRIVATE_KEY_GOERLI=$ANVIL_PRIVATE_KEY + npm run test diff --git a/.gitignore b/.gitignore index 27e89cb2..2fbfbf80 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ .env +.DS_Store node_modules dist data -build \ No newline at end of file +build +debug/ \ No newline at end of file diff --git a/client/package.json b/client/package.json index f1661122..50379c59 100644 --- a/client/package.json +++ b/client/package.json @@ -8,7 +8,7 @@ "browser": "web/index.js", "types": "web/index.d.ts", "scripts": { - "build": "rm -rf ./dist/* && tsc && ts-node scripts/postTsc.js", + "build": "rm -rf ./dist/* && tsc && tsx scripts/postTsc.js", "build:docs": "./scripts/buildDocs.sh" }, "publishConfig": { @@ -23,8 +23,8 @@ "crypto" ], "dependencies": { - "@axiom-crypto/core": "^2.2.50", "@axiom-crypto/circuit": "0.1.3", + "@axiom-crypto/core": "^2.2.50", "@axiom-crypto/halo2-lib-js": "0.2.13-alpha.1", "@axiom-crypto/halo2-wasm": "0.2.10", "@axiom-crypto/tools": "^0.3.33", @@ -38,6 +38,7 @@ "dts-bundle-generator": "^9.0.0", "jest": "^29.7.0", "tslib": "^2.6.2", + "tsx": "^4.6.2", "typescript": "^5.3.2" } } diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml index e98c37e8..3df12dbc 100644 --- a/client/pnpm-lock.yaml +++ b/client/pnpm-lock.yaml @@ -46,6 +46,9 @@ devDependencies: tslib: specifier: ^2.6.2 version: 2.6.2 + tsx: + specifier: ^4.6.2 + version: 4.6.2 typescript: specifier: ^5.3.2 version: 5.3.3 @@ -466,6 +469,204 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} @@ -1305,6 +1506,36 @@ packages: is-arrayish: 0.2.1 dev: true + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -1476,6 +1707,12 @@ packages: engines: {node: '>=10'} dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -2375,6 +2612,10 @@ packages: engines: {node: '>=8'} dev: true + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -2564,6 +2805,17 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true + /tsx@4.6.2: + resolution: {integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} diff --git a/client/scripts/postTsc.js b/client/scripts/postTsc.js index 9be02103..30789c2a 100644 --- a/client/scripts/postTsc.js +++ b/client/scripts/postTsc.js @@ -19,7 +19,7 @@ function copyPackageJson() { } function copyReadme() { - fs.copyFileSync("./README.md", "./dist/README.md"); + fs.copyFileSync("./readme.md", "./dist/readme.md"); } copyPackageJson(); diff --git a/client/src/cli/components.ts b/client/src/cli/components.ts new file mode 100644 index 00000000..b121c711 --- /dev/null +++ b/client/src/cli/components.ts @@ -0,0 +1,7 @@ +// For external export + +import { compile } from "@axiom-crypto/circuit"; +import { run } from "@axiom-crypto/circuit"; +import { sendQuery } from "./sendQuery"; + +export { compile, run, sendQuery }; \ No newline at end of file diff --git a/client/src/cli/index.ts b/client/src/cli/index.ts index c9df5059..31e57145 100644 --- a/client/src/cli/index.ts +++ b/client/src/cli/index.ts @@ -3,9 +3,9 @@ import { compile } from "@axiom-crypto/circuit"; import { run } from "@axiom-crypto/circuit"; import { sendQuery } from "./sendQuery"; -const program = new Command(); +const program = new Command('axiom'); -program.name("axiom").version("0.1.1").description("axiom CLI"); +program.name("axiom").version("0.1.3").description("Axiom CLI"); program .command("compile") diff --git a/harness/.prettierrc b/harness/.prettierrc new file mode 100644 index 00000000..9147c56a --- /dev/null +++ b/harness/.prettierrc @@ -0,0 +1,9 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "semi": true, + "trailingComma": "all", + "bracketSpacing": true +} + \ No newline at end of file diff --git a/harness/jest.config.js b/harness/jest.config.js new file mode 100644 index 00000000..e42c5eee --- /dev/null +++ b/harness/jest.config.js @@ -0,0 +1,10 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +require('dotenv').config({ + path: '.env' +}); + +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + modulePathIgnorePatterns: ["/dist/"], +}; \ No newline at end of file diff --git a/harness/package.json b/harness/package.json new file mode 100644 index 00000000..863f2019 --- /dev/null +++ b/harness/package.json @@ -0,0 +1,46 @@ +{ + "name": "@axiom-crypto/harness", + "version": "0.1.4", + "author": "Intrinsic Technologies", + "license": "MIT", + "description": "Circuit harness for axiom-client", + "scripts": { + "build": "rm -rf dist && tsc && tsx scripts/postBuild.js", + "test": "jest" + }, + "bin": { + "harness": "./index.js" + }, + "publishConfig": { + "directory": "dist" + }, + "keywords": [ + "axiom", + "ethereum", + "zero knowledge", + "zk", + "coprocessor", + "crypto" + ], + "dependencies": { + "@axiom-crypto/client": "file:../client/dist", + "@axiom-crypto/core": "^2.2.50", + "@axiom-crypto/halo2-lib-js": "0.2.13-alpha.1", + "@axiom-crypto/halo2-wasm": "0.2.10", + "@axiom-crypto/tools": "^0.3.33", + "commander": "^11.1.0", + "ethers": "^6.8.1", + "viem": "^1.19.9" + }, + "devDependencies": { + "@types/jest": "^29.5.11", + "@types/node": "18.15.13", + "dotenv": "^16.3.1", + "dts-bundle-generator": "^9.0.0", + "jest": "^29.7.0", + "ts-jest": "^29.1.1", + "tslib": "^2.6.2", + "tsx": "^4.6.2", + "typescript": "^5.3.2" + } +} diff --git a/harness/pnpm-lock.yaml b/harness/pnpm-lock.yaml new file mode 100644 index 00000000..78235818 --- /dev/null +++ b/harness/pnpm-lock.yaml @@ -0,0 +1,3074 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@axiom-crypto/client': + specifier: file:../client/dist + version: file:../client/dist(typescript@5.3.3) + '@axiom-crypto/core': + specifier: ^2.2.50 + version: 2.2.50 + '@axiom-crypto/halo2-lib-js': + specifier: 0.2.13-alpha.1 + version: 0.2.13-alpha.1 + '@axiom-crypto/halo2-wasm': + specifier: 0.2.10 + version: 0.2.10 + '@axiom-crypto/tools': + specifier: ^0.3.33 + version: 0.3.33 + commander: + specifier: ^11.1.0 + version: 11.1.0 + ethers: + specifier: ^6.8.1 + version: 6.9.0 + viem: + specifier: ^1.19.9 + version: 1.19.13(typescript@5.3.3) + +devDependencies: + '@types/jest': + specifier: ^29.5.11 + version: 29.5.11 + '@types/node': + specifier: 18.15.13 + version: 18.15.13 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + dts-bundle-generator: + specifier: ^9.0.0 + version: 9.0.0 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@18.15.13) + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.23.6)(jest@29.7.0)(typescript@5.3.3) + tslib: + specifier: ^2.6.2 + version: 2.6.2 + tsx: + specifier: ^4.6.2 + version: 4.6.2 + typescript: + specifier: ^5.3.2 + version: 5.3.3 + +packages: + + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: false + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@axiom-crypto/circuit@0.1.3(typescript@5.3.3): + resolution: {integrity: sha512-bUiRThj/6+WqMCq8vqBtolt1R7tJuJhlAZLcUIk1YzbXeTgR6ikz2CiY33yf8hJKxeaNY9fqjT3JgIxu38Z2SA==} + dependencies: + '@axiom-crypto/core': 2.2.50 + '@axiom-crypto/halo2-lib-js': 0.2.13-alpha.1 + '@axiom-crypto/halo2-wasm': 0.2.10 + '@axiom-crypto/tools': 0.3.33 + commander: 11.1.0 + ethers: 6.9.0 + viem: 1.19.13(typescript@5.3.3) + transitivePeerDependencies: + - bufferutil + - debug + - typescript + - utf-8-validate + - zod + dev: false + + /@axiom-crypto/core@2.2.50: + resolution: {integrity: sha512-SWiTntwZsgpvnsCdGxajcnQ1H6sOil9L6l451B0892gSz1pC/XkyZ61JN+IwgUZFdNhF5B+hFdzK+WaMO7GAbw==} + dependencies: + '@axiom-crypto/halo2-lib-js': 0.2.10 + '@axiom-crypto/halo2-wasm': 0.2.7 + '@axiom-crypto/tools': 0.3.33 + axios: 1.6.2 + bs58: 5.0.0 + ethers: 6.9.0 + merkletreejs: 0.3.11 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + + /@axiom-crypto/halo2-lib-js@0.2.10: + resolution: {integrity: sha512-gvO9fqB/w10q0RRoZ+Q9utvcWcDldHqIl4Jf8t9luoI+vXipZlyT8NIStykOvd6g64guymCnMeAv2vvObvHxIA==} + dependencies: + '@axiom-crypto/halo2-wasm': 0.2.7 + ethers: 6.9.0 + prettier: 1.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@axiom-crypto/halo2-lib-js@0.2.13-alpha.1: + resolution: {integrity: sha512-RACC6uGkVNNZDJwsT7yrF/XEq9oSB/hylup78V8JYlYhp3/dZ6fAnbiEPuTe9xFMqDpIYeTN7KO/h6VEqktZfw==} + dependencies: + '@axiom-crypto/halo2-wasm': 0.2.10 + ethers: 6.9.0 + prettier: 1.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@axiom-crypto/halo2-wasm@0.2.10: + resolution: {integrity: sha512-88VPIGeLUPYp+kIgKuJ4QBAKZ5SbwtJheBca5DuZdyb/9vGZ02gyeyQe6/2N7yVDIn3hupHhgfAc4mqm1/4ddw==} + dev: false + + /@axiom-crypto/halo2-wasm@0.2.7: + resolution: {integrity: sha512-pmgFCkCJUlFgh5NCLR59WpWIiBegNxBRAAlA2UxPMga1Pba02ynZgf6SW0tbQaezMiWUdTA9SfpeosovcNI6Yg==} + dev: false + + /@axiom-crypto/tools@0.3.33: + resolution: {integrity: sha512-1ABAgXIZ2bNqHKTBcYGsL0tNQrX6PLM/1fHnkuT6g4WgHBMCoZuXyuTQK/CdoxsK/L3y253v9YW/5WOD9FI0Og==} + dependencies: + ethers: 6.9.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@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 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@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.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@ethereumjs/rlp@4.0.1: + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + dev: false + + /@ethereumjs/util@8.1.0: + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: false + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@18.15.13) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.15.13 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 18.15.13 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 18.15.13 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@noble/curves@1.1.0: + resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + dependencies: + '@noble/hashes': 1.3.1 + dev: false + + /@noble/curves@1.2.0: + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + dependencies: + '@noble/hashes': 1.3.2 + dev: false + + /@noble/hashes@1.3.1: + resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + engines: {node: '>= 16'} + dev: false + + /@noble/hashes@1.3.2: + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + dev: false + + /@scure/base@1.1.4: + resolution: {integrity: sha512-wznebWtt+ejH8el87yuD4i9xLSbYZXf1Pe4DY0o/zq/eg5I0VQVXVbFs6XIM0pNVCJ/uE3t5wI9kh90mdLUxtw==} + dev: false + + /@scure/bip32@1.3.1: + resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/base': 1.1.4 + dev: false + + /@scure/bip32@1.3.2: + resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} + dependencies: + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.4 + dev: false + + /@scure/bip39@1.2.1: + resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + dependencies: + '@noble/hashes': 1.3.2 + '@scure/base': 1.1.4 + dev: false + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.7 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + dev: true + + /@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 18.15.13 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jest@29.5.11: + resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /abitype@0.9.8(typescript@5.3.3): + resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + dependencies: + typescript: 5.3.3 + dev: false + + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: false + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /babel-jest@29.7.0(@babel/core@7.23.6): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.6 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.6) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.4 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.6): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + dev: false + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + dev: false + + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: false + + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001568 + electron-to-chromium: 1.4.611 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + dev: false + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + dev: false + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001568: + resolution: {integrity: sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-jest@29.7.0(@types/node@18.15.13): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.15.13) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + dev: true + + /dts-bundle-generator@9.0.0: + resolution: {integrity: sha512-4XPDOb+F1fkPrvqFL4hnNW2Edc3uiFxQDsK8gUMP8/45+QkA+dSOH0ZWZCKXEjA3ITVbPGV1li8oP8JE4Z/Y0g==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + typescript: 5.3.3 + yargs: 17.7.2 + dev: true + + /electron-to-chromium@1.4.611: + resolution: {integrity: sha512-ZtRpDxrjHapOwxtv+nuth5ByB8clyn8crVynmRNGO3wG3LOp8RTcyZDqwaI6Ng6y8FCK2hVZmJoqwCskKbNMaw==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: false + + /ethereum-cryptography@2.1.2: + resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + dependencies: + '@noble/curves': 1.1.0 + '@noble/hashes': 1.3.1 + '@scure/bip32': 1.3.1 + '@scure/bip39': 1.2.1 + dev: false + + /ethers@6.9.0: + resolution: {integrity: sha512-pmfNyQzc2mseLe91FnT2vmNaTt8dDzhxZ/xItAV7uGsF4dI4ek2ufMu3rAkgQETL/TIs0GS5A+U05g9QyWnv3Q==} + engines: {node: '>=14.0.0'} + 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 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isows@1.0.3(ws@8.13.0): + resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: false + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0(@types/node@18.15.13): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.15.13) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@18.15.13) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@18.15.13): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + babel-jest: 29.7.0(@babel/core@7.23.6) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 18.15.13 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 18.15.13 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.15.13 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0(@types/node@18.15.13): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@18.15.13) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.3 + dev: false + + /micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /prettier@1.18.2: + resolution: {integrity: sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: false + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false + + /ts-jest@29.1.1(@babel/core@7.23.6)(jest@29.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.6 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@18.15.13) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.5.4 + typescript: 5.3.3 + yargs-parser: 21.1.1 + dev: true + + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /tsx@4.6.2: + resolution: {integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: false + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /viem@1.19.13(typescript@5.3.3): + resolution: {integrity: sha512-DizIwJAecLedI+nq6c5LIqCLAnYXUhQX5BnH6o1H2ln6isPyJVf+v4H1IfMlRHgR5KRlC+wGI/mCjarr3tW6eg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + 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: 0.9.8(typescript@5.3.3) + isows: 1.0.3(ws@8.13.0) + typescript: 5.3.3 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: false + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /web3-utils@1.10.3: + resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + 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 + dev: false + + /ws@8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + 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 + dev: false + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + 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.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + file:../client/dist(typescript@5.3.3): + resolution: {directory: ../client/dist, type: directory} + id: file:../client/dist + name: '@axiom-crypto/client' + hasBin: true + dependencies: + '@axiom-crypto/circuit': 0.1.3(typescript@5.3.3) + '@axiom-crypto/core': 2.2.50 + '@axiom-crypto/halo2-lib-js': 0.2.13-alpha.1 + '@axiom-crypto/halo2-wasm': 0.2.10 + '@axiom-crypto/tools': 0.3.33 + commander: 11.1.0 + ethers: 6.9.0 + viem: 1.19.13(typescript@5.3.3) + transitivePeerDependencies: + - bufferutil + - debug + - typescript + - utf-8-validate + - zod + dev: false + +publishDirectory: dist diff --git a/harness/readme.md b/harness/readme.md new file mode 100644 index 00000000..586417b9 --- /dev/null +++ b/harness/readme.md @@ -0,0 +1,30 @@ +# axiom-client harness + +Client harness that allows for easy circuit parameter generation + +Run via: + +``` +npx harness run +``` + +Saves output to ./data/ unless a different output directory is specified. + +## Javascript circuit format + +Code and input should be in the same file, with input parameters specified as a Javascript object called `const input = {...}`. + +Example circuit.js file: + +```javascript +for (let i = 0; i < 7; i++) { + const acct = getAccount(add(claimedBlockNumber, i), address); + const balance = await acct.balance(); + addToCallback(balance); +} + +const input = { + address: "0x897dDbe14c9C7736EbfDC58461355697FbF70048", + claimedBlockNumber: 9173677, +}; +``` \ No newline at end of file diff --git a/harness/scripts/postBuild.js b/harness/scripts/postBuild.js new file mode 100644 index 00000000..bace371c --- /dev/null +++ b/harness/scripts/postBuild.js @@ -0,0 +1,25 @@ +// Functions that are to be run after the typescript compiler runs + +const fs = require("fs"); +const packageJson = require("../package.json"); + +// Copies a modified version of package.json to the /dist folder +function copyPackageJson() { + let packageJsonCopy = { ...packageJson }; + delete packageJsonCopy.scripts; + delete packageJsonCopy.devDependencies; + delete packageJsonCopy.publishConfig; + fs.writeFileSync('./dist/package.json', JSON.stringify(packageJsonCopy, null, 2)); +} + +function copyReadme() { + fs.copyFileSync("./readme.md", "./dist/readme.md"); +} + +function copyTemplate() { + fs.copyFileSync("./src/template/template.circuit", "./dist/template/template.circuit"); +} + +copyPackageJson(); +copyReadme(); +copyTemplate(); \ No newline at end of file diff --git a/harness/src/index.ts b/harness/src/index.ts new file mode 100644 index 00000000..17248095 --- /dev/null +++ b/harness/src/index.ts @@ -0,0 +1,20 @@ +import { Command } from "commander"; +import { run } from "./run"; + +const harness = new Command('harness'); + +harness + .name("harness") + .version("0.1.4") + .description("Axiom circuit harness"); + +harness + .command("run") + .description("Get circuit parameters from javascript circuit") + .argument("", "js circuit path") + .option("-o, --output [output]", "output folder", "data") + .option("-f, --function [function]", "function name", "circuit") + .option("-p, --provider [provider]", "provider") + .action(run); + +harness.parseAsync(process.argv); diff --git a/harness/src/run.ts b/harness/src/run.ts new file mode 100644 index 00000000..a3f6d6b2 --- /dev/null +++ b/harness/src/run.ts @@ -0,0 +1,49 @@ +import { buildCircuit } from "./template/buildCircuit"; +import path from 'path'; +import fs from 'fs'; +import { compile, run as circuitRun } from "@axiom-crypto/client/cli/components"; + +export const run = async ( + inputPath: string, + options: { + output: string, + function: string, + provider?: string, + } +) => { + const fileName = inputPath.split("/").slice(-1)[0].split(".js")[0]; + const outputFileBase = `${options.output}/${fileName}`; + + // Build the typescript circuit + const circuit = buildCircuit(inputPath); + const circuitPath = path.resolve(`${outputFileBase}.circuit.ts`); + + // Write the typescript circuit + fs.mkdirSync(path.resolve(options.output), { recursive: true }); + fs.writeFileSync(circuitPath, circuit); + + // Compile the circuit + const buildFile = `${outputFileBase}.build.json`; + await compile( + circuitPath, + { + stats: false, + function: options.function, + output: buildFile, + provider: options.provider, + } + ); + + // Run the circuit + const outputFile = `${outputFileBase}.output.json`; + await circuitRun( + circuitPath, + { + stats: false, + build: buildFile, + function: options.function, + output: outputFile, + provider: options.provider, + } + ); +}; diff --git a/harness/src/template/buildCircuit.ts b/harness/src/template/buildCircuit.ts new file mode 100644 index 00000000..3ae25771 --- /dev/null +++ b/harness/src/template/buildCircuit.ts @@ -0,0 +1,80 @@ +import fs from 'fs'; +import path from 'path'; + +const getCircuitInterfaceFromInput = (inputs: string) => { + let inputNames = inputs.split("\n").map((line) => line.split(":")[0].trim()); + let inputTypes = inputs.split("\n").map((line) => line.split(":")[1].trim()); + let circuitValueTypes: string[] = []; + for (let val of inputTypes) { + if (Array.isArray(val)) { + if (String(val[0]).length == 66) { + circuitValueTypes.push("CircuitValue256[]"); + } + else { + circuitValueTypes.push("CircuitValue[]"); + } + } + else if (String(val).length == 66) { + circuitValueTypes.push("CircuitValue256"); + } + else { + circuitValueTypes.push("CircuitValue"); + } + } + let newInputs = inputNames.map((name, i) => ` ${name}: ${circuitValueTypes[i]}`).join(";\n").concat(";"); + return newInputs; +} + +export const buildCircuit = (circuitPath: string): string => { + // Parse path + let parsedFilename = circuitPath.split("/").slice(-1)[0]; + parsedFilename = parsedFilename.split(".js")[0] + ".circuit.ts"; + + // Load the input circuit and template + let circuit = fs.readFileSync(path.resolve(__dirname, "template.circuit")).toString(); + let inputCircuit = fs.readFileSync(path.resolve(circuitPath)).toString(); + + // Check if inputCircuit defines an input object + let inputObject = inputCircuit.match(/const input = {[\s\S]*}[;]*/); + if (inputObject) { + // Split out extraneous lines in input + let inputs = inputObject[0].split("\n").slice(1, -1).join("\n"); + + // Replace the input object in the template with the input object from the input circuit + circuit = circuit.replace(" // $input", inputs); + + // Remove the input object from the input circuit + inputCircuit = inputCircuit.replace(inputObject[0], ""); + + // Get input types + const circuitValueInputs = getCircuitInterfaceFromInput(inputs); + circuit = circuit.replace(" // $typeInputs", circuitValueInputs); + + let inputNames = inputs.split("\n").map((line) => line.split(":")[0]).join(",\n").concat(","); + circuit = circuit.replace(" // $cvInputs", inputNames); + } + + // Add the tabbed input circuit to the circuit template + circuit = circuit.replace(" // $circuit", "\n " + inputCircuit.replace(/\n/g, "\n ")); + + // Get template imports + let imports = circuit.match(/import {[\s\S]*} from "@axiom-crypto\/client";/); + if (!imports) { + throw new Error("Could not find imports in circuit"); + } + let importArray = imports[0].split("\n").slice(1, -1).map((line) => line.trim().split(",")[0]); + + // Check which imports are used in the input circuit + importArray = importArray.filter((imp) => { + if (imp == "CircuitValue" || imp == "CircuitValue256") { + return true; + } + return inputCircuit.includes(imp); + }); + const usedImports = `import {\n${importArray.join(",\n").concat(",")}\n} from "@axiom-crypto/client";`; + + // Replace template imports with used imports + circuit = circuit.replace(imports[0], usedImports); + + return circuit; +} \ No newline at end of file diff --git a/harness/src/template/template.circuit b/harness/src/template/template.circuit new file mode 100644 index 00000000..cd7a6b80 --- /dev/null +++ b/harness/src/template/template.circuit @@ -0,0 +1,70 @@ +import { + CircuitValue, + CircuitValue256, + constant, + witness, + getHeader, + getAccount, + getStorage, + getReceipt, + getTx, + getSolidityMapping, + addToCallback, + add, + mul, + sub, + div, + mod, + pow, + neg, + mulAdd, + mulNot, + assertBit, + assertIsConst, + innerProduct, + and, + or, + not, + dec, + select, + orAnd, + bitsToIndicator, + idxToIndicator, + selectByIndicator, + selectFromIdx, + isZero, + isEqual, + numToBits, + checkEqual, + rangeCheck, + checkLessThan, + isLessThan, + poseidon, + value, + log, + ecdsaBenchmark, + newCircuitValue256, + loadBn254Fq, + convertBn254FqToCircuitValue256, + loadBn254G1, + bn254G1Sum, + bn254G1SubUnequal, + loadBn254G2, + bn254G2Sum, + bn254PairingCheck, + loadSecp256k1Pubkey, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + // $circuit +}; \ No newline at end of file diff --git a/harness/test/integration/goerli.test.ts b/harness/test/integration/goerli.test.ts new file mode 100644 index 00000000..7a60522b --- /dev/null +++ b/harness/test/integration/goerli.test.ts @@ -0,0 +1,45 @@ +import fs from 'fs'; +import { listDir, makeFileMap } from "../utils"; +import { run } from "../../src/run"; + +describe("Run", () => { + if (process.env.PROVIDER_URI_GOERLI == undefined) { + throw new Error("`PROVIDER_URI_GOERLI` environment variable must be defined"); + } + + const inputBasePath = "./test/integration/input"; + const outputBasePath = "./test/integration/output"; + const files = listDir(inputBasePath); + const fileMap = makeFileMap(files); + + for (let [folder, files] of Object.entries(fileMap)) { + for (let file of files) { + const inputFile = `${inputBasePath}/${folder}/${file}`; + const fileName = file.split(".js")[0]; + const outputBasePathType = `${outputBasePath}/${folder}`; + const outputFileBase = `${outputBasePathType}/${fileName}`; + + test(`Test ${folder}: ${inputFile}`, async () => { + console.log(`Running test: ${inputFile}`) + + // Run the circuit + await run( + inputFile, + { + output: outputBasePathType, + function: "circuit", + provider: process.env.PROVIDER_URI_GOERLI, + } + ); + + // Check build file exists + const buildFile = `${outputFileBase}.build.json`; + expect(fs.existsSync(buildFile)).toBe(true); + + // Check output file exists + const outputFile = `${outputFileBase}.output.json`; + expect(fs.existsSync(outputFile)).toBe(true); + }, 180000); + } + } +}); \ No newline at end of file diff --git a/harness/test/integration/input/account/7_balance.js b/harness/test/integration/input/account/7_balance.js new file mode 100644 index 00000000..463eedad --- /dev/null +++ b/harness/test/integration/input/account/7_balance.js @@ -0,0 +1,10 @@ +for (let i = 0; i < 7; i++) { + const acct = getAccount(add(claimedBlockNumber, i), address); + const balance = await acct.balance(); + addToCallback(balance); +} + +const input = { + address: "0x897dDbe14c9C7736EbfDC58461355697FbF70048", + claimedBlockNumber: 9173677, +}; diff --git a/harness/test/integration/input/account/7_different_account_balance.js b/harness/test/integration/input/account/7_different_account_balance.js new file mode 100644 index 00000000..100a2867 --- /dev/null +++ b/harness/test/integration/input/account/7_different_account_balance.js @@ -0,0 +1,5 @@ +const blockNumber = constant(1000000); +for (let i = 0; i < 7; i++) { + const acct = getAccount(blockNumber, "0x" + i.toString(16)); + addToCallback(await acct.balance()); +} diff --git a/harness/test/integration/input/combo/default.js b/harness/test/integration/input/combo/default.js new file mode 100644 index 00000000..7ddbda8b --- /dev/null +++ b/harness/test/integration/input/combo/default.js @@ -0,0 +1,97 @@ +// +// _ _____ ______ _____ _ +// /\ (_) | __ \| ____| __ \| | +// / \ __ ___ ___ _ __ ___ | |__) | |__ | |__) | | +// / /\ \ \ \/ / |/ _ \| '_ ` _ \| _ /| __| | ___/| | +// / ____ \ > <| | (_) | | | | | | | \ \| |____| | | |____ +// /_/ \_\/_/\_\_|\___/|_| |_| |_|_| \_\______|_| |______| +// +// + +// example Axiom REPL circuit to prove the first block an account transacted +// get the previous block number +const prevBlock = sub(claimedBlockNumber, constant(1)); + +//get the account at the previous block +const accountPrevBlock = getAccount(prevBlock, address); + +// get the account nonce at the previous block and assert that it is 0 +const prevNonce = (await accountPrevBlock.nonce()).toCircuitValue(); +checkEqual(prevNonce, constant(0)) + +// get the account nonce at the claimed block number +const account = getAccount(claimedBlockNumber, address); +const currNonce = (await account.nonce()).toCircuitValue(); + +//checks that currNonce > 0 at the claimed block +checkLessThan(constant(0), currNonce) + +// add the address and blockNumber to the callback, for it to be passed +// as a result to the callback client contract +addToCallback(address) +addToCallback(claimedBlockNumber); + +// Here is a list of all functions you can use to fetch on-chain data in the REPL. +// For more detailed docs and a list of all data and compute functions, see our +// preview docs at: +// +// https://docs.axiom.xyz/sdk-and-repl-reference/axiomrepl-reference +// + +// fetch block header data +let header = getHeader(block); +// access the timestamp field +let timestamp = await header.timestamp(); +// access the gasLimit field +let gasLimit = await header.gasLimit(); + +// fetch account data +let acct = getAccount(block, addr); +// access the account balance at `block` +let balance = await acct.balance(); +// access the nonce of the account at `block` +let nonce = await acct.nonce(); + +// fetch storage data +let storage = getStorage(block, addr); +// access the value at storage slot `slot` +let slotVal = await storage.slot(slot); + +// fetch Solidity mapping data +let mapping = getSolidityMapping(block, addr, mappingSlot); +// access the value in the mapping at `mappingSlot` with key `3` +let mappingVal = await mapping.key(3); + +// fetch transaction data, example is for the transaction below: +// https://goerli.etherscan.io/tx/0xa4f781ad033d6dab5b13e3ab7c7cbdbd0ea4c0a2be3d9ffa7ed1e53d2d5bcc46 +let tx = getTx(txBlockNumber, txIdx); +// get the 4-byte function selector that was called +let functionSelector = await tx.functionSelector(); +// access bytes [32, 64) of calldata +let calldata = await tx.calldata(1); + +// fetch receipt data, example is for the first event log in the transaction below +// Deposit (index_topic_1 address payor, uint256 amt) +// https://goerli.etherscan.io/tx/0xa4f781ad033d6dab5b13e3ab7c7cbdbd0ea4c0a2be3d9ffa7ed1e53d2d5bcc46 +// eventSchema = keccak(Deposit(address,uint256)) +const eventSchema = "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c"; +let receipt = getReceipt(txBlockNumber, txIdx); +// access the address that emitted the log event at index 0 +let logAddr = await receipt.log(0).address(); +// access the topic at index 1 of the log event at index 0 and check it has schema eventSchema +// because `address` is indexed in the event, this corresponds to `address` +let topic = await receipt.log(0).topic(1, eventSchema); +// access the first 32 bytes of data in the log event at index 0 +// because `amt` is not indexed, this corresponds to `amt` +let data = await receipt.log(0).data(0); + +const input = { + address: "0x897dDbe14c9C7736EbfDC58461355697FbF70048", + claimedBlockNumber: 9173677, + block: 9730000, + addr: "0x8dde5d4a8384f403f888e1419672d94c570440c9", + txBlockNumber: 9728956, + txIdx: 10, + slot: 2, + mappingSlot: 1 +} \ No newline at end of file diff --git a/harness/test/integration/input/combo/max(128).js b/harness/test/integration/input/combo/max(128).js new file mode 100644 index 00000000..e796b7f1 --- /dev/null +++ b/harness/test/integration/input/combo/max(128).js @@ -0,0 +1,34 @@ +for (let i = 0; i < 32; i++) { + let tx = getReceipt(9000050 + i, 0); + addToCallback(await tx.status()); +} + +for (let i = 0; i < 16; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} +for (let i = 0; i < 16; i++) { + let tx = getTx(10000000, i); + addToCallback((await tx.type()).toCircuitValue()); +} + +for (let i = 0; i < 16; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} + +const blockNumber = constant(5000000); +for (let i = 0; i < 8; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); +} + +for (let i = 0; i < 8; i++) { + const acct = getAccount(6000000 + i, "0xeD64bC9802B1e86b94f5E78Cc100827431AcD732"); + addToCallback((await acct.nonce()).toCircuitValue()); +} + +for (let i = 0; i < 32; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); +} diff --git a/harness/test/integration/input/combo/max(30)#2.js b/harness/test/integration/input/combo/max(30)#2.js new file mode 100644 index 00000000..35e276cc --- /dev/null +++ b/harness/test/integration/input/combo/max(30)#2.js @@ -0,0 +1,25 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} + +for (let i = 0; i < 3; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} + +const blockNumber = constant(5000000); +for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); +} + +for (let i = 0; i < 8; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); +} diff --git a/harness/test/integration/input/combo/max(30)#3.js b/harness/test/integration/input/combo/max(30)#3.js new file mode 100644 index 00000000..eb4c983b --- /dev/null +++ b/harness/test/integration/input/combo/max(30)#3.js @@ -0,0 +1,19 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} + +for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} + +for (let i = 0; i < 7; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); +} diff --git a/harness/test/integration/input/combo/max(30).js b/harness/test/integration/input/combo/max(30).js new file mode 100644 index 00000000..91dfad9c --- /dev/null +++ b/harness/test/integration/input/combo/max(30).js @@ -0,0 +1,25 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} + +for (let i = 0; i < 4; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} + +const blockNumber = constant(5000000); +for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); +} + +for (let i = 0; i < 7; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); +} diff --git a/harness/test/integration/input/combo/receipt+tx+mapping+storage.js b/harness/test/integration/input/combo/receipt+tx+mapping+storage.js new file mode 100644 index 00000000..fe1008e1 --- /dev/null +++ b/harness/test/integration/input/combo/receipt+tx+mapping+storage.js @@ -0,0 +1,20 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} + +for (let i = 0; i < 4; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} + +const blockNumber = constant(5000000); +for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); +} diff --git a/harness/test/integration/input/combo/receipt+tx+mapping.js b/harness/test/integration/input/combo/receipt+tx+mapping.js new file mode 100644 index 00000000..940af1e5 --- /dev/null +++ b/harness/test/integration/input/combo/receipt+tx+mapping.js @@ -0,0 +1,14 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} + +for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} diff --git a/harness/test/integration/input/combo/receipt+tx.js b/harness/test/integration/input/combo/receipt+tx.js new file mode 100644 index 00000000..cedbaeb7 --- /dev/null +++ b/harness/test/integration/input/combo/receipt+tx.js @@ -0,0 +1,9 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} + +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} diff --git a/harness/test/integration/input/header/8_mixed.js b/harness/test/integration/input/header/8_mixed.js new file mode 100644 index 00000000..1a9213d3 --- /dev/null +++ b/harness/test/integration/input/header/8_mixed.js @@ -0,0 +1,13 @@ +const header = getHeader(claimedBlockNumber); +addToCallback(await header.baseFeePerGas()); +addToCallback(await header.difficulty()); +addToCallback(await header.extraData()); +addToCallback(await header.timestamp()); +addToCallback(await header.miner()); +addToCallback(await header.mixHash()); +addToCallback(await header.nonce()); +addToCallback(await header.mixHash()); + +const input = { + claimedBlockNumber: 9173677, +}; diff --git a/harness/test/integration/input/header/8_state_root.js b/harness/test/integration/input/header/8_state_root.js new file mode 100644 index 00000000..1b084c25 --- /dev/null +++ b/harness/test/integration/input/header/8_state_root.js @@ -0,0 +1,8 @@ +for(let i=0; i<8; i++){ + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()) +} + +const input = { + claimedBlockNumber: 9173677, +} \ No newline at end of file diff --git a/harness/test/integration/input/mapping/different_blocks.js b/harness/test/integration/input/mapping/different_blocks.js new file mode 100644 index 00000000..0cedc7b2 --- /dev/null +++ b/harness/test/integration/input/mapping/different_blocks.js @@ -0,0 +1,4 @@ +for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); +} diff --git a/harness/test/integration/input/mapping/different_keys.js b/harness/test/integration/input/mapping/different_keys.js new file mode 100644 index 00000000..8486efd7 --- /dev/null +++ b/harness/test/integration/input/mapping/different_keys.js @@ -0,0 +1,4 @@ +let mapping = getSolidityMapping(9730000, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); +for (let i = 0; i < 7; i++) { + addToCallback(await mapping.key(i)); +} diff --git a/harness/test/integration/input/receipt/diff_block.js b/harness/test/integration/input/receipt/diff_block.js new file mode 100644 index 00000000..e353c650 --- /dev/null +++ b/harness/test/integration/input/receipt/diff_block.js @@ -0,0 +1,4 @@ +for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); +} diff --git a/harness/test/integration/input/receipt/same_receipt_diff_fields.js b/harness/test/integration/input/receipt/same_receipt_diff_fields.js new file mode 100644 index 00000000..caac889b --- /dev/null +++ b/harness/test/integration/input/receipt/same_receipt_diff_fields.js @@ -0,0 +1,7 @@ +for (let i = 0; i < 2; i++) { + let tx = getReceipt(9000050 + i, i); + await tx.blockNumber(); + await tx.cumulativeGas(); + await tx.txIdx(); + await tx.status(); +} diff --git a/harness/test/integration/input/storage/7_empty_slot.js b/harness/test/integration/input/storage/7_empty_slot.js new file mode 100644 index 00000000..48d8c6b5 --- /dev/null +++ b/harness/test/integration/input/storage/7_empty_slot.js @@ -0,0 +1,5 @@ +const blockNumber = 1000000; +for (let i = 0; i < 7; i++) { + const acct = getStorage(add(blockNumber, i), "0x" + i.toString(16)); + addToCallback(await acct.slot(i)); +} diff --git a/harness/test/integration/input/storage/7_slots.js b/harness/test/integration/input/storage/7_slots.js new file mode 100644 index 00000000..92a30c83 --- /dev/null +++ b/harness/test/integration/input/storage/7_slots.js @@ -0,0 +1,5 @@ +const blockNumber = 5000000; +for (let i = 0; i < 7; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); +} diff --git a/harness/test/integration/input/tx/diff_block_diff_tx.js b/harness/test/integration/input/tx/diff_block_diff_tx.js new file mode 100644 index 00000000..116dec77 --- /dev/null +++ b/harness/test/integration/input/tx/diff_block_diff_tx.js @@ -0,0 +1,4 @@ +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); +} diff --git a/harness/test/integration/input/tx/diff_block_diff_tx_legacy.js b/harness/test/integration/input/tx/diff_block_diff_tx_legacy.js new file mode 100644 index 00000000..4cf419d4 --- /dev/null +++ b/harness/test/integration/input/tx/diff_block_diff_tx_legacy.js @@ -0,0 +1,4 @@ +for (let i = 0; i < 8; i++) { + let tx = getTx(8000000 + i, i); // 8000001 is legacy tx + addToCallback(await tx.r()); +} diff --git a/harness/test/integration/input/tx/same_block_diff_tx.js b/harness/test/integration/input/tx/same_block_diff_tx.js new file mode 100644 index 00000000..a8858df5 --- /dev/null +++ b/harness/test/integration/input/tx/same_block_diff_tx.js @@ -0,0 +1,4 @@ +for (let i = 0; i < 8; i++) { + let tx = getTx(9000000, i); + addToCallback(await tx.r()); +} diff --git a/harness/test/integration/output/account/7_balance.build.json b/harness/test/integration/output/account/7_balance.build.json new file mode 100644 index 00000000..53879736 --- /dev/null +++ b/harness/test/integration/output/account/7_balance.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC0vbliyhUBYi61kEfDYMJGojvaZ/X5o7ebephzpBQA2LbZfvtWvIC+5C9HP134zBfcWCYNfkrmvw1m5+6624O0imuA2EFjPjwcXfew1BlLGbX6mcMlyxK7xkvxQ/AIrMgObFaq6nU7XFqxHKTqJJfNAP3YyqP5uDhx1h/d4hi0uBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+F7G/fRM20PZdFlNPbpCWiQ0yaUc5JhtwGN2rzz88WxFJbsppMaKJF7rhPsLXXS0WKrmv63XNQg3y2xyhkLA9hR6lKxiJDMcy0O10OdDO+G5pHNg8vtJBVOTwwxXp7GsclNNxr9657GJe8NpZf2DgJqkUgm81f4SJiqpkVG1YigSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH5lvwGrn/ZRILEUAdiARdPj5DtCnPQBmjlLpOMVYPrYoCHYOYhqpJEMRcJcuF53OVfC2+NhOzp0QFXfbT8k9Jgs=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x756666fb6ce721c7463c838d8ba999766b631787ecb4f09a93fd2d7e9ffbf689", + "inputSchema": "eyJhZGRyZXNzIjoiQ2lyY3VpdFZhbHVlIiwiY2xhaW1lZEJsb2NrTnVtYmVyIjoiQ2lyY3VpdFZhbHVlIn0=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7IGFkZHJlc3MsIGNsYWltZWRCbG9ja051bWJlciwgfSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldEFjY291bnQpKCgwLCBjbGllbnRfMS5hZGQpKGNsYWltZWRCbG9ja051bWJlciwgaSksIGFkZHJlc3MpOwogICAgICAgIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCBhY2N0LmJhbGFuY2UoKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYmFsYW5jZSk7CiAgICB9Cn0=" +} \ No newline at end of file diff --git a/harness/test/integration/output/account/7_balance.circuit.ts b/harness/test/integration/output/account/7_balance.circuit.ts new file mode 100644 index 00000000..4891c8a9 --- /dev/null +++ b/harness/test/integration/output/account/7_balance.circuit.ts @@ -0,0 +1,33 @@ +import { +CircuitValue, +CircuitValue256, +getAccount, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + address: "0x897dDbe14c9C7736EbfDC58461355697FbF70048", + claimedBlockNumber: 9173677, +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + address: CircuitValue; + claimedBlockNumber: CircuitValue; +} +export const circuit = async ({ + address, + claimedBlockNumber, +}: CircuitValueInputs) => { + + for (let i = 0; i < 7; i++) { + const acct = getAccount(add(claimedBlockNumber, i), address); + const balance = await acct.balance(); + addToCallback(balance); + } + + + +}; \ No newline at end of file diff --git a/harness/test/integration/output/account/7_balance.output.json b/harness/test/integration/output/account/7_balance.output.json new file mode 100644 index 00000000..787c66f8 --- /dev/null +++ b/harness/test/integration/output/account/7_balance.output.json @@ -0,0 +1,90 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0xc562ed60c110f4e0ca53d33b0e1fe0d1fc10db6d997001813ecd409d378f220c", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x977facb333a6cae3726c695dceea3b6a2a4ddce29428b70ddd989ea1fe60014f", + "0x25443655c0b66da8a310f273dd57db7843cd3800fa5d24c415c3e13b5f035a6b", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xc28c31d22d8f204e81b8fc714de26d87c1d4c756632cad0668655fd09220762a", + "0x2f3064cf682958accb92639a8a276e8d491b49c5f2d1557fe686e8805641f219", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xf4d1a7e36933bfb413c2f451097e4cd1ab67e8a4cb0a1bdac2d05284e48be45e" + ], + "computeProof": "0x000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000000000000000000000000000000000000000000000000000455899e612881000684c66ce700386fa52e89732554bc6912d4926e73d372611a2859ea1ae2fa84a434e81d8da3bbe3a861759b5564affef0466e0a0b0944c0ba0aeb81f8f4a136b425290111bca6307452fe7451cc8c05a4437f2f886025b7804264f183d6e4a4f71c90d9a431a8f5cfd35d51426efa59cef982b5b8d1dd41b5bbc0063bfaefb10bc8b795b3174366d110a58d0bdb2d6f2baf6d9734f104aa270ea387b6d4928625f34dcc19857f9318a116078eac3d442c6eb17e28a92d88d5a9afb9ca24fda06d372eb1490a19fe61c52c9c0d88428f4bbd8d02e979dddb305964f5d7b6047088c95f5cd284911b7597725b6a750524f8b6491abffe30f9b3c5929952476ec61dcda6b1bd2713953a2b9d9a87d545fb5bdf35bf860ea21d1ef59f68175b7886763efee0ab9839208143679ea7c067a96929d198181ffdefed4cc6e6e8c98fc10fd64c58ae2a7e59ad2357a0a9c4a7072ad725ae2934657b8827be6c5f5f408219dbbbd96abdf6a672abfc8ba8bfd53d4995a3e7d4404adbbf311aa34cc43314c3f5368666887e8d5f43ebbe0ad3c4e74661ad559ace351f3c6085fecdc82c16783a2edbbc1a2a4b506665a51135d1a989ede301e66af85628a36afd402462951b9278e3f8b11582a63dd6cf5c5c3f41666b2ec5fbfdb0cfafc3e8a5f4f0f9320549fbc9522d21a7fed599d0527c2dc9f9cb35ab717cd21ebe65b6bbf4b59e166b60c9afc7c93868233bb6e288fdd29051971fc1299591485e899ccea1d234029e73e258075ef6446c1990dc47aefac2a18b211c684cf2e37a69a989faaa29b2986a4fb6b5513b72d48df33a905dd62ee915422a53dba6fdb147653a7c7a57f08e8580680fe18d7e25ac22c75bc5981b32a9b5058232fcc24529de80f8f1f1d0b1e0cca58eadb9f277f131509dd1821c24590dfa74a182e748a0242c8e222072cd4570325d240ec003ef35e23e5495063e5ce000c7d43a2006cd3c7843fef5810767e9568a1027233cec47c8883a68887f17ef20b2e8bbce913808784bad7961a54cb1217bad81acb55bbd1be03c65b2179198830f6049ea7b948b14c8228880995a8a1e8118e8e776a02153aa443fd5b28b35d44b2c9b56661d0d0574eb67b05f15740e12061e4df176dd3b188bf930352efb8a9e4a2aa04a512b1f18c6b0e304eed81c51ee11e1aa29d2aa352b7bb38dc8cb68837bb648a4150d5e500171319fe06edce23ba258f01d4624351cf592a4bf970ebeffb8a02a2d914961e4a8905b36f3eccd2a272050d1c61d544b4bc96bcae50438770a5acf0795cbf147b550fee5e86abda39a189f7e564c16841b2d783c1380241569af1c4a3817c7fec8c1cd7e6a35f502ef8783af60d2810d89fe7db1ac3b13bc7e935fb1df7b98556b01e44c9592d125c4f03ebfc39a041c41fc1c207b3b37e6d7fb6ee1b96e444d5e709c9d6ef6b0ee451efbfa21c6692f5feefa278385418c87fd1fbffb398991f660da8c68c4598cc05d634565d753482de0b2c573ecaaaa068d92c56a972f25b3a2d967c0d8475363e0842efdd5efd4468dc044b0ab94b3c07472412331591470d14219632768dc9440834051c1b30c5f56c7a06472799c7b2effada8b75398bcc24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a555632f908527d91aac14b9888227573cf43aeca3d36e82da21c299b975371fbabe5f14e55336d8e83aa0582f10076adc7038bf707e490f7e8fbe898681a215b2e5ab53ede939ae35ae6260644ced3c0c8fd7489329f3c734afcb519653d31729d1af8c80a37b85fdfee35af923e8343db889423512d6bf0af7af975ead1009c9dfa08f5295c60eb75825641e1db0f3c55f91e46b33e918d12e63cdadb49515c1a22d5c0de33db4aba24a2a7ccf8f43086ad83bfac5eb9df522efdcc101382dcfa497e9430b7116ddfb49db18bde2c4225c9d02d85627a4a44840305271e62cd1fef0a00da6a8ec7426aa34be54a9c4c1febe707f6100e653f6b63de9044e2cd97062a7f9f9257c7f6cb967b49dfde8fd1a5f8abacae0cd957c63caecdd92223ed55cb1a5a0a7a6e99163cfb5e0f790b6a7c4ad938a2f6abb17c6a83e265113af5efb338c1461678be59f74ba7ff2398018934b8b55479be5eda89df17aa9044b07c1770284f15a848b8c8279247c61a4fa326f98a03910c34dc06941ded817d3f69679e31019fc8714fe809ab92fa666b14c3e17af442cdbbb75a54b36e30ed2553cc37ec557d0ffb51b83d24e912cd8455a95a2118923aeeb201b24fa432baac55dd679701341daef1f769bf2969a4872fc344a4d004d9a586f9b15ce690916af67cdc722d074debd7b529640d73a7d6c433e6e2a31f51b72983d8358e6072905a71d4c0e5f10b70ebdd168955fb1df1997b602e0594a4fd0528047bf650f31ed0f72dea26074bd074c680a823d7f3d9174ea78c5921728a802d9e5c1e503c8c7d1a84b410c4204f9265b04e79f1977daec5f71ef97a2630bc552d878fb2907931ed5616d893109e51ffebaf6949c6e2761b5fba09c5ab1cd58797d261806f01f2bd51397b8130e65b42577bc9653b0ec4509e0b173d317d92129d5b57f080419f1e5ba71f8af588d9995dcaa2f4b30e24fe64f07de056459a8879e4a6920935fe8124a3cb5cf1ff1d66b43c7fb4010b81cc5e94031882177c23f27f9a31cff649818d5f40baf25a7f3384faf2793ce977a505ec71680ec353ce902e0b60f2693352dc707b58dc3604b5558493b0aff3de7df6d65a3b5eb557b645ae59c1080807afc4a548f7ac80f0d977c6bef6922fa256cdc02b80a806348131fef030a", + "resultLen": 7 + }, + "computeResults": [ + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000", + "0x000000000000000000000000000000000000000000000000455899e612881000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9173677, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 1 + }, + "type": 2 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/account/7_different_account_balance.build.json b/harness/test/integration/output/account/7_different_account_balance.build.json new file mode 100644 index 00000000..f5009ec1 --- /dev/null +++ b/harness/test/integration/output/account/7_different_account_balance.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC3BHgYbza2AqZ15j73oSh1+5QMQgHScb7CdL84njoDGLFY5P7K0yA8oPhyl044ZAeL1UN+7H2rwhFeJFGapeZgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCVZnmc4MDikX+WZewivVLsAayVRgm3F+f8iNgBhewUjxLd5obC0fAXZD/2wd8jGr42IEo/wunbppyKuZ6qyBCfMFlpSScUoNuTaufefB2iu16zo6NrcgDoob+YOSTDDta+TbgfgwKZc1fnBJfGkzD/POBiljUrJZ7rJ0IHH+QDgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHyBOXvE8LmFOsZRzm+GkpP7KRx8ttQc3dA38jQv44AcitNQm+/rNyiEBBgvxa/BTSO2GGjFCSKMsdBLJOHp59iE=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x60b91c3ee1015a1e6122dd852f801bb4835de77834672c47e99a0d928d2a6428", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgY29uc3QgYmxvY2tOdW1iZXIgPSAoMCwgY2xpZW50XzEuY29uc3RhbnQpKDEwMDAwMDApOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldEFjY291bnQpKGJsb2NrTnVtYmVyLCAiMHgiICsgaS50b1N0cmluZygxNikpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBhY2N0LmJhbGFuY2UoKSk7CiAgICB9Cn0=" +} \ No newline at end of file diff --git a/harness/test/integration/output/account/7_different_account_balance.circuit.ts b/harness/test/integration/output/account/7_different_account_balance.circuit.ts new file mode 100644 index 00000000..c85e1362 --- /dev/null +++ b/harness/test/integration/output/account/7_different_account_balance.circuit.ts @@ -0,0 +1,29 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getAccount, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + const blockNumber = constant(1000000); + for (let i = 0; i < 7; i++) { + const acct = getAccount(blockNumber, "0x" + i.toString(16)); + addToCallback(await acct.balance()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/account/7_different_account_balance.output.json b/harness/test/integration/output/account/7_different_account_balance.output.json new file mode 100644 index 00000000..f86f6af1 --- /dev/null +++ b/harness/test/integration/output/account/7_different_account_balance.output.json @@ -0,0 +1,90 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x24dc5dfb656994ebf920b5afef322f47061c997450c8d5b23a62d2a713993317", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xd99d8ffa93f5de5b1bed67c7258c2e505da3876402592daf7fabe55fd11e9c67", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x522e004c718fd454c6a39cb4df5cd1599829738800ad47b5f726d11e1950e80c", + "0x42a8577283f06e3ed2e2b74582d654aad39b3e5e69c83a8bf3324477e659070e", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x6339c17ab43dc983578db7d0b57b361245ae48d347abd58a7b93659eab44de46" + ], + "computeProof": "0x000000000000000000000000000000000000000000000000028ded68c33d1401000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001965faa49dd0f9b9211e569c7c6dc3ea2a4e9150cabe6e05018ef7fa35044dc5ec73f386b9e1492b0ddade7370ce022d416c56d313dc7bd1b98dda6b0f25ca560b59fd822f4cc52cd4477d12010fdc09178312cb51519731286217b05c30c006ec124be3466f58a12fa4454396960a8b3e601b24998683ecf6e8f05cf0901182460942a80804a810c76427c737ee54d03cbdaf87268ff3e5b06e5ee48b348424d868de22b35883c3cd9b5610397d1f1ca8603a199d6b58c9ca414b10062617e03abdc32728795455498de49e68751995239e8839ef9ce0c2d7f07e40ae3b054549b7a5fb17244b9e4d4b46a8d5b46d62ce4ebd55ad07d7dc7ea602b74424e5849de03ca5807296bfb5ff8b8d61be427bdc05619581a7233120aa8849f7da4c459e50900f8d39b212ba90bc0860185b71fc1334c9b40284018087f607b1beb0610854ec673b87583ce97adff6873a6e3268b28be8754404fe323cb5cf98bd44b24c4ddcd5332b2ac8018984c3dedce7241a55383b6b661ba2146e390d86ac8a202b0db2d793770f1a8565802f342f59c415ec59befe795e7a6f079e317ef839b6ae0816a8408b02afcb90ccbc035d573217303b69f8797ad6fde78bac3d68efa6adb4e78103191b419dfa72def72c89dcacab8b15e786dcb30d2f9ff75cc784c41d3cfbbe893b29b6c84d4ef7bef730f8818e0d3a781c7168438d94b0004be5720f987dff3ecb14e968b70b9fc544f507d68a23921438b88ee4a40d5d25569173084c58cdb75255eba0fbb9c6487980527d19705eb50b3051332dc365c4de5d227ff124a187d6e8fc989397c0a8220f34b1dd10c0b30fec782cd91a342872f2007514192624fc81f6584ad28af2cc043cc7240247baf0938297877a42b4f6fa61478e69858cd3cfbc9698203d903ce469f9ce84eb628919f0a694e59dbde5f28155c3b80734cd170b3bb2689c130928eaab56afefbbe18d8b1dada32073825682b3f1586476761f97371d0efd5f5cf97f9545ab390ff740048b8a852677bfaa2096c850f0f4f62463a479aff485daba1f0e04b46357c66fb25135b4b3f5126b524727b07d612945e809a117d735ee1c8dc5048ada99dc771a25db4afaae115b424cbb73210e004900da0354da0e70031a73f196845ad5386a8f5a50e626be6e720b1e193bf3ea6366359320ee8efe34b89c513af7e4dd33b789bc6c42618e362126c9d3db3d7cf01aba3dbaeed9221876cb479ba4676c0ffc8a17e9c9ade0d2428ab7df0d799bc67c6f9d859bfb2d9cc60297380ad41e0039d67d140ae9b4756079c3cd431824a7d4b415599af0bff7eed4ab114b814d3636d97f52d34dfcd782e7883d9aa8ef16bfb027be48fdb590569a25bcd6a3ac815409bbe6764edb31505fa94fd96ef19c7259376ae52164b4dc8a9b1d81437f32961d35629af6378c00b1b337567d5ea4dd9eaaeba5e035d7c77ce20f3839d6b33d77c97942a2e950e01a9c626874c75300980a9266d0a49f1f7da2fb65c9b89b922a9c7498bdfceeb1afaea2d4810fa42962e6f72564ac54cde79a36fc1c25536ccbec952a59299e90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c748c469a182656dffedc3f63d63a1b11a614a9b6431e57f284f264a514c829a8f6630fa8ee6498680a23eb033831b24a43a2c134752ca1640663e63e909b0cb309fdfe09ceb1ff7ab19bacab06a5cd7b97dbf4f6455ebdee75a9699269310128ab09965fe31e4be844fac41d47e716e299149e348300c51b40a430dcdafd2a921427d41e39ab121ed4b5eefbbe41bf3fd970f712b23728d0e38606c1eca926bcff643eb8a703a6464d43e04f51d20375938d263b40e9ab4fc46a80738bbc2278e73908a08adfe09eeb6f387a4c8bc7e5df7d77cf04608d9760db24f94c2c14ba3aaea88d32d3af9cef1944c63c3f7e363a829e50b42b1c5ddb3852c3e0e025e95475b03878fd562c0df5c9aee789991c29e2f1b7ad0710fd68f9683271ed1858670d2d8eb00c30e2b9c5dd37a8f77ec6dd134bf58144d96c1cae54d323c40ada877f099d7708aef588476aa92e061f0fe27ab84dad0b617e40ad7fa665d416a0d354542f1458940e280cffdcc2f38c8bb6dc84838518a56504156deaa0c50bed47ee0c611cc12ae1de698bb8c187684b4368189073295f3301a7c1ca08341e1e8bce016f813df664d99cfe157b90a6ea9d7d889a126f2ab88a62a3197df01818f6ee2b31e0f233ab70f791fdd77176b0e119d4f3643555491e955f02ecca291bd1f4e05836f71830d9e6599c5b78beafdd76d50d85bb31c78060245dced00573ea035891fc6cb63ecca184bfcca0b4a9d6a0ca88a891b1f3bb0a5c2d78f30211876383d4e36237562cb42c270d76d47fbb31827cb519322b65fa079a0bb70c06a64c5ef4d017a2bb3cdeb3faf583d9a9db12c67c5f4d363ff6b09b34b1511123622d1186ff458f9c7d5e419bf325dd5990207b78fce97ebb4ddef62ccc160b74de95827685d148e998d7c50910836d9d0b1ebf067cec5a81d4ce4d1a40770261b0ad8556dff5f0202e99be058aaecc67edb6a07460c307181efa0531996715b09ecaf07e2de1a2e0899d41825d5127399f5f75a23169f2b2a0139c818e760aef149554214a87073c548216d4328ff975ec41030885c466652429cd10e03504f4cbf495dd7c17d134ffa9396906db6ba9ca9ef562f4430fb4327921c236d30c946a78669bc4e8bb5a2a0252c6c6b989929a2c5bbeb6a05fd95046741738d752", + "resultLen": 7 + }, + "computeResults": [ + "0x000000000000000000000000000000000000000000000000028ded68c33d1401", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000000", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000001", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000002", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000003", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000004", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000005", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000006", + "fieldIdx": 1 + }, + "type": 2 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/default.build.json b/harness/test/integration/output/combo/default.build.json new file mode 100644 index 00000000..2558d8c0 --- /dev/null +++ b/harness/test/integration/output/combo/default.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC3zj2elO3e5KbhZn4fvVmguSIMiFlzcDqD77aOeG+nkF1ilVc5MhvaZAotPbrWnuFMWZcj2RGxEnc1syIwEKCwG7G96O2UM++3FK6y/RmQQDo4jWhnBKuGrzEfJd7heex8GFKx2ZGIVTo8UgVbFBvBNbkIJWZYDO4McbCKBDJkbEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0sywY80kp43poXEVfFQ9DUe8EUGFrPmMxb9uWZeIoaHxVQygTuKCuei3oCmtbCFjmm84e2cVr3jsfJvlcFCx4Hz8HbItbKscWBbq50yhVLllYIShb6ki9kAfM+0E6pAh9jhR0/rvNzYJv0TtBZ0ELiZeJgRYjNrH8W3otnTmsXgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorCcSXcmaQC9BZjM/JlclzslVMc74WOIphrD8ZRS8QLRBoXn1N94bsUDQWUklvSmmBmaBCKkYervFqdkbTCI/JEBOuYmFBKYJhMAn+Ov8V6hGtX/omPs6SzIXUPZghfCslun5rnTLyL5biOmAYOSo1v2xlmJESoRDByNFNwxT8iyg=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x480c18adaaf7c304820c77eb8b39728a5cc591ed73a09328916cb78924234548", + "inputSchema": "eyJhZGRyZXNzIjoiQ2lyY3VpdFZhbHVlIiwiY2xhaW1lZEJsb2NrTnVtYmVyIjoiQ2lyY3VpdFZhbHVlIiwiYmxvY2siOiJDaXJjdWl0VmFsdWUiLCJhZGRyIjoiQ2lyY3VpdFZhbHVlIiwidHhCbG9ja051bWJlciI6IkNpcmN1aXRWYWx1ZSIsInR4SWR4IjoiQ2lyY3VpdFZhbHVlIiwic2xvdCI6IkNpcmN1aXRWYWx1ZSIsIm1hcHBpbmdTbG90IjoiQ2lyY3VpdFZhbHVlIn0=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7IGFkZHJlc3MsIGNsYWltZWRCbG9ja051bWJlciwgYmxvY2ssIGFkZHIsIHR4QmxvY2tOdW1iZXIsIHR4SWR4LCBzbG90LCBtYXBwaW5nU2xvdCwgfSkgPT4gewogICAgLy8KICAgIC8vICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICBfX19fXyAgX19fX19fIF9fX19fICBfICAgICAgCiAgICAvLyAgICAgL1wgICAgICAgICAoXykgICAgICAgICAgICAgICB8ICBfXyBcfCAgX19fX3wgIF9fIFx8IHwgICAgIAogICAgLy8gICAgLyAgXCAgIF9fICBfX18gIF9fXyAgXyBfXyBfX18gfCB8X18pIHwgfF9fICB8IHxfXykgfCB8ICAgICAKICAgIC8vICAgLyAvXCBcICBcIFwvIC8gfC8gXyBcfCAnXyBgIF8gXHwgIF8gIC98ICBfX3wgfCAgX19fL3wgfCAgICAgCiAgICAvLyAgLyBfX19fIFwgID4gIDx8IHwgKF8pIHwgfCB8IHwgfCB8IHwgXCBcfCB8X19fX3wgfCAgICB8IHxfX19fIAogICAgLy8gL18vICAgIFxfXC9fL1xfXF98XF9fXy98X3wgfF98IHxffF98ICBcX1xfX19fX198X3wgICAgfF9fX19fX3wKICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAvLyBleGFtcGxlIEF4aW9tIFJFUEwgY2lyY3VpdCB0byBwcm92ZSB0aGUgZmlyc3QgYmxvY2sgYW4gYWNjb3VudCB0cmFuc2FjdGVkCiAgICAvLyBnZXQgdGhlIHByZXZpb3VzIGJsb2NrIG51bWJlcgogICAgY29uc3QgcHJldkJsb2NrID0gKDAsIGNsaWVudF8xLnN1YikoY2xhaW1lZEJsb2NrTnVtYmVyLCAoMCwgY2xpZW50XzEuY29uc3RhbnQpKDEpKTsKICAgIC8vZ2V0IHRoZSBhY2NvdW50IGF0IHRoZSBwcmV2aW91cyBibG9jawogICAgY29uc3QgYWNjb3VudFByZXZCbG9jayA9ICgwLCBjbGllbnRfMS5nZXRBY2NvdW50KShwcmV2QmxvY2ssIGFkZHJlc3MpOwogICAgLy8gZ2V0IHRoZSBhY2NvdW50IG5vbmNlIGF0IHRoZSBwcmV2aW91cyBibG9jayBhbmQgYXNzZXJ0IHRoYXQgaXQgaXMgMAogICAgY29uc3QgcHJldk5vbmNlID0gKGF3YWl0IGFjY291bnRQcmV2QmxvY2subm9uY2UoKSkudG9DaXJjdWl0VmFsdWUoKTsKICAgICgwLCBjbGllbnRfMS5jaGVja0VxdWFsKShwcmV2Tm9uY2UsICgwLCBjbGllbnRfMS5jb25zdGFudCkoMCkpOwogICAgLy8gZ2V0IHRoZSBhY2NvdW50IG5vbmNlIGF0IHRoZSBjbGFpbWVkIGJsb2NrIG51bWJlcgogICAgY29uc3QgYWNjb3VudCA9ICgwLCBjbGllbnRfMS5nZXRBY2NvdW50KShjbGFpbWVkQmxvY2tOdW1iZXIsIGFkZHJlc3MpOwogICAgY29uc3QgY3Vyck5vbmNlID0gKGF3YWl0IGFjY291bnQubm9uY2UoKSkudG9DaXJjdWl0VmFsdWUoKTsKICAgIC8vY2hlY2tzIHRoYXQgY3Vyck5vbmNlID4gMCBhdCB0aGUgY2xhaW1lZCBibG9jawogICAgKDAsIGNsaWVudF8xLmNoZWNrTGVzc1RoYW4pKCgwLCBjbGllbnRfMS5jb25zdGFudCkoMCksIGN1cnJOb25jZSk7CiAgICAvLyBhZGQgdGhlIGFkZHJlc3MgYW5kIGJsb2NrTnVtYmVyIHRvIHRoZSBjYWxsYmFjaywgZm9yIGl0IHRvIGJlIHBhc3NlZAogICAgLy8gYXMgYSByZXN1bHQgdG8gdGhlIGNhbGxiYWNrIGNsaWVudCBjb250cmFjdAogICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGFkZHJlc3MpOwogICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGNsYWltZWRCbG9ja051bWJlcik7CiAgICAvLyBIZXJlIGlzIGEgbGlzdCBvZiBhbGwgZnVuY3Rpb25zIHlvdSBjYW4gdXNlIHRvIGZldGNoIG9uLWNoYWluIGRhdGEgaW4gdGhlIFJFUEwuCiAgICAvLyBGb3IgbW9yZSBkZXRhaWxlZCBkb2NzIGFuZCBhIGxpc3Qgb2YgYWxsIGRhdGEgYW5kIGNvbXB1dGUgZnVuY3Rpb25zLCBzZWUgb3VyIAogICAgLy8gcHJldmlldyBkb2NzIGF0OgogICAgLy8KICAgIC8vIGh0dHBzOi8vZG9jcy5heGlvbS54eXovc2RrLWFuZC1yZXBsLXJlZmVyZW5jZS9heGlvbXJlcGwtcmVmZXJlbmNlCiAgICAvLwogICAgLy8gZmV0Y2ggYmxvY2sgaGVhZGVyIGRhdGEKICAgIGxldCBoZWFkZXIgPSAoMCwgY2xpZW50XzEuZ2V0SGVhZGVyKShibG9jayk7CiAgICAvLyBhY2Nlc3MgdGhlIHRpbWVzdGFtcCBmaWVsZAogICAgbGV0IHRpbWVzdGFtcCA9IGF3YWl0IGhlYWRlci50aW1lc3RhbXAoKTsKICAgIC8vIGFjY2VzcyB0aGUgZ2FzTGltaXQgZmllbGQKICAgIGxldCBnYXNMaW1pdCA9IGF3YWl0IGhlYWRlci5nYXNMaW1pdCgpOwogICAgLy8gZmV0Y2ggYWNjb3VudCBkYXRhCiAgICBsZXQgYWNjdCA9ICgwLCBjbGllbnRfMS5nZXRBY2NvdW50KShibG9jaywgYWRkcik7CiAgICAvLyBhY2Nlc3MgdGhlIGFjY291bnQgYmFsYW5jZSBhdCBgYmxvY2tgCiAgICBsZXQgYmFsYW5jZSA9IGF3YWl0IGFjY3QuYmFsYW5jZSgpOwogICAgLy8gYWNjZXNzIHRoZSBub25jZSBvZiB0aGUgYWNjb3VudCBhdCBgYmxvY2tgCiAgICBsZXQgbm9uY2UgPSBhd2FpdCBhY2N0Lm5vbmNlKCk7CiAgICAvLyBmZXRjaCBzdG9yYWdlIGRhdGEKICAgIGxldCBzdG9yYWdlID0gKDAsIGNsaWVudF8xLmdldFN0b3JhZ2UpKGJsb2NrLCBhZGRyKTsKICAgIC8vIGFjY2VzcyB0aGUgdmFsdWUgYXQgc3RvcmFnZSBzbG90IGBzbG90YAogICAgbGV0IHNsb3RWYWwgPSBhd2FpdCBzdG9yYWdlLnNsb3Qoc2xvdCk7CiAgICAvLyBmZXRjaCBTb2xpZGl0eSBtYXBwaW5nIGRhdGEKICAgIGxldCBtYXBwaW5nID0gKDAsIGNsaWVudF8xLmdldFNvbGlkaXR5TWFwcGluZykoYmxvY2ssIGFkZHIsIG1hcHBpbmdTbG90KTsKICAgIC8vIGFjY2VzcyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgYXQgYG1hcHBpbmdTbG90YCB3aXRoIGtleSBgM2AKICAgIGxldCBtYXBwaW5nVmFsID0gYXdhaXQgbWFwcGluZy5rZXkoMyk7CiAgICAvLyBmZXRjaCB0cmFuc2FjdGlvbiBkYXRhLCBleGFtcGxlIGlzIGZvciB0aGUgdHJhbnNhY3Rpb24gYmVsb3c6CiAgICAvLyBodHRwczovL2dvZXJsaS5ldGhlcnNjYW4uaW8vdHgvMHhhNGY3ODFhZDAzM2Q2ZGFiNWIxM2UzYWI3YzdjYmRiZDBlYTRjMGEyYmUzZDlmZmE3ZWQxZTUzZDJkNWJjYzQ2CiAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKHR4QmxvY2tOdW1iZXIsIHR4SWR4KTsKICAgIC8vIGdldCB0aGUgNC1ieXRlIGZ1bmN0aW9uIHNlbGVjdG9yIHRoYXQgd2FzIGNhbGxlZAogICAgbGV0IGZ1bmN0aW9uU2VsZWN0b3IgPSBhd2FpdCB0eC5mdW5jdGlvblNlbGVjdG9yKCk7CiAgICAvLyBhY2Nlc3MgYnl0ZXMgWzMyLCA2NCkgb2YgY2FsbGRhdGEKICAgIGxldCBjYWxsZGF0YSA9IGF3YWl0IHR4LmNhbGxkYXRhKDEpOwogICAgLy8gZmV0Y2ggcmVjZWlwdCBkYXRhLCBleGFtcGxlIGlzIGZvciB0aGUgZmlyc3QgZXZlbnQgbG9nIGluIHRoZSB0cmFuc2FjdGlvbiBiZWxvdwogICAgLy8gRGVwb3NpdCAoaW5kZXhfdG9waWNfMSBhZGRyZXNzIHBheW9yLCB1aW50MjU2IGFtdCkKICAgIC8vIGh0dHBzOi8vZ29lcmxpLmV0aGVyc2Nhbi5pby90eC8weGE0Zjc4MWFkMDMzZDZkYWI1YjEzZTNhYjdjN2NiZGJkMGVhNGMwYTJiZTNkOWZmYTdlZDFlNTNkMmQ1YmNjNDYKICAgIC8vIGV2ZW50U2NoZW1hID0ga2VjY2FrKERlcG9zaXQoYWRkcmVzcyx1aW50MjU2KSkKICAgIGNvbnN0IGV2ZW50U2NoZW1hID0gIjB4ZTFmZmZjYzQ5MjNkMDRiNTU5ZjRkMjlhOGJmYzZjZGEwNGViNWIwZDNjNDYwNzUxYzI0MDJjNWM1Y2M5MTA5YyI7CiAgICBsZXQgcmVjZWlwdCA9ICgwLCBjbGllbnRfMS5nZXRSZWNlaXB0KSh0eEJsb2NrTnVtYmVyLCB0eElkeCk7CiAgICAvLyBhY2Nlc3MgdGhlIGFkZHJlc3MgdGhhdCBlbWl0dGVkIHRoZSBsb2cgZXZlbnQgYXQgaW5kZXggMAogICAgbGV0IGxvZ0FkZHIgPSBhd2FpdCByZWNlaXB0LmxvZygwKS5hZGRyZXNzKCk7CiAgICAvLyBhY2Nlc3MgdGhlIHRvcGljIGF0IGluZGV4IDEgb2YgdGhlIGxvZyBldmVudCBhdCBpbmRleCAwIGFuZCBjaGVjayBpdCBoYXMgc2NoZW1hIGV2ZW50U2NoZW1hCiAgICAvLyBiZWNhdXNlIGBhZGRyZXNzYCBpcyBpbmRleGVkIGluIHRoZSBldmVudCwgdGhpcyBjb3JyZXNwb25kcyB0byBgYWRkcmVzc2AKICAgIGxldCB0b3BpYyA9IGF3YWl0IHJlY2VpcHQubG9nKDApLnRvcGljKDEsIGV2ZW50U2NoZW1hKTsKICAgIC8vIGFjY2VzcyB0aGUgZmlyc3QgMzIgYnl0ZXMgb2YgZGF0YSBpbiB0aGUgbG9nIGV2ZW50IGF0IGluZGV4IDAKICAgIC8vIGJlY2F1c2UgYGFtdGAgaXMgbm90IGluZGV4ZWQsIHRoaXMgY29ycmVzcG9uZHMgdG8gYGFtdGAKICAgIGxldCBkYXRhID0gYXdhaXQgcmVjZWlwdC5sb2coMCkuZGF0YSgwKTsKfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/default.circuit.ts b/harness/test/integration/output/combo/default.circuit.ts new file mode 100644 index 00000000..b9248305 --- /dev/null +++ b/harness/test/integration/output/combo/default.circuit.ts @@ -0,0 +1,145 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getHeader, +getAccount, +getStorage, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +sub, +and, +or, +not, +select, +checkEqual, +checkLessThan, +value, +log, +} from "@axiom-crypto/client"; + +export const inputs = { + address: "0x897dDbe14c9C7736EbfDC58461355697FbF70048", + claimedBlockNumber: 9173677, + block: 9730000, + addr: "0x8dde5d4a8384f403f888e1419672d94c570440c9", + txBlockNumber: 9728956, + txIdx: 10, + slot: 2, + mappingSlot: 1 +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + address: CircuitValue; + claimedBlockNumber: CircuitValue; + block: CircuitValue; + addr: CircuitValue; + txBlockNumber: CircuitValue; + txIdx: CircuitValue; + slot: CircuitValue; + mappingSlot: CircuitValue; +} +export const circuit = async ({ + address, + claimedBlockNumber, + block, + addr, + txBlockNumber, + txIdx, + slot, + mappingSlot, +}: CircuitValueInputs) => { + + // + // _ _____ ______ _____ _ + // /\ (_) | __ \| ____| __ \| | + // / \ __ ___ ___ _ __ ___ | |__) | |__ | |__) | | + // / /\ \ \ \/ / |/ _ \| '_ ` _ \| _ /| __| | ___/| | + // / ____ \ > <| | (_) | | | | | | | \ \| |____| | | |____ + // /_/ \_\/_/\_\_|\___/|_| |_| |_|_| \_\______|_| |______| + // + // + + // example Axiom REPL circuit to prove the first block an account transacted + // get the previous block number + const prevBlock = sub(claimedBlockNumber, constant(1)); + + //get the account at the previous block + const accountPrevBlock = getAccount(prevBlock, address); + + // get the account nonce at the previous block and assert that it is 0 + const prevNonce = (await accountPrevBlock.nonce()).toCircuitValue(); + checkEqual(prevNonce, constant(0)) + + // get the account nonce at the claimed block number + const account = getAccount(claimedBlockNumber, address); + const currNonce = (await account.nonce()).toCircuitValue(); + + //checks that currNonce > 0 at the claimed block + checkLessThan(constant(0), currNonce) + + // add the address and blockNumber to the callback, for it to be passed + // as a result to the callback client contract + addToCallback(address) + addToCallback(claimedBlockNumber); + + // Here is a list of all functions you can use to fetch on-chain data in the REPL. + // For more detailed docs and a list of all data and compute functions, see our + // preview docs at: + // + // https://docs.axiom.xyz/sdk-and-repl-reference/axiomrepl-reference + // + + // fetch block header data + let header = getHeader(block); + // access the timestamp field + let timestamp = await header.timestamp(); + // access the gasLimit field + let gasLimit = await header.gasLimit(); + + // fetch account data + let acct = getAccount(block, addr); + // access the account balance at `block` + let balance = await acct.balance(); + // access the nonce of the account at `block` + let nonce = await acct.nonce(); + + // fetch storage data + let storage = getStorage(block, addr); + // access the value at storage slot `slot` + let slotVal = await storage.slot(slot); + + // fetch Solidity mapping data + let mapping = getSolidityMapping(block, addr, mappingSlot); + // access the value in the mapping at `mappingSlot` with key `3` + let mappingVal = await mapping.key(3); + + // fetch transaction data, example is for the transaction below: + // https://goerli.etherscan.io/tx/0xa4f781ad033d6dab5b13e3ab7c7cbdbd0ea4c0a2be3d9ffa7ed1e53d2d5bcc46 + let tx = getTx(txBlockNumber, txIdx); + // get the 4-byte function selector that was called + let functionSelector = await tx.functionSelector(); + // access bytes [32, 64) of calldata + let calldata = await tx.calldata(1); + + // fetch receipt data, example is for the first event log in the transaction below + // Deposit (index_topic_1 address payor, uint256 amt) + // https://goerli.etherscan.io/tx/0xa4f781ad033d6dab5b13e3ab7c7cbdbd0ea4c0a2be3d9ffa7ed1e53d2d5bcc46 + // eventSchema = keccak(Deposit(address,uint256)) + const eventSchema = "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c"; + let receipt = getReceipt(txBlockNumber, txIdx); + // access the address that emitted the log event at index 0 + let logAddr = await receipt.log(0).address(); + // access the topic at index 1 of the log event at index 0 and check it has schema eventSchema + // because `address` is indexed in the event, this corresponds to `address` + let topic = await receipt.log(0).topic(1, eventSchema); + // access the first 32 bytes of data in the log event at index 0 + // because `amt` is not indexed, this corresponds to `amt` + let data = await receipt.log(0).data(0); + + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/default.output.json b/harness/test/integration/output/combo/default.output.json new file mode 100644 index 00000000..b7bfac1d --- /dev/null +++ b/harness/test/integration/output/combo/default.output.json @@ -0,0 +1,141 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x9fb7196754c7e5e5f8d6c5342bb3b258821c77a959eaef9d904768c26482031c", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xc279860e43f09c5bef47fc6c2e4f33d0eeb10ad846cb61aa5c3885db7a00341d", + "0x53e72ad11564cdae9d93b1b3b549c60d654faa671646b15c0c94e55883ad6845", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xc6b8f7f1a3d6b7a47f8025e49dd6d86483513213bfd5211d8eabf7aae33e3608", + "0x795c0f8463e86231686682c46d6d1ecd5341025b459ded1887b071e7a4df3120", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xb2c19b9f0ca7cde8ed457dd0127905c21ea00ec674dba4cf521ed8488e6ebe0c", + "0xd35f95fba9d511cba393df0ba9deaf296f5e0be2c3429865572dba553c168048" + ], + "computeProof": "0x000000000000000000000000897ddbe14c9c7736ebfdc58461355697fbf7004800000000000000000000000000000000000000000000000000000000008bfaade4ef2b381d75ec6378d635b9183a284db1051c76097017af5aaab71424666e5a4ac250407bc121f23fa7619638d272e58652c17f593a9d0f1f14ff1629ebe5525e6aadaf8b9dd5d269909e23eb3cc47ededef84c8183e5281c96ad41a740572c2dc16f2de95121a8c0d0346df63e0f9cb5072f3078c6a1d4b27284d63ce8901dc0e64ed348b113c1b8d2063290a3151f2970622e47dde00d41febef44e04eb0f49c778de8fb102ba7bcc2104fe4129d2867a69dad92fe3550a0d46f29abd1a6ecbdc4830ae14a9137169cd7f1ce4194765ef281ac88edbd2f8d38b54f28a0867e662927f894dc80f58a6e0706e1f942b13bfee4d43bf089a05a96b682d10696bce17396638cddb80b3fa28d59ca054fca285e0087402c78360c85933295aec695f71f979213ae46652a392d21d99bc6d633056f6d968fb1e01574924ff28e3182260dbd96e483aa4777e70e607a1e1cd13ae0e4f9b7b42126c94f9f99ed9a943de6079043d0e0431f23a77ff3b1e652d16c792c55d5bebb9a322763f375e91262d60e26530c814b0602f4e99ad7ed4469cc97ba31a476052892c62af22382d613a444c3bd6819831a594bee963072a87c4bfc09e3dae65fae43d9e87e05a8c67f75c216d9098a2b69ed5905d6677820b0bb96a976eccda31fac557da1e12c52005f56743ca957d600dc12d7ce2b2dad286f9dd95e19a7de0d2b40e72ddcf9105090473d5e3765e4a2d210925a797ee57659174d7432f2cad6a7e69ad39e9831f2ff151bc8f85f16ecc5df27453c424186efaac76f8611896644e3d4f16dce9260fdd903deaa9d87e77820c10457297652f9960f67eb8d7bf9e36136d1ccfd71f25c4779f573609a61b55b78ef1d3cf72961eea0864f08b748bdf3bc29ed4ce28cf55a047dd4e57c4c95d7082e7da3876dd36d64605fef41670b061c40af773173da4b8c368aec6f0a72c2e62730a91d072d5ed9f7bd6d9253a50bbb00842aa2a988fcc2daee34012144840dda8b61a454e7c4762926aee2aedee7eb3d20f4701e5273e08d4956afbf0b80afd29224d0e22f5acf19129bec0303822c198b4761132f313d2789bee2c9b2350bf932d489590880e378501fd4368f129734148fb01954fbe16f4d6f954a60a928ad298a5fa31aee3be8383dccdf56ffccaf6e232216ce2b1bb8ae5b561ba94c5141106b663fd714017f9509523e179c809fa4205046a29d8f304a440bacac89fb808a457ad08e7881af3a51f6442a09d80688f430f365b7e05d7ff340824787c5e1cedca1b6275a017ba741915125ff84ecc176311a890b5134ddfe2d5a42608f9c6242e011792c0996c9ba4b9536159f130d14a0b6dd4d41897fe449eeb5751834de21d5c5c16d5f2599fd9843294248351f03322e6ca776b6ffde2f8c243a60217bda97786b8c44df3f789f91c94d0056592e70de91e4595754cf7289525b8d8a1ebe6de247f54730928fbcdd5b313e1f3873e14ad7701f59ebdbed157ea4dcb30c6411044859bb3c33c2c02f6ac517d7956df2f7e5656f28d7d5a4280dfc1a31d5e65ade87abe547ca332f2d6902808bd299911f0617b5a3cbe774693f17191d520e01d526136c6a446b449ec5aeed8eb59e50b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000704933df3bd9a799b6e619a5485deb24401c7c5757772d413263090e21c032b4524b2f18fcda5308d2bce3a5b5d27ccf0c316c7d9dc15cc1f6340101d93a511d6a59f898f3f799d260d87bbe1f0c67cea476e5380a16d80779bf2b39650d40893587f88d6257f3e4a7866000456557006bed80726b7eafa4ec60690d4109c09de9b2a3cd34d6a215b58d16676b3834ff541fb755d35830d715424468a290b2f1da45825d16b8dec8d3bb5df26cc0903ca38e0bf38abb9d8dcb4e871c875d92b4ed1b49251db1c55622f9a6e4245b0eb1688d3b0887054477a1c364560ebaf0d6eddfbfa7b492f8981ed27629de8045317b6f6900788ca24a0d51aefef82e8201b06fab19d0e1280a1e626380d435a68b0ea7634373b83fbf17ab9c2339de30dc800484b379c2862620ed8cd413535288683044d325f429b107560fe1a9c6d048522200b72a72736fc487c99b572118a39f937f5771e53ce99160ecdb2f20e0f8645deb1b806c65d650d82074b431f684b5b51ba036e2929e2afe000ace32f2d56a19684d5e4e84ccea58b44c64482cac8177549113ccafa02cd8abe5c00ce132c6dbb1d6e335ece571b137e46b759cc66fd3eb4e612f76fe18ddb33630c6902d25ee215df470afcd160ec809c4f4a4938c7613b48ff89216432c7fcfccc92152be0a53b4203dc1b3b75a07c5a5d97199771c881e1ea04fd494c263645f046155a4250f7140a2d9693b872b9ba23f7dadffbcc0280a1c713b3b5432eed7f4d1a24d874cc878cd1bb3e984ced18dcea4095c9745e3d6ec88f2f8b59fa86a64812b231dd78c0bfdb789dd5698089cef4dcb8c24a43faf12f2196afb32b30cd5e041f41299c548837795e5a7ba4081f22af4b4e811e8d353e336fb87b961344c21b401d78a39d3ac01a974c7abd74ff626a3e82e4aca0a9e9a8fb510fdabfc7be0181d095092fc7251d2e173f07571432b828200b4be671e02a177e8e38c9e2d80a32aeb7740997de53c37b25819d44f511597506249b167582dbf104d653c2500d9e700f63150adf7c31ea47928a8a64a1b20824f9a21b45b11b155444241cef19929e69c9ee0632cc1e02070daddce17ce5cf5aaeaff296567ce13bfc1f9a706df2addeea5e7f76ff1d0c1ad0e581e9dd093fa6e95556ad68a459449cc1ea196d", + "resultLen": 2 + }, + "computeResults": [ + "0x000000000000000000000000897ddbe14c9c7736ebfdc58461355697fbf70048", + "0x00000000000000000000000000000000000000000000000000000000008bfaad" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9173676, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "addr": "0x897ddbe14c9c7736ebfdc58461355697fbf70048", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "fieldIdx": 11 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "fieldIdx": 9 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "fieldIdx": 1 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000003" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9728956, + "txIdx": 10, + "fieldOrCalldataIdx": 54 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9728956, + "txIdx": 10, + "fieldOrCalldataIdx": 101 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9728956, + "txIdx": 10, + "fieldOrLogIdx": 100, + "topicOrDataOrAddressIdx": 50, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9728956, + "txIdx": 10, + "fieldOrLogIdx": 100, + "topicOrDataOrAddressIdx": 1, + "eventSchema": "0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9728956, + "txIdx": 10, + "fieldOrLogIdx": 100, + "topicOrDataOrAddressIdx": 100, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(128).build.json b/harness/test/integration/output/combo/max(128).build.json new file mode 100644 index 00000000..75fce2e1 --- /dev/null +++ b/harness/test/integration/output/combo/max(128).build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC0ssrbVzcRhg3wyX1MQn61ubNRGCkDJ50s+GikjEVpjLkdOkiTWDfoTV1r3GqbxpbZ/3gM3EV4BaYzCJ40hHSYAPDcO4vEHRmuTfxjBV0ucM8apfXIjRfIfFM+xqD+YvCYZOT1Mb/3ooVCsdgMre4+KbAKq7UdxL4z7i+ehSej7KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8m9IacMOaHSrk7ETFyQgCBaal0iP69B+MEzfzUce8cK1yTlMIZBMU+FRWLt7XKnynRQERGW2yQO8NocO8xBhQ3ln43iEB4rzBk4eH8ci8mJA3QtiiIsP1vzxyK8AA7KHWQR8R1/wZJ7mKm6o1vFI8xtO31hvZ5JFCcotuFh/otgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdor/frTK6cD7n1blzgBH9usBl7zMwC4swYN/wn2MIphNhC5H0YwGRMwxU5jUX4WiVTCkjCbrRYJm7uK4yHJfv42JgWnTeUfK6C8/eBSjBW+cqdmSnZ2V1VKirFMLmIJrTEfGuYlF3YR5iEGkLhtj4wkWMVRWBIdmKnv4/NA2q/uEiw=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x9f9ce0b8492031c273619ffb8a0064536ef4d163008480b91f2aa5c2d5391644", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CiAgICAgICAgbGV0IHR4ID0gKDAsIGNsaWVudF8xLmdldFJlY2VpcHQpKDkwMDAwNTAgKyBpLCAwKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgdHguc3RhdHVzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNjsgaSsrKSB7CiAgICAgICAgbGV0IHR4ID0gKDAsIGNsaWVudF8xLmdldFR4KSg5MDAwMDAwICsgaSwgMTAgKyBpKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgdHgucigpKTsKICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAgIGxldCB0eCA9ICgwLCBjbGllbnRfMS5nZXRUeCkoMTAwMDAwMDAsIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKSgoYXdhaXQgdHgudHlwZSgpKS50b0NpcmN1aXRWYWx1ZSgpKTsKICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7IGkrKykgewogICAgICAgIGxldCBtYXBwaW5nID0gKDAsIGNsaWVudF8xLmdldFNvbGlkaXR5TWFwcGluZykoOTczMDAwMCArIGksICIweDhkZGU1ZDRhODM4NGY0MDNmODg4ZTE0MTk2NzJkOTRjNTcwNDQwYzkiLCAxKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgbWFwcGluZy5rZXkoMikpOwogICAgfQogICAgY29uc3QgYmxvY2tOdW1iZXIgPSAoMCwgY2xpZW50XzEuY29uc3RhbnQpKDUwMDAwMDApOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldFN0b3JhZ2UpKCgwLCBjbGllbnRfMS5hZGQpKGJsb2NrTnVtYmVyLCBpKSwgIjB4Yzc2NTMxQmIwOGU4RTI2NkU0ZUI4YTk4OEQzMTRBQTY2NTAyOTJhZiIpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBhY2N0LnNsb3QoaSkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldEFjY291bnQpKDYwMDAwMDAgKyBpLCAiMHhlRDY0YkM5ODAyQjFlODZiOTRmNUU3OENjMTAwODI3NDMxQWNENzMyIik7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKChhd2FpdCBhY2N0Lm5vbmNlKCkpLnRvQ2lyY3VpdFZhbHVlKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CiAgICAgICAgY29uc3QgaGVhZGVyID0gKDAsIGNsaWVudF8xLmdldEhlYWRlcikoKDAsIGNsaWVudF8xLmFkZCkoOTE3MzY3NywgaSkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuc3RhdGVSb290KCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(128).circuit.ts b/harness/test/integration/output/combo/max(128).circuit.ts new file mode 100644 index 00000000..c4c1c32d --- /dev/null +++ b/harness/test/integration/output/combo/max(128).circuit.ts @@ -0,0 +1,63 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getHeader, +getAccount, +getStorage, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 32; i++) { + let tx = getReceipt(9000050 + i, 0); + addToCallback(await tx.status()); + } + + for (let i = 0; i < 16; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + for (let i = 0; i < 16; i++) { + let tx = getTx(10000000, i); + addToCallback((await tx.type()).toCircuitValue()); + } + + for (let i = 0; i < 16; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + + const blockNumber = constant(5000000); + for (let i = 0; i < 8; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); + } + + for (let i = 0; i < 8; i++) { + const acct = getAccount(6000000 + i, "0xeD64bC9802B1e86b94f5E78Cc100827431AcD732"); + addToCallback((await acct.nonce()).toCircuitValue()); + } + + for (let i = 0; i < 32; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(128).output.json b/harness/test/integration/output/combo/max(128).output.json new file mode 100644 index 00000000..a04514a3 --- /dev/null +++ b/harness/test/integration/output/combo/max(128).output.json @@ -0,0 +1,1275 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0xf7e640669659b2f064354230d8bd5b37ec01e4ce8a735d92ec802c252ffc7122", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xbc0e076151431bd8179e9fc215fb4bdbed6ed393583830a763647989ba165655", + "0x2966a03b097dbe3ec38c9ff1468b5e324178d6a09a20a5e27d7b916c2b60d66a", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x7302b33176c3156b144d15efea649325ae2c73cdd1ad02c02bbbf3ccae41ce17", + "0xa6c70871afe37dd37edf0ff67c3c5809e6033826ce452d5e0bccab0e516be80e", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xeca55bccabb916915a2497ff66dafb1d1a8f12ff00550e3d4226acb8cfa2ab0e", + "0x0491d10e6b628eae780d3939710112dbf04f83b89d36e38a4a425da199a6e465" + ], + "computeProof": "0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000013a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4eeabf195a4fe5f7ffce0918c43429799be8b1ca8661837f564badf9d72e01bdee8a06bbc81526d7d0454820c19d212214075eb6fc5f2a0a7b7b850eac8cb87f180751719655e12bb992a396e2f630337b3d98f5b8687e47fa2885a071ec1af2be96a68642597d25ed401b34f5eb43b5879cd7c102a64ffe05122905490917c49340b5eba6cec172c9af44efcd22fe034477556cb1081b4590df7de22861581dabfc35747b0d2b1d58f2d705aab8421f1c8167ac836b91548e2335191a1870696cb4dd03cae7bf0c204c654e3213d7c72d832219249f2c6f07e26f8e899084345b875d86dd195c9483387cd6b3a1fcf6dd17b5c3171c74ce7c30086a6c32248810000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b6dcefa8ef798a6dacdf78ec6cf7c66b738abe9c8f4933fb0db183034c7bf89300000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f00000000000000000000000021f52f5dccb5b09c3ffd1e8b1bb38c6010d34c04000000000000000000000000c1c0472c0c80bccdc7f5d01a376bd97a734b8815000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff396816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9fd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1be6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3ebc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df057bf630ac2b87bd33e5e610d1aaeac05e085100dfd235ef5df6904c6fc147f1ceecd034700ded0e6955a4fb7307d2b186391cba1e4d65c15941f1152ea510046fcd042b9109c3cf3e44df2ebd97bf145e82e4e8e034f6fa776869b275e0adc521f683cba6415fde0797343943c629610c0def8cbb61c2bb03e1ba314aa5682c106114979e059c14e7a64045c1d4225bc283b8c905015ac533ae5f63970bf696667c67809fd72f4275809935940ff0ac724b92e77dc6a08e0df97c084f37da324d7f667d2a7aa07b14c38d6a34b2c2eade061c70bf0be8501423a39c25b5be50c255c82974ed0ec310932bdc33eb9fde2cf4f6458d911b5291389b8008c01fab19f1c5307521ac5e2a68b132a188214c1de674d3b89e9409eb020ed80e0f851788beb107dc692a939f6c0ec40a13506eed861a2d6869e687f2062578d978cbe638d9c601d8a45eb10edc384cd1a0cad8eff2697faf840a2936b05a17953d447a855af384e82838293e45964e780678a23a9128af4bcb30b51ef76490aa8c2d29014fff77e086c60c2a507a9494d4bb17abf57cb9917ec2a35b8d91475f30f39a67e55b02e3a368bb232b5dfdce9ece4ace82a59c6169a74fd72763afb2b6e7c6773d9569f2bedcce6336f5a2ea476a18d2c95aea4c97c8ab10527f0f699047dfcc9bccaf36b669e1b9a8971ff144881ae105c1656cffdfa20a6464196876651bf7590bbc6c179730f02075895840d42162db76ecdc8def04de59be3c54618408a275c870082d2c362106b34b81a8088877b7375e9ae2cefc7104779b861749391820fa9faa919d473632c2cb8a7eca959ba1b91705966ef43fbf9e4db5f60374fde13eabe37f044a16eba714a2ce2a50a21ef80f6e2988c7f1dba9941e139ff3a0b34f394187d13ab4860c1bfb779833b06f51feb3d2912023e09410adb9a70a0dea3c4daf1522ea99707911e88976acb21d72b112293f93541829df9975d8c876a99215f24f42502ccbcebf08864da78578841ccb84f1eea44366638853857244d578b93d321cac5b08b0b4fcd2cffed6af379f6980a1fd7ce7581a0cac39ea045406a85e3530ac354fbc8df0122513632a41ed4abb503c29ce2a7bbdf9e1c42d0b3196bca033fbd2ac5b5a7f43ccd042f7ee4416d18a741a8a7600ba283731959d090404fb7e48cf96ca290d9414bca5307107ad622635a791da38cb8549e53540e9a0c4ab40e249ab2471644d8585ff975c84accda5a88b51a21a31fbf3e242000c79a68eae9954b451a787dc9801e2617ffdea1528dddf0f06c7bd8117f0f76c84c87942a586d237649753d907daa1a1408cbdbb90e5d2933020b28c845265fc424b6e1f7a8a2c332bdc43c120f957e3cdfe5e34f838a8160ab734ab56909a7804c172619dcb3d88653c806880877a11fc38fa85d517b8dfe032a06b9bd55d7d24b18a398f429430b8fc71553764bf2b87ebf5f057aedd0b6af476199182bbac3a6f1909aeda54fef7466cc06cc56e822027cf97b937257dc071dd178e920430069ce65c9c859820ce43a762da70f8269c4f247918c3ad70533df851a5e01abe5c8fa627446ce103dbfe895ac9513c624e7e9f54a10507014065e4c6a674164d73b50966704ae3ef5430debe963a86877fa60bd0dfc6693ae4e70b5151e2ff50c0572b1cddeee490cb88d14c58832e0b3af3525a302eb52065dd1ecae750656298f73a90d43b698a097d4d45a8c68c2cf80bc2f02d74191ed0b2d2ad7f2143bc664fd310f49a9a13371dfc33584ef8b86ee56475766cee4690d9d747b2c6e01d478cabc7c29867404b29ddd6f20fbe3afdb41708c792677b362b79f83c702825ba30c31f3f2f1261b96c583ac74330655bbd0b8e24be9af318a1d4525b812dfd7230805497dea2f0f09320ee68b641dd0de0199977f65eb63e1e838b36212c15bb2e0e90481be75453fa8f0124a562d95fb8151ec88ed1b3c7a5410102e0c463154292e53eec73d04fbaec3255f489249340f8543592fa8ab6ab2edabbb24c89ea2fedf221850a488edc9fc9a21db035ad09f438526733755f2d8916f59085238e713aa9ec8113a903b4cdc5ead5257e4d2c03824311aa560c9b9611690029b9615c4c821513fde5fd57bc474b0270697aec8ec29210c570d712fbdc0a407a75e704b878bb0d1b280322fd2a4b3a1382981645c6dcda0ccff5e7dbbab7714f0e7f8e9fe8010b01f2c4b54d2a69ea74cb44b02f601873800ebf888b63c12280a12127f9e210e76bf4b4c204e0f2d13788b12bffb531ad9a5b5bbdcef78080b322343d2e2fa90f6f3df7d7ceaf36bc5f157c87d7ce458fea5e11df74df4b81effe207f11d73f93ce54df97f35ee4f05ebe5033c2d1a1901f5b6cbcae84a4a08d2f39164af8afd4518e618241ff43065a6958ad99472373f82a8f4f96283a308a72bd0704aa51162c5a7af20c1048b9234a9fa7c3efda8c39a1e0b89afe022139fc0c0922544cf59126c0e1ec35720f3e6a38551d926516e427172bb86544901bdaefb0c8ebbe2f57e7ae7ef7dd45be3f2a5fd92392abe324794e13994c98d087caef8a4ee1b1107f085b939ca68dfea64dc8fac8bfc524ea67915f41fcf5a0dd3a903edb8dd92b81c8068d8a15c83568d5a5ba3e4334c8033e470e896cb8e0c116422c56d5fc87b2215cc6bda74fea4376e5d45a2f89059132b65f8fa4afc1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031f73aea9e9696ef1cf8d88300f5482fa6e95506571240461c24837ecd061209271037b470d9315705f3ef8189a931bf741c50a754820cc58158d157dbf095283f632158c91b322b5d41f923fc0e6b63be7ed92f0654835f0520ee0007de6c093b111969705ea439a0d744c87149a7298e4e71f71cc749a0371eba5b1f7ec108c160780dab9627d842e4c711385c1b9b1ddb7b09d0d5af6b21f32365974c3602b7ddcfdbb4db9f20889aaadafe7c280d87ccb17e9b275cf3a593d1c10e895f0fbbe6bf55cdc07edffdeeb5d0506b21c07bb3a91561ca41d4134ba5a1e8ca48133992917dc05cd48079d2d3718f2aec5e871193623350913e84605765268fa42668fa5b1b6a70014e078b5a026fbe9c895167710e839323f639ce2c6dc86ea8185dd198a8cc694de3015af4b2944e520372cdcaf018cab3c31ea30faf40e7cb0f2f8849c0f1856db8f893da7175b0ab05e2ab1c17872643a7b2b0b85e0dc9241799bf888814e003934e29f85de388d26380c662c8c8369c3abf05c8738585da13c2b51a5ad3cb5a5674b73de535fd1c2d28ba94b6407ffa8216555b196cbd34109e4017225cabf7cf1064aac464f4d39a2e3350b24bcabd04fe493bd21666290a0db60dc1a49f6aa0d58f47c8975d20359e0ff48073eed4012fa4035cecb64226b2609d5b7532f022195a34fd38ef53cfecead0ac19a582fd4154e595f09c932b4959e1e6f103e9797456f50bca9335763f3c948a8a31b222e5c6f701b3d5840c11d9bb986d0d5b9ec434f5fd0bf2b633ff5353c02b1d467272fb42cd2c54522159469b51968989443c8f680c233e67e9cc1062ec0ff7055096395943c80a87059e8714ce32369c843ddde9fcab91a7d2e099b502f6d397ac090214432ad24c09b2ebea4203a6032fe7d43099d39f8f59fa3d223ed6f2ba6713860a62305e9124094402d08946d9aa64c75185cb1d2621e55f1a9d4809e08618f58a027720910265058e793d5aca4d2a9352b1d435484378068ed9a7f6d90d5c7e7212b5357f0c73bbe4fd5fa8ef0d04394e7e0853f60d13afb4ec3645097375cb8998644fb32d335896735848c741d6fe606f5c301878c73400ce83ff3fe7f469d80bf712f023a7b91e4bb4c9d8d3df69c7b047d1b3bad77a0290068dbeca8621afa65e123161", + "resultLen": 128 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0xeeabf195a4fe5f7ffce0918c43429799be8b1ca8661837f564badf9d72e01bde", + "0xe8a06bbc81526d7d0454820c19d212214075eb6fc5f2a0a7b7b850eac8cb87f1", + "0x80751719655e12bb992a396e2f630337b3d98f5b8687e47fa2885a071ec1af2b", + "0xe96a68642597d25ed401b34f5eb43b5879cd7c102a64ffe05122905490917c49", + "0x340b5eba6cec172c9af44efcd22fe034477556cb1081b4590df7de22861581da", + "0xbfc35747b0d2b1d58f2d705aab8421f1c8167ac836b91548e2335191a1870696", + "0xcb4dd03cae7bf0c204c654e3213d7c72d832219249f2c6f07e26f8e899084345", + "0xb875d86dd195c9483387cd6b3a1fcf6dd17b5c3171c74ce7c30086a6c3224881", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000005af3107a4000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xb6dcefa8ef798a6dacdf78ec6cf7c66b738abe9c8f4933fb0db183034c7bf893", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f", + "0x00000000000000000000000021f52f5dccb5b09c3ffd1e8b1bb38c6010d34c04", + "0x000000000000000000000000c1c0472c0c80bccdc7f5d01a376bd97a734b8815", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff3", + "0x96816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe", + "0x60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f", + "0x4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9", + "0xfd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b", + "0x1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1b", + "0xe6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb", + "0xc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df0", + "0x57bf630ac2b87bd33e5e610d1aaeac05e085100dfd235ef5df6904c6fc147f1c", + "0xeecd034700ded0e6955a4fb7307d2b186391cba1e4d65c15941f1152ea510046", + "0xfcd042b9109c3cf3e44df2ebd97bf145e82e4e8e034f6fa776869b275e0adc52", + "0x1f683cba6415fde0797343943c629610c0def8cbb61c2bb03e1ba314aa5682c1", + "0x06114979e059c14e7a64045c1d4225bc283b8c905015ac533ae5f63970bf6966", + "0x67c67809fd72f4275809935940ff0ac724b92e77dc6a08e0df97c084f37da324", + "0xd7f667d2a7aa07b14c38d6a34b2c2eade061c70bf0be8501423a39c25b5be50c", + "0x255c82974ed0ec310932bdc33eb9fde2cf4f6458d911b5291389b8008c01fab1", + "0x9f1c5307521ac5e2a68b132a188214c1de674d3b89e9409eb020ed80e0f85178", + "0x8beb107dc692a939f6c0ec40a13506eed861a2d6869e687f2062578d978cbe63", + "0x8d9c601d8a45eb10edc384cd1a0cad8eff2697faf840a2936b05a17953d447a8", + "0x55af384e82838293e45964e780678a23a9128af4bcb30b51ef76490aa8c2d290", + "0x14fff77e086c60c2a507a9494d4bb17abf57cb9917ec2a35b8d91475f30f39a6", + "0x7e55b02e3a368bb232b5dfdce9ece4ace82a59c6169a74fd72763afb2b6e7c67", + "0x73d9569f2bedcce6336f5a2ea476a18d2c95aea4c97c8ab10527f0f699047dfc", + "0xc9bccaf36b669e1b9a8971ff144881ae105c1656cffdfa20a6464196876651bf", + "0x7590bbc6c179730f02075895840d42162db76ecdc8def04de59be3c54618408a", + "0x275c870082d2c362106b34b81a8088877b7375e9ae2cefc7104779b861749391", + "0x820fa9faa919d473632c2cb8a7eca959ba1b91705966ef43fbf9e4db5f60374f", + "0xde13eabe37f044a16eba714a2ce2a50a21ef80f6e2988c7f1dba9941e139ff3a", + "0x0b34f394187d13ab4860c1bfb779833b06f51feb3d2912023e09410adb9a70a0", + "0xdea3c4daf1522ea99707911e88976acb21d72b112293f93541829df9975d8c87", + "0x6a99215f24f42502ccbcebf08864da78578841ccb84f1eea4436663885385724", + "0x4d578b93d321cac5b08b0b4fcd2cffed6af379f6980a1fd7ce7581a0cac39ea0" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000058, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000059, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000060, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000061, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000062, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000063, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000064, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000065, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000066, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000067, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000068, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000069, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000070, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000071, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000072, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000073, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000074, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000075, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000076, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000077, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000078, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000079, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000080, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000081, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000008, + "txIdx": 18, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000009, + "txIdx": 19, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000010, + "txIdx": 20, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000011, + "txIdx": 21, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000012, + "txIdx": 22, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000013, + "txIdx": 23, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000014, + "txIdx": 24, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000015, + "txIdx": 25, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 0, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 1, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 2, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 3, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 4, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 5, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 6, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 7, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 8, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 9, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 10, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 11, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 12, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 13, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 14, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 10000000, + "txIdx": 15, + "fieldOrCalldataIdx": 51 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730004, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730005, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730006, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730007, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730008, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730009, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730010, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730011, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730012, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730013, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730014, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730015, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 5000000, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000001, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000002, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000003, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000003" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000004, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000004" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000005, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000005" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000006, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000006" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000007, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000007" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 6000000, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000001, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000002, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000003, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000004, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000005, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000006, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 6000007, + "addr": "0xed64bc9802b1e86b94f5e78cc100827431acd732", + "fieldIdx": 0 + }, + "type": 2 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173684, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173685, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173686, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173687, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173688, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173689, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173690, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173691, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173692, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173693, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173694, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173695, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173696, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173697, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173698, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173699, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173700, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173701, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173702, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173703, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173704, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173705, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173706, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173707, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173708, + "fieldIdx": 3 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#2.build.json b/harness/test/integration/output/combo/max(30)#2.build.json new file mode 100644 index 00000000..bfccd7d3 --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#2.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC3ICylt5gatMlIR3CY5yreZr5g4VGcQGDJ/4DoAPfd/BqiPFdzbgKfZc46/FZ73KKzaf5HOYza0x2jUHZyB/30KCP6COqQxvfTdP7KcxlNRaWygd7eznn0xyn0IXU7IghXH6RJVADP1sF0876vD4U+JqfErJPv2ok0wD1uKURKQCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN2QGV60ZMJmMPRjhdn8d7O1Ra76VCvUI8FShFKtRm4SVco6komqY2KZb2N1E0vOEX1sNqCHvl0c4tz1ohnadiFplBNRHUbD1rzb6K9aZ1RwBpAlDDbk/Rt5I+JRgoc/A5ZYw05gjob+HOlXV1PKbNENk12l2SVqV89tVt8xDtIqgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH5XgiQYZEv+Gg3ZAMTpEa1c9uvYeodPC5qCuMkrteH0rv69kA0exRoiaDWwjQYZuGsJm7uvAEFZkHoH40ms+rQw=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x1a87dedbd328cab893878b78dacbc3c118b3633383cdf23168a7602e2b972652", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KICAgIGNvbnN0IGJsb2NrTnVtYmVyID0gKDAsIGNsaWVudF8xLmNvbnN0YW50KSg1MDAwMDAwKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgY29uc3QgYWNjdCA9ICgwLCBjbGllbnRfMS5nZXRTdG9yYWdlKSgoMCwgY2xpZW50XzEuYWRkKShibG9ja051bWJlciwgaSksICIweGM3NjUzMUJiMDhlOEUyNjZFNGVCOGE5ODhEMzE0QUE2NjUwMjkyYWYiKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgYWNjdC5zbG90KGkpKTsKICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7CiAgICAgICAgY29uc3QgaGVhZGVyID0gKDAsIGNsaWVudF8xLmdldEhlYWRlcikoKDAsIGNsaWVudF8xLmFkZCkoOTE3MzY3NywgaSkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuc3RhdGVSb290KCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#2.circuit.ts b/harness/test/integration/output/combo/max(30)#2.circuit.ts new file mode 100644 index 00000000..d176ff56 --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#2.circuit.ts @@ -0,0 +1,54 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getHeader, +getStorage, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + + for (let i = 0; i < 3; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + + const blockNumber = constant(5000000); + for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); + } + + for (let i = 0; i < 8; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#2.output.json b/harness/test/integration/output/combo/max(30)#2.output.json new file mode 100644 index 00000000..443e8c98 --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#2.output.json @@ -0,0 +1,317 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x94bfef0846ad9285831dc9b36846583140495843d1fc945f37fa90722e572b0b", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x9854cd577fbc35b9b49a44a8ff08307a8a1383aca54705465cabe33d7da76b15", + "0x41cea4f32986afa3d36de0e7b4289c3c10b24e495821bdf518a5718b2c130b6c", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xfb6d844af2f19c58138df995dbef737169892bea1ac998bfafa9961d35668d42", + "0xc4fc94a1e6c5efdd8fc2ef8d632a611768c7d5b201098da94d76ad8dc210796f", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x89f7b5c698764449ed5cbd6918d85a5434ed9ff1fcb31d05ac9312d70623452c" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff396816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9fd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1be6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3ebc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df0f97ba8e24e3af8d8bd46173ac2f6c57269643a5905de75383ef5be263772664ccd5f7f09820e02178c4349114ca88d57bb963af1732ff19a78a72a97fec9cb591d462da26aba753bbf63c59bc883ae483ae0de807e612c454d7b5ed7cf1861555f004e692c32903d9af6c1b3f784d6061bcd66fafe25d1cb63ae29ec1d44ca484bfbd8366f929e509bb05d87d1a9d7c8b83b7eb43918ae7c271c0ed798290e6575a0889f9203836278eb968732074f0c1a3a4ae839938983e9539a7544d06623c6ad56a87797334bd556c76f7c92e1afdf0c518d4f9efaefd91a72b91d05e5170911454a8fd99c61f2ac0ca826a5c3643178018d905d4bad93cba6a4e0299c2b170927e25aaaa5c768a6aa23eaf6985483600d659e0a88d424b3a3deb94cfe216b38930719b7e37eab98ec77d02a99fcda800259445c1999f5d49e4444aaa7021097409271b8bdc0676345765e57e74b125e148a513f36f97bca574e224a2b41ad8ce57dce02e823556392dd4a6d983bd24b8051c91b562cb99d3b8f2e4af314126391457dc999a9cd27b16d85bb7d5e991864ab7ff4157a2f0ac622130d0e587834d8467ead166746581febeaa9a2fb51dff279808667effbacc9b5b807402cd9228c9d56447438e762a787b4b2449c155ccd481f42d4eece470091675064412a4d780f50101e1144d2e950bbadf9475e8c96a25e4bb00ab61d16c0105bb446aa6cc212506c5f0e8b41b44a3d279446d755866c87c3e66678ce92ea8d1fb72ad656caf47c1423b361cb8f95d71cd2ad532f3b01d7457ec811cbf78f26b3c90813330aaa06c00c30a953241e1612780e821ff6fe7988354a99f71a6af0ed700c063a294f23a300646c5d4ea183d739c2a0a9ce0f9c154d16e9ba4a71f909432d7c5bfb2899aea19f7bd733ce45c6b2c78aff3a6e2d836af3552ac70fc7f72d2832c6cd3612baad541f65fd63c62847fc83944f565a77d71fef6d35811a5fa7033f543c61fb23f6dda62c5fce144605a28b12d93d47befbbf0506fa02935a342da9c2d4b8c67b18d313c618774f8980830ce7e652a8a8195b01406b85a4edf01ded269e7b02883fd59656f580a20be0628c9f6a32abbaf96f2ca9b127415ae616bf802f3cba9f0a3ef8e1eb881d0ca9a084e1cf1f3f429b5c6b8d50713a10141c86f9b4d25972dc868fd68d71b03601590ea8454cbf786843705461c5ebe40027a92dfa2ce67147d13d32d644892a217d2d1bf16c14cb756232e07bc504b2601716a34aa342d9be7efa3871bfcc3e7cde9146798430279a4e082c6fa822d4c51f0c291a2c50f5d4e1acc07c98c09541f464769b12b03bdbe072f1f0210d9bd11de32fae2491a54225b5739fa39487348c4ef40a4f8b6d8778492c295294dc741d1e4440810cf7f984c6179a7710dd4bac489cad3c700f69a8acfa1856d119c105ab0ef0adaac6c3b1732af21e5e1c007a392126a2e94c5985a11578226e4fde1998bed0068d46880e0b4818e40b7d3682727977eb37a1432fe9083416bc216d1e4d47e2c5beb7d2feae30f357ce68ea01d62f12f619cc386990754d4b3e0d302437182024407dc4689b6e842478947c80de336674d2144370f0a78e36ffbf811c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dc2c91379dbe331562051f0db0b0c556eb7b1a86b4b15c603a02a31b65e41515fbda34c5638ca695a7ca05012a0083e18b7310317b28d68bcedc5b875d45d81986a11bb99610bbb6212c0b7c5d6ca9a3ec0027ba5df4224cead508e5404bcf1347b8ce58fb217418b01e83395c91191b30a097e98a1c46fe95592f00dabfb004891420fd4011f2e2e156bb7636b3d8287e943f3da23e5ee0c46eb7f392d6fb1d9677d5941db79dd261a9053d56c20191faae0167fc0a36121f946cc8c6d54216e5ce4c541a38ea3656cce458a505209792165d1ccff17d19b3e2597f8f1b5d0ab476ffa5993116d0aa7b6167105f589ce76bbad7bcc2e33558539cc178fa9612e1ba5be5388b186172875b3bce66237246743ec0e14d5ce91037b5d3dbb1d0283fcbbb0f292cf9e42a6f4e13b56ad71bf2fef515fdd1acc35ff77703aff55b070d7edc42e0058114dfab7013405c265d658b1cc3bea4002d701bf3ba1b624020320abe794827ba72f3f1ea10be86e2ce01994c2cd993b3519a6cd7baa0977501db94f6304ed62147e9dfdbc1dd44c592731efcecf6ca55fff34d45ecf014261595c552ab4540268f885f8ee613878d41cc1578c175611959ebffcfab191abe268e78bf73ecc0b2f0edcf1c77cd7dbd78ee39c284a4dd5bf183649225e16a330989951d761409a23b7456e3e37b555b45c0ba91933730900625178914c813032595de58ee16ee4d22045bedf0a51537cd1ca7056d31185685b8fc30b3f107c60e68d47646f2891364850c77a5e2ba25bb9c1ae6533a9e43cf1e51df1510fa440ff8b081ddbd3e7106cb7af108c5475e480f4972a074c54e3d524c38df61686b231d690e8e7e1411a3d67cb5755a11c9e3f5a8f72df95cca4d76967abb3d84a01d444cb6c057c96429f43c2cedbf93139ff65168f54c474b2642f2e7ae67daf50be2f70aefde8fff3c387db9472485537702f9b711248269f0037844bb43800d0fcfe0ba25fb24e17f4bac3fa628b4000a7a3e8801cfb304e13ab9ade52fe44c2154dcf65fcd73c8bd6b3637d2f88570b40ef24a8a84148c7059564440c5cf6d2ee9bf9f15b73a61723f1a2c1e92d2102750124c2676f73477ad452e57a01dba6bdea3ac5cb09e16aad1575c0e795275aa634349461a2b11be3ac78ca27f63292d", + "resultLen": 30 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000005af3107a4000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff3", + "0x96816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe", + "0x60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f", + "0x4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9", + "0xfd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b", + "0x1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1b", + "0xe6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb", + "0xc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df0" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 5000000, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000001, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000002, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173684, + "fieldIdx": 3 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#3.build.json b/harness/test/integration/output/combo/max(30)#3.build.json new file mode 100644 index 00000000..f7a5c23d --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#3.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2Z3ZLDX0Fgdg57WQfpCXkwA+b9GK22RLVO4mksim1QDPgHSfDQWlTQNOiU8LlcdA8Jfx5ESQKKQP6PpgpkWDUjsSWnPu59LLE4+A4myu8FkRTMjVMyM2AK/Ulf8ie4vyPZTbCkvXeQWZzL7Dsx7IBE0s6ojq/4+uByEAhE1Yl1CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALkAga3YVIvO1t2bCeuDAA8mXY3RYpmG8nS9y28RCkQDl4wcVHPIfWKcwpLH3QRbCYgTHconP8GVc2OR33flEiSqeTLKMicW6HiJaeQMh4NgjJTw4I0DbS0TggNq+htwGeidPkCHQJkjbd95L6U7PUOMSlHG4FrkhY08DNTcKWgPgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH57Izk7Sq5disS5wPzHMvFGJBURMU0RMQNiEHj8AVj8vpLlb4oKcXHB7fFAqffIF1OMNgwdkac2KF7I11QfargY=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x2bfff804d506dce8d14df2106c7e47354567ef0f93df4f6fec811000cdecb4a9", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgY29uc3QgaGVhZGVyID0gKDAsIGNsaWVudF8xLmdldEhlYWRlcikoKDAsIGNsaWVudF8xLmFkZCkoOTE3MzY3NywgaSkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuc3RhdGVSb290KCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#3.circuit.ts b/harness/test/integration/output/combo/max(30)#3.circuit.ts new file mode 100644 index 00000000..c47b88ab --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#3.circuit.ts @@ -0,0 +1,46 @@ +import { +CircuitValue, +CircuitValue256, +getHeader, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + + for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + + for (let i = 0; i < 7; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30)#3.output.json b/harness/test/integration/output/combo/max(30)#3.output.json new file mode 100644 index 00000000..c77fe7d8 --- /dev/null +++ b/harness/test/integration/output/combo/max(30)#3.output.json @@ -0,0 +1,334 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x9d88f3567a48d62b0ed896005ecd98589918123f921a524803c66f912fbc4d16", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x47d3efbd02d8830bf0c5c1149228a99153a6b3f9e2cc085612313b724bfed42e", + "0x72ac1923e620601b4cc6630e92da281e64da4a1f0f9d0fd27f948096d00f4d12", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x6d61346cde604f273370b6d677e69584329ece27278fcb7e7bc9d825bbd4f655", + "0x068e7909f3dd1560c47223dac584b005861307a7e8c3979f68fc30983ecc331b", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xfd555dc10518c00862ceaa0a4e4800919a89d47a891bf7217eb7435a77630562" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff396816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9fd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1be6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb5968a1605e74737e58e6b499f708aa7118b54f8e709da2b7612018231f25ed0492e7a044b3038e2636ca1750c69767bb4b5ea13adb225d4a3e10ed50b57a1d1bd46fb8b405ba53ea2f6fdea23c4e99601a22718f1a96e56af6112cf4b73734053f4ebbf67c816f378e63077c84f3cc3416f46330579ec24fd34950fe53f912431fe7a08251457c706d9aeb1894ee94cb107be15923847f70807664b1ed26cb638e42f1a5ec514fdda5a1310af8abc7fb43d793218705cfcd4d83360674bbe22d4ed65731b9ff0af41842fbea863014975ec3305f66211d2b2e2327ebb6239f53e4e4691ce77cca8f464dd0e2e7589d91b90838b1ce439bfa77cdc8c962764d5489f1d988f308592b1e7d18daf6d4bf5078d9d715f3702efe7c50c98fe87170242215b1162b91eb08ce2bed64f73912140608f4cae1066704ffdba65cbc5d0767bfa8b692e9029df41a646307db30d44612de42d8dc41f81ce6ada58f7a6227473fe6116380790878295cec63b1e51e3f7104fca70479fe2452169ec66e7b1b5c82251294a49f8daed879211908abf5eb3ba8464cb11e1b513d4dd0f921217a0a8bca1e31cdfb485b52a8779eee26c7d7b01de833d1db5971ceaeb5ebbbbf952e495a856b28f31d37b08f979faaaef2928a8cf3253e66fb84c5cc2789af04ee46ef2d0f25a7439bbbaf0d0514cd6f5585b3d6535ffd51e1f5e16c4bd447273d6b4c866dc432d75f3dcc9b6ee94922a260fcd3b96f936b99faf4b9c2ec1419ee0a46d5c5624a7188c68c664518830333f3f28fc2dbf08b52e576694a6ccd5ae82627b68f6e4bcce4dfa8f6d114d73f77bcceed47bdba7065db82946b8df81aeb07db38ff6a4137094d79e233c4da1abb80044d4970dc5d4e74201ee74228819e08e8397bce93cd0e617e468d6c61132f1cc8687cb2ce59bdbe0bf2b351b7758c09c223ab0e4da08d07dcbf938e577bb5db244977b151a6f41813faa25ed6c169078794007b9ea7438455a9586f9eb16c24db95470cc70cdad78c958323b1c397229e096a115bb8f150c7028166a76597bb8eb99fc127f9670dd477161093a22624ab99fae1cbb6221945e5b8f30e0b5875422ae1ee46e89924abd5b463cb1fd318724cadb8ab7bf1ec8a51a998da081c33ca464860bad1aeaa822e0ac982465f2f259163b2d51f6802e9ac1435893352f7bb3cf63715012ef0795e5782a2f90c191d13f5872b6cd10d23401197cd563b0f8a890b85348df3d6601fa9545a8872131ce6d2234ad8b03e873650fe244d845de6a97ba377f6351b7de5e04a29d89d13f16792a3da4630ae8da2ad2ae9333c732f099b47e9f599a0762b70c04d3b50018dc6e6037d0d350b554cbbf44be587c446910933c6ced51f87503d1b0158a82517efddb12c6cf7226c27518e791b73efe17f75e06e6cfbdd1acbdc0b65811a28ab9ceb847c574530a9c5562e64cfcb951b28c4bcab5f7b5e8963dc238e56a11bbd68a6d816661c881f8dc1dd2fca0d087865f896df2fc700b4569e14aa900b271ccc18d4f56458727401ddb3b4b3d1b45e7b0eab2f9fa845d01a936b1e9d841f9cf99539499aac9da721b368a096773dec54a21fbdae9ed7c14e96ca0644001c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c7090eec7caa219395850d0d3ac10068a4b2c8c72d8b0b75d9c5e92f3f1ec296a5ff10a2e0841f0b4c2e2ee01dd1382729f8e4ad8bb3334fddb415cd6c88a0631a9b43e21005ce26eac6aa12ed39ae45a4f26d82a4ec84d393f68e211c2361852810c152eead962cca75753cb4312d85b64957472f8f2243f2c77dfc13fe30bd91f1a24e14f6c12c62988503d130d1a4bc9eb8e90565010b092199e113bf424d4495f5190a1bef57f1570655c7555685928f3428dda72be757017c2a13fab2f6d9623ac118aa7f031514d6d20038dae22d22f700f35897460f6ece9933ccb2e3dc52456e7731c1ed75916ff4653fa104040d8822cfe71dae447b9254e00960269cfb51f02b43757b39990f0ee8231c520050e6cb3cf3c745aa4a56b8b22d40888feacb1d058b851b7ec860446ca626363b9f33bd2e3b12a735455b7e6bd021729de3d19271a07d464c2c6978a699f1995463070a702ba0a820d919048628627f6b8aeb005929fb87e33ae0966cabc9eddf543b55939cb5bd764a00da06f8f03dd3d12e56110356ed33896c6cd15292c82f5bfcaf6e048e37c5bd4a51149492af31c9db8e3596e3f40cfd252f261b47fcd0bf48352773de344fe42317fbfb00de7e3e5a11e7a5468391dc9fc4de494c8c57ee8ff6e120fffeccbe2d4fc6cd6053bc1fc164998ac0ca05bb61319c8af5d5f0f138476787d23e3871103d8b8db27910cb8c525816428a7e6320f70d1d8a027b7bf602101c24d77cdf69666232629d67e1a8ea2560a84f36faa2f691fe3dcb7366c32a4a503a59ea8455ffbf4db1112d4f233898a338a05d4fcdf104dea423608bda11e900ccca740aa0cf3ab862805ab071a0f286465e4f038b7a3654fab3923085c864a7158345be43bece1710f462b3877357d140e4630f0eb76eaef05fe1d85789664fc65b32f6454216dbb0d93a1f99010f03b136edfe64326c4e8c85ac2cd05ba83ba253d49514c936cf606e7be8fd2c5a3a98fdd2e063de96921143bc3eed0993d13b8dd6d8a9d4a12e10324fe9e140d050faead13ed45bd5b66f65f76bfb2bed5acb4b10fb6dca1378d179648483d4fc6399bd9b8d57e26c6d2ff7bd5fdd297a8d81009d4e509b2a07e51b6456ef8215c4368e20313fe56027e84313be4408cd49bd17313b0dfe10d1568", + "resultLen": 30 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff3", + "0x96816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe", + "0x60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f", + "0x4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9", + "0xfd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b", + "0x1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1b", + "0xe6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730004, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730005, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730006, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "fieldIdx": 3 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30).build.json b/harness/test/integration/output/combo/max(30).build.json new file mode 100644 index 00000000..a76ab6ba --- /dev/null +++ b/harness/test/integration/output/combo/max(30).build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2rjgsvXkzlSZvff4FJn7TelQh5mMmV3EyAnQqSfJQ7Dy5mNR54/cGWCf22GyPA33SxY1qnqByp/E+LFU5+rvocPuCZ8b19eNjY80dAFxiGGGhYP9Epf2j6b2t/yb9ZDh1PpZT6ANMNNx0kZZLROE/UdyPvU0z6yVo4xza4zZRtAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdZGmuG4sDiJHkrfX0Ko6MgoqxBBIDxG73Cw8jOwSoa/+4xg963b1iUfQRGE9Ll7pNxf8QyLwBtc7tOSQtnECEXPlyeUX5zu0UZBZxYXc32r+17fZYuh6gfN/KXKYKFLogX9ltZSDaiBrN2xtVjZE271IabsCtHpvUJNDpzYiEEgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH1sgu01Y745eAaXGhwYm/UvX1uVV2ECxtUP9ncAeDSADKmE6LvcWKfvav3qcoQq4VjCA744qhpbHmJ9cltswqQE=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xdfeb323dd382f7257878285513b06c94aa88193ec243c604c2692d697ba785cf", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KICAgIGNvbnN0IGJsb2NrTnVtYmVyID0gKDAsIGNsaWVudF8xLmNvbnN0YW50KSg1MDAwMDAwKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgY29uc3QgYWNjdCA9ICgwLCBjbGllbnRfMS5nZXRTdG9yYWdlKSgoMCwgY2xpZW50XzEuYWRkKShibG9ja051bWJlciwgaSksICIweGM3NjUzMUJiMDhlOEUyNjZFNGVCOGE5ODhEMzE0QUE2NjUwMjkyYWYiKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgYWNjdC5zbG90KGkpKTsKICAgIH0KICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7CiAgICAgICAgY29uc3QgaGVhZGVyID0gKDAsIGNsaWVudF8xLmdldEhlYWRlcikoKDAsIGNsaWVudF8xLmFkZCkoOTE3MzY3NywgaSkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuc3RhdGVSb290KCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30).circuit.ts b/harness/test/integration/output/combo/max(30).circuit.ts new file mode 100644 index 00000000..de77b246 --- /dev/null +++ b/harness/test/integration/output/combo/max(30).circuit.ts @@ -0,0 +1,54 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getHeader, +getStorage, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + + for (let i = 0; i < 4; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + + const blockNumber = constant(5000000); + for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); + } + + for (let i = 0; i < 7; i++) { + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/max(30).output.json b/harness/test/integration/output/combo/max(30).output.json new file mode 100644 index 00000000..5b18b4d5 --- /dev/null +++ b/harness/test/integration/output/combo/max(30).output.json @@ -0,0 +1,322 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x2e6ff770f8a4d13d3fad5af9bf79ea750e69612ddc1b20afaa2b06b31a95a727", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xfe2900e380697b1eca5634c3b3da222c2e0ebd718fcea7208d19563564f4f047", + "0x6680d786a574348b78c6195a8a538ccfb874c11fcf3d6a2ea8b8adfd957ce829", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x591b8cf8c0ef3f6edb3b810f23e9bba0337beaf8e56999f40484edb6a128335d", + "0x4b41746fc94c63bb72c0d619d6bd3554a1be5494d2531eb672244ae5e95ca468", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x54d88ca28c2a88b35adf02a6bf9f2e4f6157e8745e69ac6e4624bcf303b6ba05" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff396816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9fd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1be6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb235dbb80ec0276473abdcce00db076b2ea011edb5b44cf3f467ed4b3cf61ab4737992e2eca016e1490e9dc76d11aecc57f57024f242ab27c55f7470c43dc0316bbf3593a890a5a3206fc07a882cc5de03f0ab18ec3813ca47780a13e9cc14b291750cb7a9980a4b2fd0cc1193fe786fc11a37c54894afdbdc44f515f2b652011c10f8d8407b4df9342117719a9c5aadf4d5c0b2a309f69703052444e8824735946b1cf46ffba9a90d60188e57e3598925c33e9e9c7f1ca0c9c305a9c228889059f2c0527b28e712fa1f2d734ca86f6fbed6e6c5c700b1381598fe6e29c8d1869eaca342e2af81cbb280751be086554d24a28700e41362a0874764c8e279a5a2eb1d411715de705e3b9f72b0b30799d4f65d279e7c73e26aa17a813a856433c4c3c52a13ce33b7a9f80a7aaa95f689ed28d5e9027d3fcf27614a92db220144e2ddd3bf1086a03fdb32bea651b1926388a0300bfcf2be65d25b573a21255355d1c6a3c7dc0537a54f44e99050174cc252e54208d449def7547a5cfed54974c796cfbe8ad64ac96729019c866deef8638a2db8c568318124ec58a777fbc870eeb54dae97d70d9ae10b125907e377d8924cc410b7b30ffbb7b80914af14e519b8721d2db22e5e4f0def0cf5d8b2d27c976eba12d22ad197da66ec27cdab9f605690ae0d7091eea6901b9ff091add3fa69ecf57a41aed9a676f989aba00761ae7d32426d7de40929a44f1d7bd17cfec648b4be061ceed0437cda0a3f611d9887c360f8266072ebdc8cc75c9613d3c296132623b29dbe252d033f2f75f109bdfcd67262f5a987c04446e98e4a2f1868b758f90bb20485c018f94c74f5839d4e5444727b25f5b982eb7d2daa45da6d1bbacff573e5c8d816be2746d3a63509383d8c30c73908b1971ea06056ddcd425b5bb0f159b127193ae7b09c7d5a6a2e353247e1f8b742fb9aa041f2763fd6348660d531647ac99d174d2274f5cc62a2a95d6a01dedef2b4d4b6dca592ce8e673eb625ff0f7df5c4731893ed73df0272f88581f1cfebfc98aad6e6060a4527a5ffafbfea310c462eccdf02efda72b7a961d6513232eecdda51fe734048ac1cde575b4fd0a8a7135cb8297965c6ddcceb57ccf6f14fd008cd9fdf748ab5bd34440edf3720e0f3c6369bcdc626a632598004a448002bc3e808746b48be573e2faa57fc94db11ee132f21145b818621ec7bbc980c826ad9942f2c8f26643ea4ca6754157b01172de0b3ae8987cc862342b9d81bccf148ed01f9a56edd20bb279d45dd773a6a31438232d36eab82bf27e79baf2731226b99ebc84515b9db6a372a7258275b51908eef2929fe976c58ee589cd6918bb09d85bd3c6b7854d6b1f7c7d38e6903e776d6884b0fab7cb23d0362ef21f9bd6284ae680c2e746ee17743a6cc8b4576ab1490394c17c2fd58851c27556f263b91b568a502f369f387925242de9ecf6f82caa4f632ffa98c3d3ca86b574c14ac82cc3ed455c3d6ab24f5233cb15707d06031464f1d3f470ffc61cd887c14c6d4c0f398850ea04f698692c1cce60b0baa1962ad31d04b1301fbae39920695fa7fe2e969a47812a795ca47b3ffefbe41ea91aba78f5c17376e03c7b8b16ce3b02321b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fd3f8e40e6893d737e4f1d48eefdbf056d605907a2cef6cb43334f67c1a8e71d38650b889572e0ffd4bc32ce2e3c8eb82605487a0e1b695c2e8c093e13a04329c0b24cf491893c0785e5af79a1cf159de5966d4e806c24da78952543c870110e11c9b46658bd6192cff47fe4d1bb7b5442f53b4bb8b1a81509d1f31229da0627bc32029a30748d632b765ca81f302a9af5184343ffe609f3575dbdd72c9e341aec8e60fefde61e7266cf1f8d0e4640954c9383ee45a9cfbe9d6a843f4a624d063e8272ee62149846a31a94bfcc6c5d493145b0aed1980b823d548743d1e8872da3445a4fbf4e037421ec353f8c5e8e156977f2ba356054395f4e3ba0a02af90a95dcd98dfaf529cacc1f4ecd83352d02f25e809eb5937cba6731e213b9645d23388f7bb92cb2b044714fd412c852132d022e41f4c12e7d780ff90c55a15ea11320419ef96d764de318def2d3f3638f69de3bcf1d64f89a3866899abf2648d328b282cd425dbc93b8c4f5feb994fc48b8c004485b2b58f2f621775bf1fc74282edd7abed501cbf5215ed731abf429c4cd898f59fb75b629718e5386e62f453d2dd17da543240cee870c34cf35b0ff25a09580c6fc415f2271f223efe50623552a2583a2bc5fa5bb40917c7491152aa221ce3c5d5cb2a95e922d00dde833f6a7098142f19199afcb84033c8c07386f4938cd73422ca219e24d69819e87068d89138282b36deae5d1f0aaf6257bd4c60c2c9db7dbf5df7623ed3a9fafef8090b922bfab077b7cd4995c57ffaf162aaf591eca2732a2e268ff2aa900482b190ca91c53877677b11c45f2b7b5382ed617f1d5eee1a4dbcae44107423e57ecf9556c03d97b5bfa5b1497bdf11fdebfe8e115a259241c3e7a07010fedc85a5cc786c0003b60ef7feba922f7c90710305d5f43808f870ccb61aceb53a0867e1d1612d8031840661d405fbeaad64c636ac64362ef5ade11a9297c2df43862d60bc871b12fc949d16cb9819a6c4741aec5cca6eb6fe82b80f9dff325e6b94fdb2b91e53b26c408682805b43cd80e34a51c18d4d7300f2e73e6170818e97fdc913c32509b173133c0d2feac04a9cea8bdefb4c2d8088f415b605bc2b509fbc79eca677a320df9945812370f98b0d2c421ad2d371a67eca08dc666a88ee03fedfdf99b90ff06", + "resultLen": 30 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000005af3107a4000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff3", + "0x96816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe", + "0x60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f", + "0x4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9", + "0xfd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b", + "0x1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1b", + "0xe6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 5000000, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000001, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000002, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "fieldIdx": 3 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping+storage.build.json b/harness/test/integration/output/combo/receipt+tx+mapping+storage.build.json new file mode 100644 index 00000000..3f294799 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping+storage.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC09XP7ghTcME/xLjHclRnfQZG9FCfP/iVvak5QSPt9+DieuLaNw5i0L8LrLMMBVWhwU8320hbduul6TCOKCpk8VZ3j1tZiXtECA30efFBcxseLirLjQkp6paaeXD/kU6xbQQZW3rTR+0VrurNAqgatlrXEdPtZ4nQhW5olvjiVrLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADlplf5Le+s9TAzAKq+YSV089zzcdgosZ65c0sTidmgcGtCNZx2vfMyB931I+Woq5+wfnS7Rges0U3Y4+i+6Khqgz+FXiAh4e9tAU8+ThdkjZiJrpCF2S/DHnMrsvIqBK6Kcu5RbW1vK0DbYoh1sS/w2U97+ifgmci03sofPuZcpgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH39V/VejlYb81+yAQO8tO8Te6TDwpSxQM+e6veHXXAkQoBWxafL18uv/f3UktXHK9IOCt1BXu508pZCFcEf/TC8=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x0a9e52fa5fc6365ec789aeee39f2dcb9db4e3bec72a4b619915bb2b65ebd8d29", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KICAgIGNvbnN0IGJsb2NrTnVtYmVyID0gKDAsIGNsaWVudF8xLmNvbnN0YW50KSg1MDAwMDAwKTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgY29uc3QgYWNjdCA9ICgwLCBjbGllbnRfMS5nZXRTdG9yYWdlKSgoMCwgY2xpZW50XzEuYWRkKShibG9ja051bWJlciwgaSksICIweGM3NjUzMUJiMDhlOEUyNjZFNGVCOGE5ODhEMzE0QUE2NjUwMjkyYWYiKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgYWNjdC5zbG90KGkpKTsKICAgIH0KfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping+storage.circuit.ts b/harness/test/integration/output/combo/receipt+tx+mapping+storage.circuit.ts new file mode 100644 index 00000000..c47fccb5 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping+storage.circuit.ts @@ -0,0 +1,48 @@ +import { +CircuitValue, +CircuitValue256, +constant, +getStorage, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + + for (let i = 0; i < 4; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + + const blockNumber = constant(5000000); + for (let i = 0; i < 3; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping+storage.output.json b/harness/test/integration/output/combo/receipt+tx+mapping+storage.output.json new file mode 100644 index 00000000..9f7693b9 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping+storage.output.json @@ -0,0 +1,266 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x12403d759493c1027925bbb8f5315a9a3b961186e77f50741148930a1df1ca0b", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x67aabab4a8f0c6d83a085f7ec191916cba4b7916e3975651367e42899002232e", + "0x85681fdc06d275e53a111ca4238ed30093570a377e723392633944897b2b342f", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xb967ac8a5a035c02381a7c4d5923bd9d52e079552a3e509e81efdbf8aafcbf6a", + "0x9a63a2e5ba4ac78f3f2af8fac1f43d787f815c78f28f8b94a38682080fd40a63", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xfd886338d62b4b1003ea6b988f1b635499c78b9dfd45de8b783b73d5f3277245" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a905c596cf8e02499a20f11a9c44a080eea75bd765451f4d007831c7cd7c6a12d98c972f5a6038a215366e285aff44f8910711d09b6e7a8362d9173cab49bb23d64dd65380d825d36150b1899085a993e96eb3dd559475d2d2be264e89a2394f1ebd1fd859684dc46052a76b01abdeb9c7ebf0c2631dcc98145a783eeb787c18a88d1e885deded0126853a050f33e4491c37c0edfebd0b3c9b94c2434e6ea26e1fca5a56b9ca639a98b85e51997513f41d7f88283b5e418a70fccc390915281a965a6d707e9960ecd647ee2bcf5bca864e1cdbe654ca8ee41273a8310edb7307d9856903861c3ea43169ee4a3ad4b24dff58637a0f2de4d390b993b09838f66ed7242cca75a33365ecd12f595bd485fc30449c8ac21d60b227fff6ab6dad5845fc291a6e79bc03f89a06b846dd7cea5d0a15790601b5f29680b90c0b0114505b9e6934c290a8f053c9318bf507185b50dec2bb94b5d5cdf05f94e054f5d3f74b78f44919c76783d083a5cfb9d3f0e9921d4efb2c3cc60c961d1ac02bc7af61494285e30932899332b264d8fd1242d55e72897da099af1df52bae9bf50bb7c764668a1f17c9bc933262f56b60ca3a5d461726eed6e72d9846c0d8d26996d4ac18c4009e52cc1b2dec497875be21741606bce50498931ee26c19611c70606c4219e63be01be4b21d5b07bb34f701eadc0f077008e69749c490c198eef1fba81c658668d8f8ea4bd5521c7ed816bff705f76abe08711bb9208431baed32dcd3ff2bd43e27318e96ba81e20b465512557218cdc50b4f1ad2f22cc05f6503d3c64b259edbc10ac05c09b64335d4103dd8e3db1b6010d56346bddc19cb3a514675b510cc6493e2670eb14d4d4179633e311f334fa1d84b63736abb6611f6dfb03aee263adb32cddd473d0bc597a81fee333418212d5aa344cb02a77cbbed490e54961810436a1842afcb5a6c35c610a6df676b599e2c6db420e5352610aaa543029a021c43a66b14dfaa70745c497fb7d27d7dd4473f7eb76f2ac9ed6e0937b911552a43fdae6860f8361c8eee4291061ef4af5058b2ffddecf27dad718b255ff05b1fc6ccd800ff0fc1317c029b5c646075c92fd3d44e17e3ba14e3dc4f80a70072085adc688f67e6ea88ab98f7f0c6abb27608b2d1483f44cbd2cc806ece9c2d3928d166f626b3e52aaef35f08210cd252392bb183ccdb0abdaee23243205859481deda71e6abe35f5b9917cfc2fa077e2a36fa6d5da7303f9d062da91c24f984201ead8fc5366957cb835fd073aec208e072af219c1be60c1bda278547c3abd9301754662b6f06933b1b2ea2d09383875bac226e7bb1bc85ac30eccf6d0b4ed680ee04717c8baab2b6f00e8234021d6f2f5eb3cd3cfa519c84ed26c3ed51d421825a33a2cf9189fb2e1f7e775c59c7ae53fc137c8d9a12fa74fe3e9ba8fd0daeb15b548655a6f2ed0c145a05655ef34e599f3ffe09fc85a39c0303b8d22b3aadf022f0b6ea06d351fc7d887b030989f914d485ea29c1f212a1fe475936afa5eeb0e396171a0ec27273d9c6854b04162e5623c20977dea03dd4f12f8117024574b063bca4d40b6fb9963a286e3678d55abcc2f7d9348433b56c945af7d16e0a6472600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029c10957897411bfc1923a81855854022b36a58aa9cf0263f0c477d378ce8d09efd5bd13493e34ec4991c92d49dbd6f442d0e8843553361be62697a6527ccf25f7cdc6448aa004681a8427003c404e24abcdd66ebf8a381ec9c74fd0c0b205131c24edecc69140ac7f7540cbadca51cb6116126da5ba8554f8586538e2026e2912b958488aca9ba1d74db64749640aec548780d83387d7834f2d04a55198b01a3c9b7383ff691481689b2f8d976f0b9622d33a024739f078efc254c124697a2be6051759ba67a8a7e0fb0f66b23abc8bec12c540844748c87b76b784638c9424d143d9f3d6d5cee4fd6185f9c1faa99ad4f0c804fa467e15f2bcf997e9b5392ac8061f0e9db9556b1218a05368d1c817ec53d0d59a027fc2782f96bc708c671e34574182ba7fb445d5c5c4923d278e835ddaf4edae7beafa80c131aa5880fa08158989bbbd97b1c8cb0f6a1c8f8b9976cb0c8ecf07e4fc1b8fc7bdf79994d215c8da867a876ae81d094f3ca22cf2f01a1cd7d1721ccc207a1d478e7706dd6e19837ae23de2e09822aaae1f5416596f42c9bee0f2e2ccb7ebfdac16be23f8cd2e183ab95ed7daebe84431f09b19a433341d3b280254009670ecbb093c43b5e7288ed274e5a6ceb519cce8232e997d2f1a1704bae5ae76a5d0dbb487453c1b0226bb3f04c0b9cb5fb66c00fe740e24a782f5703a00a7386c3bdad0fe5a50ba8221e817263e08b7c8c265ee6aa4b311ce6c6379ac784c253a3ca87113260c86ac1f50bff26d7e93a2ce22392eaa30202179c1c5e7e3bded270b6673870412b74521379a8ad1d17c0427d1798148b4953f5e413f237cbac336988a4b5f381200a81c6789068902e25236458df2252fe5feece0336b9b7d3e68c16c4fb0a37b41ad0a4c3c1ca634b786fe58fe2cc6d63d75790da24bb35e1e216425d2cfd0bcc1bc253ca28f1104c3ed92e7d50ffd0fdbd6c715099ca269efe2678b2bcb4f901593205a25fc911a674ed1245ebfe09e981a2cf17f170f3db426fa28e3cc29e1a9311779eca0f88d88297fbae149c4dd9f51e995df891d5d4f33edd7991b0286c99c0861bdebf804aaed210e37ae2c2e91d1aed9c0a9aee11daa75a0e9a2f14ab11b4a78f793ddc372aa05d08523cc01579c466461be3e850845d0e349798921055030", + "resultLen": 23 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000005af3107a4000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 5000000, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000001, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000002, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping.build.json b/harness/test/integration/output/combo/receipt+tx+mapping.build.json new file mode 100644 index 00000000..11630e7b --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1ypIot060EefkW68xlW1/ETLwfSII5VED6Ke5LbksQAyG2hh1uteqHJ7oNHR4tSRnSi9qbY8nMvjXXGDXEtIUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNPebX6J70EE15cqUjJPoONaboI4sn+6U8aLXN3z+wQRADa1jTjSWwHJL4a0n5zKXXvjJOumB8wj1pX/bRWKw+3WD9O8EC8lvpAtbBP6nKUzZV4vRRgXRDqI9Gmzf+8HI7NWtasiJgUky2NrBt2671KH4JOrZaQdVAfe7h89qwtgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH7xok1jP/EGt1uDrdl0DkJuFb3NKOFnA7sTa1Ls9qlgjfgN6sHFopWB4FRKJ4USeurp1/DN5OHeVf+mhbJO/vAQ=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x48332c0113aec8fb7d23b6c1c01de2b87cb90c13005988dcfa5637d4483a33b2", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping.circuit.ts b/harness/test/integration/output/combo/receipt+tx+mapping.circuit.ts new file mode 100644 index 00000000..7ad3fb9b --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping.circuit.ts @@ -0,0 +1,40 @@ +import { +CircuitValue, +CircuitValue256, +getReceipt, +getTx, +getSolidityMapping, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + + for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx+mapping.output.json b/harness/test/integration/output/combo/receipt+tx+mapping.output.json new file mode 100644 index 00000000..2cc43535 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx+mapping.output.json @@ -0,0 +1,278 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x2f60c2f0f98a85f6a4c8fbb1e85e272525c51df37acfe6f5e3a99aaa05577e05", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xd3c7f1b5803840a77879e1202d91c1489c0e74e3fbe76f4f9a2d0d53396a9f1b", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x724bf97b1d5535ab4a8c70c9f067c46a7ed31cbbb3f6f48a42afc02830aebb44", + "0xe0b610c0ae8345f748f098e712833824a2582f9b65471a4b5d9df6e4e9fad463", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xa016c7076533d87a9c52a25798db2c272b36fbf80983fb90e448190283362c47" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008e8e426ee87a4797cbede5eb36a7b92fad618461036219ae9b736a3d2a419b5352ee33741af28510f9e3aa530726caa2e021a6a5a5ca4e1a5f1a94fe2500616d46b1492f6e9be46d8761486fcbf11a4efd622df0270a6236aa4aa40ecadab46b847afa86c84533e2c9bd1072dbcd3a21121dc1f4c9642bcff6b295202ac3d64b44a088a1f94ebfabfa7fb77d3f406b3e1ba5873d0f7bf0e8efba4eb05a067225938eabfedfbf67aa7fc3a706e699fd165a90cf88ff5de69e85ee143298322e19fb34e769195d66a8315654a0467f81f3742c0fa1750f8521190efe42780cba577431e51a2b53348bc5fadc8954ee88590879c9d83a570184bee7e8fd86f4c01748e6640a81df300cb8498ff71a5058f0b76690fea859ae37046bb10ef93803413fab069598550968f4c669b5517a41738189f9c5853b57035b86822e3c66051ce73df840a1afb3e4718c1d710bc90249a8716456f4e46204460487876cbebf17bf59ba851caf577d79e546e69e55f25946244de5ecbf6870cd2202f562ee016580d62df7d5aeaec19bb0f1058c5837b39198357db75f8f36ff8c02f921702d1b77d00c1e3cba38591fcbc5f5e6e2e71fb9ad6454ab90e0e10f76c3d66514f349267d6352fa120c24ff465e6c936f78d1da9ecb7926a52ea2fbfd5d6f9101af2261caa8a3e953356fb8b6a5d734dd7ee0a2c1197c245af74f893c675b8503035e10a220f0bffa6eb4bf413726fc39fbbe96a610e4c98251c2d010f39217440b2c77527a1ec23614f4fcf170327fb899a93ce62c4c32e3286b4cd4577cecc23712c3e76d3a2444e4f456479cd49c66ad4c171bc3e2aad243c72d9123b1d81fa62c8606856f9bc48c9038fcd548cce11de1c3a7bfb279effbb3d07acd24f4e8da0feede9a83c64d522afcd7c997570027dc52c4c4300dc26a300de2a654c69ecd19d36cd69e9adec5ed51782d6461714d29b0571c5f64c5a6bbd1dd9b86ac81c42168a7a941782a9a283d5d1e6a73dbda3c1d712183569be758727434372328071f78365e517edb3a4313e0f95ba3c11facca872a4dd46833b55efbcbc9148d8a1f8f035daa7772d8c762dea16e4bff0deecb31fbc887dfb6187377937d703ac61ec403b543669b52ee79ec2c84846981dae9c207d600534e6eff8e4748d313ff01cb3f7920c37d13b9cd2812cc87c135482602d4808593032540181ca33cb7441e4d4f0a9dfab81c9af488afced1ec09250d3bdca5cff9bb48ff9a3047ed885f2c1d1e513510cf97a568c936a6ecbcdd6b3af333e1cbb6376c53c5d73f39a8f523e8d9aa46bfd7a929287878c680e5bcc1d81c3bbf9ffc077d982fe0ec999b200d0bf2b0e751da4e6d11cc4e772af1d859b04ae3c56aa0c537ed2ca8fad2568204167e455c778dfc444c59ae1fbf340444304608cde590e4cb43148f923c8e990dd5a527984fb7d7e7fd36fc9639746666358914aa35892e7170bb4b57521db80dc82171075df96c70f5c69eec0a3f4699af20ecb1da67d8451c794b7f473b3b156d07581c3a146fb4d28b7ea6a7a7bb1ced8d579415db0cbf874b38ecd3079d2200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002ac2de8018490ca7be150abaa7b61ccff9e624ec0ccf81e725517f978ca668093918024836cc50d92ce5a17291ebc81665b846242744d4a986c295fcc86561151b07d20579a374a50a37b2907fb2516ed79c251a25a6a79cf53b1278424c232f9f264701bd122366140610a196f7a6831a95eec703c7b35307fedaa774a51a302ea99b1cb9f1e7346948ffc605a273d14e4f748d638cc05ec3ddd2fa9d9b590fccc3f4a9079452088d99da95b724545b01862834b13c3fc70495a50ff928332ca427baef562c8dd1dfa7d7541e7334d6190897b914a7cb8e236a13fb93503807e315d9353e57e1cfca54297e7b964039ed66fd6001b30bcb88bc8f836a19ea19a238f3b6a398ae3b1422ec7703daa6b5d844fee8161e864d65ca82a8b1637c1f38ce2f5db12c1f43bb46e66f2f8a8975b3e90b94fe3005a6c4fb685d63b58029fc598b530db14e5ea9af303e2d9d899ce2dbfd634ea456a0c34d057fcd28620c0782c21b89409f5b9df8bc7abf82320a97bb820b60332b543a1554c1ca3afa0afea71ab41abdba02ddd3b380677ad783b776c13597022ab985c5d42458a40419459d066999cbf3faffdd0205461c3d66b47c7f83a3a6250f8eac99dfbfcfa62dfc73b081b440232d7fd1a581bdf6cd7999161bf9326709d29c0d67eb700dba0f3933ad6d4fed4fa7bcb8495b2b797b06e266fba069e50f38eb373ad824cfc22c1c8c6740358af3f273506a05bcbfd76336243acc24b983cc05ce791900d2182b03affaa8d953ebe0ba377faeb0bba59e40c150588b961c78a7734361a5a05427ed6e4c7f9e01766ec50524ade1851ab3d70e874b45e65ba95ac3e050badff724a5ea6fd4bbcb043cd538aafae3ef06d9814523a109078d26922607786dfc9a0f6c0792bc985092575a1af1ca00da678dc31ff7d7e5d0e71e3d285624b5e99d12e46214318ac88d123d433f392c8959890c037747c0ce283d96d2b1517f75f42fb8b3397353ee140520c6da0800655d0137ea27adb0f99f3e1083d8662fcda713d1b5003deb2f91de636b762b9b684f1d5061d0bd964a97f50817803b33cec71f885fea3a4ad77476bd514b0f5fa79d1c3a9334cb49e17162d6d0c3659fd749005476ac980d344876df3704ffc216e400a5cf278ea9676fe36aba772df2d6e50a", + "resultLen": 23 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730004, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730005, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730006, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx.build.json b/harness/test/integration/output/combo/receipt+tx.build.json new file mode 100644 index 00000000..cb8ceed9 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2R9+44k3YYGDGnLy2graz2dT9mPlQNeLwD7jY3eJBMIsPr1cR1xS2nuxdkZg6KLI8v8L8xGB7+nQEt+PogfUMTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQmKRmALiUGcpoHsJo55GRQHM7JH14u0zpCDOaMHigFXucRW/laYBNDiGbPtaDpvDNAiAut0r7Vy5AJqFPoYRsFRiBHknjN3ksV0LPsd35j70HcjCmRSBfZTgJcQvM3DUEL4mpNzoTJyjpaZ2h1LWC2nrKw7cNvImiGdCA9WHAegSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH3h5twCX/hGNGMCjUifyrH13l5RAeP5y4XOeOWl+LGkYGAscN1XAoEqyha8T5hgNMyhxR1g15F0W8CDCzjC+uhg=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x081edd0972ce9db1cd830090590be7ac9808bdb89e1f94d56b4071db0c7a8aa5", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx.circuit.ts b/harness/test/integration/output/combo/receipt+tx.circuit.ts new file mode 100644 index 00000000..52bac2f6 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx.circuit.ts @@ -0,0 +1,34 @@ +import { +CircuitValue, +CircuitValue256, +getReceipt, +getTx, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/combo/receipt+tx.output.json b/harness/test/integration/output/combo/receipt+tx.output.json new file mode 100644 index 00000000..30dc4f75 --- /dev/null +++ b/harness/test/integration/output/combo/receipt+tx.output.json @@ -0,0 +1,187 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x45f5b07b9cd1da0c358cc2f8b7dbe2d9c57c3d7cdfbb1fc758ccecef74b8c719", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xe934d097a7ae421c69336582a6b919cba0c18e415d4f5415e2918cd2607c5d44", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x9017a7e3f7084861e7d871f47c106f27da22358c9a79f93c44857b4fc134556c", + "0xe5aa5131235aa8b128c6e988c7b92bd550d06490064263e8b94af4546e1dc964", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xe746c48f5138b4b052a698465ba5740a7f7acf1e1530b9ad7ea82799d8feb11d" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f900000000000000000000000000000000000000000000000000000000001988213a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4cb44f4f2a3922664f333d963c6509bfbeffcb9781ea6c590987ef1e69756d36b1d16eb1c82eebab1a21e0aca673d67db656d25c83134a960db520ceec0bc1b043b190f6d81ae7cbec0d9e56fe9c0848f7c4887b21994abc689a98e5a63a9f162b7424a668421e9b3d6a362981e8ef54eb0d222d2e6c5dd44e0122fc03f2e6b00e88fd6fbd69f7958b9d86bbe8e756dba2b7e03472b82770917c36863cc9f1d54f2b96c01d9f5924738457ffab72bfbc60120391af175bc891a19a0dc3148de1688a75e7ca7624e997f7e086d8dc2489bde263b1f0c3686d5a7c6b5bf650f141f42d4e8886475fb3d88d8d88d8e77096f5aef4aa7593a8e872eec6d25aa2ca54189e913ad418f53435d2521305a1fde83a058b2338d35aba1162b84aedb4d7556ef5f3b7479cc98e787e09a08d321f6b6af99a0789d5162d2889a2fbc655d664a5c2b1c315b88ded76707ec14c6d5a9fe6e5d146465aefcb0f808fe4cc2ccca5d04ba7f9f393e823a9bc779f595666a3f4634231ca8261bf941e6b83a61390313b554c2749e7cb98fef930afde709859eb4261ec9be16b9ec9d1d14b74b8e9228dcfc789a57b6a254e04ff1ee98725030013ac530e5b7be19f3eacb97ddfc8f60f771c6f116f20be59b36a01fd1bd7431ef500aead39ce14f40ebd702cb67bf5e78e229a6b0db80be2eb73cc55570ae249db163145c14d3f1da32b8defcd1b84fd5ecd449a827da331b6895e46611e4532755f638ce4b372587cb256b0040761e6f164418527a2842cef341cfd0d304f67f8acefb41e2de9e1a1ffc4a0832dc2df20e90329cedcdd26d695461a144495d3fc4ec84597d16bd501c260416104b0d2083860a9951d69ef9b455d963a0bf461534c5506256d896f06075f88cc29820dfdb3b42defb1803ea1c4725f2d97cec0cb63a8a5384d5bc7c74b8e835377d20941de2635363027fdf44da5fb1dd757b415e495382992fbe12208b4d1773201ea46c65b74c89633d066c40eb3b9cc75deae3d4dd5888a7f2f87537a422476b1168eb988604878149d7479c66a725d5fb2e60c11d4cbdd0e6f18b11fddc82ca07b91f5312313ec64c003776cde0c2be5ebd4c15ce8bca245905534bfe6f4b23089b57d1f2a20e3c691231e99f7e31202f88609dab3a90f5e98421676274406724a1fe09b62d6620e1d11bc5abb88656aac06570455140b356c0fc7a00dc551f218c8121a6202edcc62e817b30293fb270c08e86360bae834222b602c4f8c90f218c598b495dccf16dd3799e538ce9df5594c1726613d03291e279c2a720eb721c7c51afc3b91958b0f3e8ef21cf94ea1f868f1aac12b84b0d0511cc2e98b5e50604403e04f0918c7fb4c9f9efab6b8116fcbf4c8708d2c2a548ffed33af06fa1ff2052a40ce5fa6d9740d407c004627b0c942280529bf9dde25433d9f04567414c528023cc57570a4eeb1f400bcd3554be6a1e70f0f443803ad00da1c9294900b95412f83680a0bdd73864976b19e5e43fbdeedc409c18b0c74a7608f28711e25b3038c9f3d0365c8a72e4c2f59bf07354b4b5146288e35a17613ddb6b3423628000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062060e3059c5fab42c66e244e76c5436462028435be1db02e9e2878b48ab6f0796fa66a423013d8d88b04864ac0986690773988e255a7ddb76e7a0d9ee8aa31dce540048628768908cc25ea85216fcebedfeb86cf17fba4983c6f135745e6929114cb7044dfa38f26114244b20c819b5a7aed7a38a1a93042ce111d40dea220d37d21fc83be1001b7a06c05de8b7d12cc3715f852f050d0f511b638593d31f09d2cd498855613c65a53e133cc5a7ae0e7186a305d1949572d0a0ce42e9e5a01a9e1606c2f603eb2a29cc369203e112e76c7a3b73589212c18642895bf075411edd85ba78ed6436cd0f3c7647084ffa9e882c9182cb6ee10662ac4140e3c06813dc2fa0e13e25fc01c536332b7148819a8528d311e1740d2813903fb3c98c69259746687d691710e16fc016ffe83f665424c8311ace4fa0e79a90d75ce531982b21277c63132041675c253dfb509eb400b1e6a349e66349e4f732724c703fea07c1532787dd5785db5dbc1b3b03d83f072e4e21d431d5578ad71917c358bf192a1f10fad9d2f637bd61ce07fb14dd1596c82f595657f51b24adb8241faf587722ba5275ea57d8069bf7b6ae6f9df52f304bb1b7795391dd509e15365c700089071cbdbeca9ba6cc7ceddb15cb5b1e1df1377e5561fdf9d450fe5fece2bd0a7e20be48e53a027b6a0727ce53dee343a081008548c3a6ff81c04c8fb3cd5afd16098e0a4c9e17219fa05d8061fec04e13d718eaa4674802022a3945d75745bee90d4624af7c652f6aafbc067bc4df83444a926ef50929b16e647d4bd3969906d4126d4f6f4b5fbeadeb1ce4ecb09481bfd6a455451e1453417732e984ac8d901a2d1f690518d849a9b6f87c266143e83cbe214372296df74ec97db0c61dcb17181f4ca9ad96efea92e6b29c5fcb9df2131b19f771dad2d8c33674802bfc3cf70d19d0fbec4fa3bf4cb8bfa7e23e417ccda3900d92a68416ce7ba0797502e52f6e04de16d44453fb930dca425ca5732369c6ce6bc1774d882c5a104cea388fac3603408f9a658989f3eb44c4ebf88b55d7ee1a62003e846f9b4d7de365a953708606ebb9f3a3f4f71e23797ce517757f41d00d21db333fd578d20f80416bea4d5020259c9f09b2670760afe62cc0b07b744becf034c6f7c7a71c4c9b73f649fcfc25", + "resultLen": 16 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821", + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/header/8_mixed.build.json b/harness/test/integration/output/header/8_mixed.build.json new file mode 100644 index 00000000..d0e867a1 --- /dev/null +++ b/harness/test/integration/output/header/8_mixed.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2IqxE6SeCEaIgbIEGq2Vf6CVE21SxxGtGmCwnJsLPbA17gATOR/phq4xNyQNiJMgkDjD9qcWD8KH0yn6OpqZAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcUO66arnRpE67Nr7Q6fQ/0BTWpJxt+D+R5BSuXNvorhJI0frrsk5Nhw/nnBTYxs7HO6bmk6Oz1GyBV4UjEuCSk4A8e+2XxP+glVoiB3ICozDRYSPFINOM1QGrO/380ETe+iQjsZ8QTf7Yv+3F78iO+P8bntt9Z/JUAUgEW2zARgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH0nwFQ2O5417QiKhoMXNfMQYqm7WRqZyVpB+6FzshmwBjq1XgJLyNyJAmTGpotPVPTL862e7pKc/fBfMXH/phRg=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x7f15f2b169170038d4789dbbe14a207b4f923024e78cd3694c76afc1c4d98580", + "inputSchema": "eyJjbGFpbWVkQmxvY2tOdW1iZXIiOiJDaXJjdWl0VmFsdWUifQ==", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7IGNsYWltZWRCbG9ja051bWJlciwgfSkgPT4gewogICAgY29uc3QgaGVhZGVyID0gKDAsIGNsaWVudF8xLmdldEhlYWRlcikoY2xhaW1lZEJsb2NrTnVtYmVyKTsKICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuYmFzZUZlZVBlckdhcygpKTsKICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuZGlmZmljdWx0eSgpKTsKICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIuZXh0cmFEYXRhKCkpOwogICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IGhlYWRlci50aW1lc3RhbXAoKSk7CiAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgaGVhZGVyLm1pbmVyKCkpOwogICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IGhlYWRlci5taXhIYXNoKCkpOwogICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IGhlYWRlci5ub25jZSgpKTsKICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBoZWFkZXIubWl4SGFzaCgpKTsKfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/header/8_mixed.circuit.ts b/harness/test/integration/output/header/8_mixed.circuit.ts new file mode 100644 index 00000000..10906e63 --- /dev/null +++ b/harness/test/integration/output/header/8_mixed.circuit.ts @@ -0,0 +1,33 @@ +import { +CircuitValue, +CircuitValue256, +getHeader, +addToCallback, +add, +} from "@axiom-crypto/client"; + +export const inputs = { + claimedBlockNumber: 9173677, +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + claimedBlockNumber: CircuitValue; +} +export const circuit = async ({ + claimedBlockNumber, +}: CircuitValueInputs) => { + + const header = getHeader(claimedBlockNumber); + addToCallback(await header.baseFeePerGas()); + addToCallback(await header.difficulty()); + addToCallback(await header.extraData()); + addToCallback(await header.timestamp()); + addToCallback(await header.miner()); + addToCallback(await header.mixHash()); + addToCallback(await header.nonce()); + addToCallback(await header.mixHash()); + + + +}; \ No newline at end of file diff --git a/harness/test/integration/output/header/8_mixed.output.json b/harness/test/integration/output/header/8_mixed.output.json new file mode 100644 index 00000000..d30d0eb9 --- /dev/null +++ b/harness/test/integration/output/header/8_mixed.output.json @@ -0,0 +1,91 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x87294fda79f5084ea88f507beec80ad6ae5671519025cadc4ecd5aab770e6213", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x75205b40194f14de819e6cdf8e0c85210149f7bab2e96f98dc1b17880348c217", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x6685922bffa79cd645027e0d62bcd71a3c72113e2d687a42b8550c45f4ba781b", + "0xd9bee9a273dc64e47077bfc250e6282d4bb53e0dfc36ef7051a86fb79328cf58", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x260a38fe71411b4431f23771b2626365015af287f552c05282426abe5f44d167" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000574610000000000000000000000000000000000000000000000000000000000000000d883010b04846765746888676f312e32302e32856c696e757800000000000000000000000000000000000000000000000000000000000000000000006488d4b000000000000000000000000094750381be1aba0504c666ee1db118f68f0780d4c5edfe7b4483b84bcfa064e75ebf804629f9f8a8a4d525d94360372bc69f55fd0000000000000000000000000000000000000000000000000000000000000000c5edfe7b4483b84bcfa064e75ebf804629f9f8a8a4d525d94360372bc69f55fdc0a91f9d58993f12ca5892d797f9441cb1f2070e4d43cd23919e67aee13a562ce9564127bca828a3497d033deea8ebc12efeb22f62de32e80d51592a00b3b91549681659750973641336e092da9fbe2b5a5590e03e90871ef571848b97866441a92f1fe9decc8fabcebdad7ec113b7a61e5456818039ccb8400023fe3b62a6035c705315481cb52a3f225fc1e06928e0b0e0baeac52cc335146196e1bed93e182eb82cd598aa03d20d6fa29048261ace299850f2d84eff913f68d0abfb217a658c175a363f1712650afa7e32b85190044cb2170b9a4d72416fdd1495c9ca1c5ed9b3155d938dfa1e5d7af5496d7cc0eda785e56d2a20c0718d9ab7d01392f329e19847409cea3c4d236292348cdd6788bb9900d214977bc0e391eaeccafce74a17a960eff66c66322bda87c173ec54ac70b9590fcfce24cf114c6e63dd8a50029c78b6cc4f1c435c358aeb8ac2436891586123cba0ca8833662bf4e74c69f55081089151315842d0a0e130a1f0a163653499aa325bb9b1b4838fd6378e5a3226b5d1438ee60920051b39e8ac7e69fb16570822a6c19abf5f5667b443d942c450d63bc895b247d51f408ca4830251a8d489c639a3d933d51e52a552343671e96d0253cfc28ac2b5170e475a0a0d9097f6f6620c2f70f073c6d584cdcabde94b5d630bc0b9ba872524d3d569ce6cadee118090c899eb7724b079f3a4ec50d74b64e0c9d0c6fb765d2db5bc7982de06f452189765d46a72673f024e4fe06372fb113d282702313b12676b1f836567281978f1f3a3637bf7ccf421b607a2ea549922d7e5d58c8a5c1575d80bfb7e451200ba02254635deae8c41e8143d16b7cccb0c6662d024a6d3f246edcb4d8ae797cf9f757865486955aead3835b215d9a64328e37b032502118e45bafc7da2395e77ea3e6f2bdd25ccf8e6c9b5b08acd52fa1581ec333c914b3dcf0e19d4968629935a11f0b1116616030ebc454c91dd5df32f8655ee81336d5e4da2b2f4d934c98e667a987443a278fc72a7882c77c1ac722218fcb6b62bc078c2e3e03efc1c2b58bef27569626c8ada5577977b5eca4d0920066e2a02deffc5e4d53ab5e818e68731dbbe505d81c1f5be36d590790fe5390bb25bc19f3d2dfb16b8e960014ca2f8ad6ab020eb83bab01d585669a403b9472d9fa09b4d82a10d8175d82f3064fae1ef39aa4305bccebabfacac1074d8f7451ecbf2ac2412a34cb0c6935e53f8c1c3f870aba01cf126187b69de11c1fb6cd50c14a6ec24e607c808d0c320975a442142c1eea343861b1312e6ab62f08564f400f9a732c9da894d8b8a3ece531ca3d7f6d2cdf2c5926196aa4323ee3584701814be5e5facb49d94e48c55d9ff875615022d5cbc22c20d74f98f3bc2f78724e501f463863f8df0b5e14ec29b74c47d273c9823bc71323081b05a9d71981f25a21c26b77acfb3efd8f42c0284c4429d2a15b65584e87ee62707cbfea9b66924c61894f4fb4bff1c86a42e9c4068a47111d4ac45c09e066146336c730f87f10cb92eb60054e2ee73117719413abaad97680f68dded4814b122f1c7ef9423cc12442700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007899369bfb99ae05f55478796e69bf455690d3ea4fd67528f8fe60a901fbbd0a0cfefa0fece817561c0b0aa137cc6f58fc8489429b2b539e80f4dd9e1a92ab1e4b6fb6af26e40410c90ded7a186b18e9b2b9afe0a2c41c2005bad0f248ecdb1a15f4ee793c68fe9c641639dae2542e6c720411754c5eccccfe00c7a9990f332ced2508360c472e46bfb319cae156f31c2c5961ea89dad0e7272db6d16a9c45072a752a8473c64d9a89d71c362cc89d143bf326d9ec80f842d29623f16a271c0d597541b5050b8581e6f325bc735595c5daf68ab0dbf9be93ae3162f1c6bfc4170140ca12c37982a42e77a5590fcc300c8ab5f9ac1e8a82bf6febbd6c3fe454003ab6b339b947c458ac9cdf3065a25530c6132ecec688151707a7bc036af5ed28785118789774278bee6cc1d1cfb13e42e6ce8b6f054ebbffe3c0aee43f53d117df8d9236c440e26b2578bf20d6592559215f251e70627314382fdb2b2ed8772a896eb5092dd22516614ea491eaf3fdcdf4e7753ecdaf85329006b668e7473f2d13fb06b1cfa88875b680c87eab3222a53f4515a4771da351f5653ea10aa5341eb5eabe21a4c72d8f78cbd56b71e8a5df8939785145498dca0e06327e4ffe502ee7ad00df0302710a3f894147e1d4641a1d1ad5add6b4fe18d1c7e8192d37f704cdb834972e609e55cfe5bf2e75dd384257e4f03363239207e349e216fbe8f506b2d5155518542ef9ce18c97e1a97b5ba4f249527622c57bfb6a78bbcbd3bbb27dbae4ba6f05543f66c397bf43d1390f83d69a68a799755b82c2935bf2bd6361b386e6e31291d264b8efeae938acf283cbff8dde9d2663af9f75948c55293530524154630d89e5acc3af1368b8fb64d153eb4d50800d36f887ebd9e7f775196011903c4d7256b363f0ce03dbe6ed7a829e93a3ea5a58f1ae473127da6aaff0827892631be14b9654731713f6131db887ccf07edee22f33a8506bb0be806ba3402593091e30eea4c659aea41f6241fc1fec9fc6aea321472ca88949dcc22afd51320d710926eaa4b15235da42501110bccd9987341b8f98a9ae45423e9b2f68b0327c87d3c62afcef0ae1c56b969b32e3236284cba1ce61c9afba867f419027c64eb33aee3b8e20cd1b5ab323c10b8566cac35783595a3ee578e9ca689f52aa251", + "resultLen": 8 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000057461", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xd883010b04846765746888676f312e32302e32856c696e757800000000000000", + "0x000000000000000000000000000000000000000000000000000000006488d4b0", + "0x00000000000000000000000094750381be1aba0504c666ee1db118f68f0780d4", + "0xc5edfe7b4483b84bcfa064e75ebf804629f9f8a8a4d525d94360372bc69f55fd", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xc5edfe7b4483b84bcfa064e75ebf804629f9f8a8a4d525d94360372bc69f55fd" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 15 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 7 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 12 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 11 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 2 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 13 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 14 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 13 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/header/8_state_root.build.json b/harness/test/integration/output/header/8_state_root.build.json new file mode 100644 index 00000000..bdd39bda --- /dev/null +++ b/harness/test/integration/output/header/8_state_root.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1TEBWGov+1ZfnJteuGDW4yW9fy6snteEdmS1TTADaqBT2FR2CeVq0u43CK1cmkQw6h69SMnCBjKvRCtVzzSRoFSLQt+gZR0ZN8FIoMeWQDtjnCD3tZm1IzHPcbs5F1hiCs/j+IHBC5uOKX1pPqn2LOfbhlStO84mQRprpLSETWEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCvwe7nrwxUu1qTpG+EuQMj9VlnVWCMrard9Sbpl2gIQee5bknDkXxrC0289+SOwNoNtfDnRaj1ekhH0lQeowwWPYGy9ZM7TgdegU0Im0OkC16AQ/KpVxxxoDF/oxASB4ww+nRbBoV667cLeqNEsN6ndVhl+f5PQ5kY2I0sR9kYgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH31A9Pbm18sDhWyCIdfke5FOf3mI5zLv2nlybFBeeZwH010ER5Cg4uqJzZ2pUOHCgfN9Mx/WAogL/0MDim5wSTA=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x0cecd4401a603cf804cbaf99b07c4862751432eb8f43a618d3e2682570bb7598", + "inputSchema": "eyJjbGFpbWVkQmxvY2tOdW1iZXIiOiJDaXJjdWl0VmFsdWUifQ==", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7IGNsYWltZWRCbG9ja051bWJlciwgfSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBjb25zdCBoZWFkZXIgPSAoMCwgY2xpZW50XzEuZ2V0SGVhZGVyKSgoMCwgY2xpZW50XzEuYWRkKSg5MTczNjc3LCBpKSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IGhlYWRlci5zdGF0ZVJvb3QoKSk7CiAgICB9Cn0=" +} \ No newline at end of file diff --git a/harness/test/integration/output/header/8_state_root.circuit.ts b/harness/test/integration/output/header/8_state_root.circuit.ts new file mode 100644 index 00000000..18f02362 --- /dev/null +++ b/harness/test/integration/output/header/8_state_root.circuit.ts @@ -0,0 +1,28 @@ +import { +CircuitValue, +CircuitValue256, +getHeader, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + claimedBlockNumber: 9173677, +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + claimedBlockNumber: CircuitValue; +} +export const circuit = async ({ + claimedBlockNumber, +}: CircuitValueInputs) => { + + for(let i=0; i<8; i++){ + const header = getHeader(add(9173677, i)); + addToCallback(await header.stateRoot()) + } + + +}; \ No newline at end of file diff --git a/harness/test/integration/output/header/8_state_root.output.json b/harness/test/integration/output/header/8_state_root.output.json new file mode 100644 index 00000000..f80eb9db --- /dev/null +++ b/harness/test/integration/output/header/8_state_root.output.json @@ -0,0 +1,91 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x05e76d5770d16c436cc67d77b177a142cf6752bb54f7852238de65522d26f11e", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xf26a4aaacd85eb3666ee6cf48d87e78c71d15f4537da51328afa04e1f2d5800c", + "0x40964b24ba765d96ca7b650f619f9fda8ea141a1efb2fbd410cfb8d44757db6b", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x068c28515ac9b7b7122a8e16216558c686ff8686421f068bdfbdf16812c34567", + "0xc1623e9bc2af423060171131f8d232981224d312fd9a47927209fc8bc5c5cf63", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xdbc1b364775e190a962316ae1226ea615557bf920d77752167fe500ae263a951" + ], + "computeProof": "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff396816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9fd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1be6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3ebc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df0db8d35affb91f4c07c563d39683f7fbe09e76d31bf253ddea3d063ad5ee37951f8ac49b6da256dbd4e89378be0c8119e0f3ffdb2ba509a43f2997b91f05fc81717bea35ecf900c808111958c49541bcb19c136b28d53d53130268040c471242751d71db116a0fb6e87b7268117c9c9773f5278dc4e0834b533f6141c6f08b11ebbd452b914bb176e1d4b4f741d657a2c542b0fd880076f583488d03898e1c25a261dad99518e2a01568b3edb9581ce8c77e7717e95fef06a2504c7c891b932222d9f3fff8ae5a49e28e659d73f731333117e2e4645b76fd0b231eb9c7b73545c0141191177bf62f65301ab3d6a660c54f74a6ada2d40449fe899e1e7cd858d2dbd05173a3cd1468b271736582949f8d29bc24122960d677a33aebb2b9af7055b1b1d3944c53ed1708ffc4308c5d4840bd8695feb418cbed897aac4a2e15bd6145d5fbb5d14519068f08c90e4bc6321a75823fbb44099ed237d313cc8685ed70ff69ed85342a0bf40114d53e2f3edf1ef647ffa4903c0e028d1c3895cbb672954697d2ab87264dc5a9dd9e175e452ced0878e75f374b2a54723531f207ad6885a69fecefa7fc03f164e5be2e86c52f0a51043a54baf01f1189d1c84c06496ae4920cb8c99bfb637f1169a4c647b9a355138e5bba77a31cf4ad29a9fe024a91509a7de841b8e5bfa25b2d8b05f348861d577e25a1ac2ab16b8ac1e591812dd955961a6807945ee96cdd2bc4880a929348cb270bbb78b9f29574b883e1aadd1b0025bdbdb7a7cecf45c9b082e3cb0b5407653aee68907673c635db9df5ccb77941c7150512d44edc055e650d12d1f12bcbd74bbf37e6483afa882ab6a3b62ff9b291758422a7fad376122642ba89c906b4fa1f7ed16e83cd3a18c0438b39e37151a3c1671f3e1ad2aec5e9bc82d5045f77d7e32488201a628f1f056400a6dad4e1d2050157159797b86c5193b658cf11c3259acdcc6890c499b163d0b522412ea2717f37c6388c2ae900a1b981afeb1b29d022823fb326c220eea15303d791d5e1b81dd5b569affc574d2ed8ae7ddb2768f994bbb655db2a557c209f1c4e0d4e60236222a55f1ac267c843894b323295f7bc2a7d09e06b6696947ae385d9974eb1178c9b6a0eb957aabb61a535052799e21f1895e70bcc54818f8bc92f7e3e99220c4b8d0c82f1c9092e962c776e168e94bddac6e62cc1ee8fedd0e5900884a7216d1da808ab32efbacfc552eb4491e5aff356e2e30122624650bf7b386748f4b13bc6c4085725b53e9186f79fada2a84226230c5fe0b55cd2622956d580361e42bebdb7f05dfcf2874f2744fca25f475f0942323fc2992dd479d5f9a03d33c6b076eb4c50cbf212070bcf10a34e79865fc41a74c24f6129af17f1e4c6c2c902923d6b9eea57bee4d110967286aa1689bba086477e24d10b21f13e06279ffb62a18ffd0fde76eaa9f1d7ada35eeb13001c99928c927efbf9ec03020dc7120733e2b18372584b9e7ffe7380df74e11ba58d7f762c68901c2ccf7684aab8234487c0a63e5fac6f932f33f6487bbcd8269d2dc4111b53e97afa2d940c59d047d03d1219ae5906f111016448a4d5c2d953f7cf4dad829a1f7f2187e480b43954d94f8230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007568c13ba34f37c17ccc380c5f01f6461e46576eb4f3a113aa38ff3cb65eaa1882cbbd09bbef070e4dd0022e009708fe2c4e76ccfa50e5c69d3e41d962ead5249f7cf444a2ec33c705290055aab539e11748d7d526c7fc697b10ecbaa5ab6d00992fbb88f4252192d3fcf0d9b6d75b41152f8fae26b24c1cc4281dce52384f01b6ec6e1b522b0c37fddad57c95a2b679af408c575d3a92a3c2197b67cf5dac129e31d55ff2aef1cfe4ace2c74cf5910e5a8698dd1287ddefe7e2dd03cce40e15a4cd0667fa17eaf0ad7310df4176a2e9250a50f8dbc61423fb9a0e534d5fc903454071f6613469954c0726460291d24158d766ed4b5472b1550b141d829b5315d379e9f179538f06c7e6b75fad650d47b59a6738754e39f7ee47b7316befc90abd02cd2ca631fe2f2fb696588ed7612040b3b5bf9f58591387a0b0bef15153020475fac1beaadc3b5e192ae8691c92b3417ae6dd82a5eae99de6187f0460091789a0ed061137f01d0f0c3b7045b022de1feadf253085eab492aacb559c11a41242f34dfbf0700f013b8185d34f0106c2edc474cac56624091bc26e3a03c9950edf5b7f16f581d1aa4a5bd60bc50621af79885041aadbef3731f1d4c8438c7f11aec75760d93d9d4a1a70c6ff00642a2fb2dfbb2e04b452e3fc3dad6a549d632730e189770d51ce38346783f61a660769cda6b04a02f7e9ebce8803b04971a919d6d3239b82784b34712c9c651b233c6cfd6234c3b3e4f7147bfbea3867fe1e03a5d643cdf68e38ef0d9df25482eb7890cd2a128a2e96d7fde089fafbefc33d09fa886135eb67a40cbe4851816cb1834c9f17fa68b186331ef6e5498ed296f425620e0a549a2ca3e30441b89e2986bbd5700ed72af61699fa260f7018ee60ed006a8a69f0cf8e64db35064867b4bb4602de4ae385ecd4f78c9f5f53a84d62252301130927220159fb64bb9a30abf93f2261fd626ea54cdbddd0c91d546384cf0c508049bd4ab1e700c653591b38a0389d542a8bdb46b5f4e3bcfb5fe1721a660cbdc912ed5aa9460c5f07ceabb48b5f59091c71957d1e0df072873ee1ae3f270f7145b2243b2a2cd4390e93721efa93547f54f645a02f8faee1e965ea1da3561675193ee37ba3b7474d95fba71c7b211540c8695a379f27fdd55a975fa0a35347", + "resultLen": 8 + }, + "computeResults": [ + "0x4295959d66f55577fae5dcc52466d4b4812696facf4e85cef93cb15290a37ff3", + "0x96816ef2153d3db8d82d5c7eaa5face2ca721375c8dc04e353be43b3cb534ebe", + "0x60ccec5222ae449ff29912a56ec4044402f826a899528abe36e478b87339d54f", + "0x4754d27aa2bd800757ee51f33a8022a508ab81dd1fa7623656262a622a632bb9", + "0xfd995feadb8edd448d7460685ffd8d5a86d8c34be55d4a5fa86eb73627deba3b", + "0x1e1b322b7c26e870d706dddfe24855bc6554c4ce9205931c0b85cff697bdbd1b", + "0xe6071acef0a2d084633d35fc0fb35e67c9b5bfe725592b743581efce2157e3eb", + "0xc29bdaf6456b67da8685cf34c825cab7bc85f042f277a581217cb8c968d91df0" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9173677, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173678, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173679, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173680, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173681, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173682, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173683, + "fieldIdx": 3 + }, + "type": 1 + }, + { + "subqueryData": { + "blockNumber": 9173684, + "fieldIdx": 3 + }, + "type": 1 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_blocks.build.json b/harness/test/integration/output/mapping/different_blocks.build.json new file mode 100644 index 00000000..c3bce4da --- /dev/null +++ b/harness/test/integration/output/mapping/different_blocks.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC0VcUS5jGR+qdjzYkGD63LWurCalPSQ+FypzPhuBwfQJdANennU+iwZxXU1dpKrLBoviwLKEW746Vq/6tCuvWkaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJtjNg/fs+niF8GanGZ25f2rm6+treBghaYjETHx7tYGJAa/MF943kfzC1kxtwJ9BQWfrEvKvywagclf0PchUg2lxcKElkT7tgNItq4nPN6aNXqFjZgPyBRbDsfl4om+HC6QRtNoH8do3ucczlP5seK8gU+TLvH5EJmaeC6HraEHgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHyJxSq/PZ5doCwCiktb1udxHSDtyqv/XzNTNlWB93d4JgDYHxB5/FCNNeLmdUxb4dbPnjL2cmTafG0RoKtJQDwA=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xf07207439039a176a04846285829d0c1d6b9b2373dafefe84c783ffb569afac1", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBsZXQgbWFwcGluZyA9ICgwLCBjbGllbnRfMS5nZXRTb2xpZGl0eU1hcHBpbmcpKDk3MzAwMDAgKyBpLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICAgICAgKDAsIGNsaWVudF8xLmFkZFRvQ2FsbGJhY2spKGF3YWl0IG1hcHBpbmcua2V5KDIpKTsKICAgIH0KfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_blocks.circuit.ts b/harness/test/integration/output/mapping/different_blocks.circuit.ts new file mode 100644 index 00000000..b656b444 --- /dev/null +++ b/harness/test/integration/output/mapping/different_blocks.circuit.ts @@ -0,0 +1,27 @@ +import { +CircuitValue, +CircuitValue256, +getSolidityMapping, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 7; i++) { + let mapping = getSolidityMapping(9730000 + i, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + addToCallback(await mapping.key(2)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_blocks.output.json b/harness/test/integration/output/mapping/different_blocks.output.json new file mode 100644 index 00000000..b8759e10 --- /dev/null +++ b/harness/test/integration/output/mapping/different_blocks.output.json @@ -0,0 +1,118 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0xac2de32211488a428787da5bedd6d2e8a3ce08e3d8f3bb79ff376f6d7d4c4029", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x702a07a3dadba270cd5aa843c36eb0216cecec824382dce0ecb7d758a65fd001", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xe10ac1d90f2973b7d921b64549c69321719a648b7f808c4e02e510169409b045", + "0x6ce3e9f6db6a488c82759451400524b585ec1004bd4ce518813b46b07365d411", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xaf8826f5f0f5f87421c909ef6a84908e7ea8737ee5bfc493873e02ba653e830f" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007082976827157f39169924ae3a28704d9ad24418bd2464bee1f606b0926b401197b89504e1d273ecb90fad5eb26b0f6c3cc8cf2851759c0009a48309dff4952d62dd236aa7412d27fdae2ab466f541f44b7e7a218b8906f45489d4f7694e2965e3808cd2ded7f45331c89921d5e8b7594141e46d4d0b6f2b2eb29253aa1581531c897977ef33c73fe8898a3b1e3de2a6f3246c640678d56538a52ba325168223a69b4f36e2376fca421a81a97d0e31c5c11f4a1172e4684761b1024535164211e82c51b7d7da9639ba112d65126219e947c3fcd9c0dbfbd87676b704db855912607507a3363dd7eda2fbbd71d05f74dbb399c63036d333ed3d2ee3b5b3a0530063d38ced6b5658a08cb092f7b98a2177586506990affa35a48cf12cc60cd6829d826f46c9001c2a6e6097152f154c5472c954524929ff18bb26b79057d3bbc001b945e7efda61bedb017b13424cf5716d327ba055a1b8089847ef95051537a4cb0ff5d3947a3c8aa9f5bb996348379b1fbdde7c22b9954bb01dfa0e0bf62950f96fad604c5922c223e2a69c7ff782e3683650eff5d43e55bb09944400a76730abccb7b92bae98a6cb1d5ddf69d3cc98cf3b0cdd2ba250a3734b6220eb03ea31b6821923ffe52f9c847351f9de3de638d56336b5a8d07f386e1e778950325c71a92cce92f6f73d5af82d9ceea8968fe52473a3b6043876681e8de2972b52811021f865ddcee16e7b359ca502c65e05d56aec8f0a42f567a9a5791af962fec0d02f617022aaf324c330df9a198c4a6b6e6e51f49b91fcdf5ff2f355597e8fd15021d4f02ed3d72122e53224f7c72dd5cca7326b164680ffd3b5917ceba6e3df9056af20ff828618ed77eeeb924514a8c81fee8e493d0dfd852d8fa2f8d5d3a622ee817321fd61f690ce45b3cd679cf635c2a108633e9eb4a2b308e62a30df1091f97f96df622c8f64ec6eed27f9e1ed18f0de3b21ca8083928ae6fa6401d5cc810d371d803591eb57e6db090ffcfc568f0c58afdc67f66499a2d9b6289c511dd1335d47658db8e4d3bc4e0946ef269d680c369195434d28c0cc077aae086229b05980e668b85e75865fec31f8b993a94616da1ece6ca277b8b6fb59abf16d5ca1eab3fdfd6f7af553bdf215fd853dd747cf558600b058b7aebcd174f34b0031411e5a0f3a1e5c5a5d35e412a22b79cb3425abfb12df9eed7338ef96758b125231d0254371c1250ca1d8e027faeca993a86207d88bebc12e8ad110e5d08704582148725dc591e3da41653dc512e27513a71e0169691b67d30cfc02e11e37684bd2a6e0cc0fea2b4330e2dd043bd13bfcb7a7dad4e11acb6ac4bcfca9ff50f723617ffb3851ee34c50f52afc9263b59d4d357747b799893e0b51c8c398b5e2165d1019c8815747ce6d0292531baebb9c980b075c9a7e8e8cb8a53a25928f4305ee1c1c84105ba236444530a8dcaa7cb9431d55af4e337b37f5374e7dc64d7ae02d1646a601f1cb947f6855e7a1c9abf3a8f15b9dd71d9ed660c5579fcbbfce506b182926168ecbb6295395643afa13d2e8f0325f4807f1484876289a04ad5761d406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077e1e7b7833cc20bb8c3a21d5416c2d21b09df059e326f206957ab4a96f6da1f24cbadf0c227e12bef5e737e7bef2fb1922d791cfdf883577953e71d1f09bd2b049ff8a42fb4585bca72e19d97740950d43e9b79a9aecd296e1552e4a5e6812c1f1091c5be21bb75f49b2f0299ada82e00680ca3b19d19ed0e299e157309a717b8104870a5cc7ea56a16b527b534477bbf5866443fce6c464131ae2f13f8610fb071ad6839273b5636b232f43b9cd7f30359b814566e6489c97b4e7a5c2213255ea8ded5841b96500cb9a8691dbfb43216562f36d4f1e7b82dd6d4325c6c9f27319bfc7d4a60c22dbd9e7086b1a65f954adbc0b0a9d9cc2f9f934c17e7549317166f9f66bac37a3a594f770122300d075ab1aacbfcffef9fa6a8a5323bb95016609aa20cc01df23407853a2367a68dfa7c7888129710723e39ef80b2fa40e40d628d411807724fa63911c411a87250b42626a44a758772b7158bb7b4bd269c0164dd5f57357046807f3fee58a43ed44523d7873121fdfc9a336377f0a7b3362c57e2643f52a5b935e4ba0720a11581e84828aae9840de77c0c0829815471cc0ba2c187b1d71f75e3ee383900406ac475da59ba062348456ef9ce5fc08f06181fa41191b7b6adda9e43a719ac9bde3e7190cb353a4f2cc37f55c8ce6224db191c22e41e223d296298df73670a4a01e8c047df32cf96c6d9682c767e7da9e8830ca71500b7a8e5439df392576bef29f4c0ae747468294ba42a299063d88833a51a254d942e00fb2be21c3308be4bf20e62aadbae28808e780af62f58557cbb4706066d750709d9ee7e5ef2a6cb3dc045f4dea5e225c211ab4d7e80ea194f818505423734f9a59e0c96836f4370952fc5fdb7ec8f0ee8a989e5ff7a20a4e103072c5dac4c1ec58d31633ac5034ecf35d5163d1415e5e5843fa706dd58624ccb1c17780be8aea5aefb0ea887d68bf85eec0ffd0c4b0b2b2aff957e74727005b09b1fc6368d6dfb04067bb54f356de1be71a40ea91ab18a815dc1926e02435ef406119019695753e8b87cdfe1f583a0426e625adc1331bf4dee70be38348a7e191c227a3511bcc038851fc1a2c09c634313a7ffc73de9ab78a198091c3f651fade3123a0b770e8210211d85da968a7b93e427a9361f52a4876c36f4c4873767d47c57", + "resultLen": 7 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730001, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730002, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730003, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730004, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730005, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730006, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_keys.build.json b/harness/test/integration/output/mapping/different_keys.build.json new file mode 100644 index 00000000..b1c2f2ae --- /dev/null +++ b/harness/test/integration/output/mapping/different_keys.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1mmhxxQu/t0Mag1RsrINkwrRtrvc+8LNib0MDyAopCBmzrB+N2x0+Dzaog/d2y5u3xYUHdSiq8EA/AM6UvuLYWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICaNZAk5izpCx0cdXwGZhuOFrPr4SE5Q/Os8C+LLZsLwmbDIO7XH8c4aBGqknfEODEmgWV9BUWOTYMv/1H3wQjFCKxYT/85V0xqCxvibvy9pgF1fzt2PAnVfNnll+21LG5lRsze2ryJXAe3IVPedI6kGkcdQFSsm61qeTL0NLIigSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH+TZGvYtE1T2KBjAwiHMPp03SnhIeSt3CxX2CXmgemIJHbftDkvRlFAiO63Fp+ANmNk+O1/h8itKAvY2Vf7NJh4=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x4132f66758b0c06535f852a75c75d36832854281af8728f098087627cf7ef388", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgbGV0IG1hcHBpbmcgPSAoMCwgY2xpZW50XzEuZ2V0U29saWRpdHlNYXBwaW5nKSg5NzMwMDAwLCAiMHg4ZGRlNWQ0YTgzODRmNDAzZjg4OGUxNDE5NjcyZDk0YzU3MDQ0MGM5IiwgMSk7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykgewogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBtYXBwaW5nLmtleShpKSk7CiAgICB9Cn0=" +} \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_keys.circuit.ts b/harness/test/integration/output/mapping/different_keys.circuit.ts new file mode 100644 index 00000000..bdfb41cf --- /dev/null +++ b/harness/test/integration/output/mapping/different_keys.circuit.ts @@ -0,0 +1,27 @@ +import { +CircuitValue, +CircuitValue256, +getSolidityMapping, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + let mapping = getSolidityMapping(9730000, "0x8dde5d4a8384f403f888e1419672d94c570440c9", 1); + for (let i = 0; i < 7; i++) { + addToCallback(await mapping.key(i)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/mapping/different_keys.output.json b/harness/test/integration/output/mapping/different_keys.output.json new file mode 100644 index 00000000..c90a0a88 --- /dev/null +++ b/harness/test/integration/output/mapping/different_keys.output.json @@ -0,0 +1,118 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x5c896b5bffcdfa8f1ffd7ca5b8821cf3b2842bb1bde0780446afababd841822a", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x27ca6225849ce9caa9f7bba0ba56b18f673591f059ed237bf48bb08610f03f26", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xf71433a7dad15ba352b01e0b7cc7ad83b6ddd9e2dbac8f8d6bafd618db756560", + "0x0172b169d055369ec91a3c3fc0ff639e57c5be99d374c880cf909ae9df5b0222", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x61e36dfd26db2141a214928eb28f5f45d8ca487b305f6e476238e7be67f35102" + ], + "computeProof": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4b008419fef3a20f14c7d7766f9e3771c489d59697ad46ca79cf8fe0a138e068ba7bd9ae20e74198848305f9c7f6527423fb1a79307c196ed57ccd89621d047ff721f3eae8ebfee5db887c1f17688cf3d9bfde99a52b3c944547abd4d9659634d59485686a2cb2a8e732261983688f5875d5bcf34170af8a7eae0735f13a06f9ad6608eb6990c1a11505919e5da41d20ec1f59fba2e84746b0ba0736cff796aec0eda59ec0afd37bf692090f163168f9adfb59dbc3fa55a78bfd67edd7ccc0ad1e8c0d7ca5439cb6a89209f15778086c5e46f03e749d51b9e70c4a32604e84a1a51dc1723d3780a973b76f2c1d0959c116cb82158c9574bd42d9d497ec34644d720844b942908c7ad74b110290c02b92efec980a6ee97e39b3ab9f09fd30c00cf16b37470301054e7946425dcd739ca01d15dcd0d817077c513ef55dc2a6e4efd0a64030deef9dccebeb4b5278ccc8523964fd8e8c7dd9799ff4e57b2930e25ee0d4c5cbcfeabfbe0c8313abd0ea18887fe5e7459b4eda5c04872805f5c434450ce456aa8516cae1d56f20467118983032134b60616cd1cb3659eb6e917021c7246aed473eb114d81a23ff38979ce4f26ad9cab36c3a9b2c6fb812652181204e3132c613d2427f788a5b82cd2673eca75bfd4ce723891d15d9684002cf89529a367a54ca2d0cb65f8fc459ee678120d7ca945d499aeeca2413db83d5940261dbfb30c03f4a47f7fee07208307598161107fe0425e5db76cff022ec8de90f21def4066834b26de612256fd1bb985d77363c5705850c1ebc6a90a1fd71e44e320180f1143638c4771b916c121165baa1706c2ca311deb809b8b395c7573fd000e1c6ece9ea47efbbd13d5d532f0acfb75438036db73ddcf9577e19f0f0d549a1754be1a94ec734213a9eb7182909fea95e4c6e1f50baa85070ffae59432a0402ab8434f64537a097cf6802196f47ce64bb6246ada8c90907eb0a0eb6155c3cb13c4cbed7fd010832bc563684bc1737c104e1858a91f5189315d2a0acb5b05011045ccb0690baa308a330c91a08e973bb7d89d66510e1179e28d59c9a84821f301f049da2cf57ad37eb2e7303b7a2394f90f97cb823fc47f236cfb5a417614df182af90fa58188754f23eb480f9b7cd1ea8edec978147a7ab87731adae2cf20b1dde810e7fea7da28df297d18392d84eb4720f2ef1b9ceb464cc409f7a71cbd602d1747aa8349aa572fc01be3d47b06fc35be54014c31b88eede4c89b340f28f06a87a6c06fcccfbc96660e7da145fd9e4f7972f8ce04b80f4dde17715ec4f57305b8f85f63707934663634faac1bb660aba13cdc656365672cc84df79d1f78a2eef7804890db1e19cbc2095be3cdec728daef666655118d9fb78a1f4f21b10220d18473028ea2dd2b5191d620d09427a15f56c2eafc35a917708bb1280f875f2c130cf425dc0ea375b2e44d921d5868f0e4bc295bad3d5b0b1e3abbf708b6970c4b2e63aebd86b2da9896c33d1ccbc136d25d405ba47753a718cf51d3d99da40ee2ba7459fa3e00b188e1defa52b966b757faaf1b58e44b2b18af1ef6b4dc1c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d8c14d82976fb8332715ac0ea21fa67e22d29b67ccc5f48d15fdd4b5bc4e320f6ec341560fbec566f49bf2138b096f1835b5031d5b4d3f47737e6143c028141594a9ba10a15e3487ab7db62a95c14fbc368b1a5dbb1bb0628301247339dbc22aed2d5fbc7aec8e7888100e8eab5861d3d38b8661a23a91e50534ad3d22d70a028ec7033ee0503fdf0227ae38a4e34b28c7c0b64e04f4a22c16e5b41c33533c1fe07bd26f9cb71661661fcc6491a816bd684e7e480bcb4478920293cd3ac26514d0e1e549691aa7e3e7e0400231cb2e5cb9f286b44c8bfd9846e97e6d679b2816bdc45946e7e067d36bc47f6f2300581fe7badccbd082a9600ffe6f261b33b80bad694f1bc26a54612038bc9a09547352ccb516993b90e2dc0b422ac8ada7b02662c63fd6320545b4e2193e07d18c0f3edd2d166292cfc2082325e6cec84f9d29575d9bfde545ddfc9d48bd81a315be6c17986297e08e74e595572f7af3673413c2699042e6f6e921c670d3bd382e37a93fd13a146abb41aece288f2e9e3bb01f3bdcc0f10320f2e97c51a9a4d5ecad98e4b2a7466073a1b521bef6f35458f41e9d8e7b0fb80460caa6d1d762917ce492060b81a4bf4722b196135feebe8e302ba68c6f8ca2129720d001fa0bf8eb72e7d99e3117552a55d2b8bc126680e87a223520bd3b2f355bc37bda722fc324ced5d7c6eacbbc457e585ebce5c1de58b6175e3a4bcdcd98fb8c0cd887d41c8e3424a21f9b276fe5ebd747cc064eb1648d1f71f401693cf4695b52db5e15a144d98ffc9834002969469fe85d3da82f91d02bf32352f84c36c480df928e3840c81f37c3c5b2539366285fd70190848dd54e2e29b960b619db636f33a0f541532d632b0306fcaede582bdb638debc409cb5518b231faefea39c145723923954106b58c2f53228e0a0af110c469c0915f88782e32d6e2e58e40ce71ea2d79ef65d59944dd6f6111f6c7dbdd7c027b37ec73ae2cac34fc5978ae48bae22f8eb9c43aeb113901e882f83ef926fb74a70595558f2a936cf136d32fe2646f0b78de301f20278a51b4132ccdfaeee645bebf54d14a215d48d1d02c78b279a606e662e3267d4572b65d046d67e5f624c141c11d82f82fd018b5bc5f56d740548de311df4bf23de93da6faff88aea7c9a3530ee9d62c60", + "resultLen": 7 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000001" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000003" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000004" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000005" + ] + }, + "type": 6 + }, + { + "subqueryData": { + "blockNumber": 9730000, + "addr": "0x8dde5d4a8384f403f888e1419672d94c570440c9", + "mappingSlot": "0x0000000000000000000000000000000000000000000000000000000000000001", + "mappingDepth": 1, + "keys": [ + "0x0000000000000000000000000000000000000000000000000000000000000006" + ] + }, + "type": 6 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/receipt/diff_block.build.json b/harness/test/integration/output/receipt/diff_block.build.json new file mode 100644 index 00000000..7b5b5542 --- /dev/null +++ b/harness/test/integration/output/receipt/diff_block.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1UXO4fJ3yaoLaWbhbbOV4YQ0M14JaNZWXv7JU2xLyCBHQHq73S0tYqvIYIPypqHgKeoDriGntPd+ORVjS7rHgXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALdAeH3iPR008NLUUcoqUJDcwl61btJBOp2owIlJHN0UoGP1VCxg0pfb4frOk7vCrgfAIGmtYEK6CqfCZg1BMyMIr04GzKMYrSNU8RioYaKYGQJ93pI8tog0HIm9uukwAqvb+MUfQs97uoPzrJF4NWdgXxEx/Mcm9QPP4FVA1igagSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHyVTOVoK1h1wHjtID7QY26z18rQIdNfeKD79xRIHSJgHPQf49+eBfjD+SOxGyjMLs7wkmqXVp7yVZHy2Ff+k1C0=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x330a1ddbfaf9d2e80324be6b6ff7671d3a98d9beb45a47c003905cc3bc74ca88", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5jdW11bGF0aXZlR2FzKCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/receipt/diff_block.circuit.ts b/harness/test/integration/output/receipt/diff_block.circuit.ts new file mode 100644 index 00000000..a6f25110 --- /dev/null +++ b/harness/test/integration/output/receipt/diff_block.circuit.ts @@ -0,0 +1,28 @@ +import { +CircuitValue, +CircuitValue256, +getReceipt, +addToCallback, +add, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getReceipt(9000050 + i, i); + addToCallback(await tx.cumulativeGas()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/receipt/diff_block.output.json b/harness/test/integration/output/receipt/diff_block.output.json new file mode 100644 index 00000000..84b2d412 --- /dev/null +++ b/harness/test/integration/output/receipt/diff_block.output.json @@ -0,0 +1,115 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x7cc7e5407dacb32add955d1c657f65d2fde7212ab311c2c2d9376acd94403f0c", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x708006d663c1193dc028a7d903dea543cdf79306fdbc401ff4271adf54d01511", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0ebda1644bf2d0dfd3a5ad3145546c8bb1837a99e747a14b51de706ca819a16f", + "0x0670dcf90c96b962b91a9ac336762920b7800112f0f84c4aa198a8367916560f", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xa228700679283c2af5edbdfecf5c3b19decde81a31c53a4e6fecb3cf77036f2f" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000011eb100000000000000000000000000000000000000000000000000000000000fdf9f0000000000000000000000000000000000000000000000000000000000116c7300000000000000000000000000000000000000000000000000000000001355ef000000000000000000000000000000000000000000000000000000000013cde200000000000000000000000000000000000000000000000000000000001087f90000000000000000000000000000000000000000000000000000000000198821d9c34ca76649b8edc8d29162fa8c87463b63e0ff2777a4635eefb7426f92eb5ba4ca504ce988f88777d471629670f763b65dc56dcf8cb7fca4d84e8341f0511d9dde241911d0fa603afc3cc36f6a9fb7ff220efa4875a8624410ae7df1f85c50873768c4f4a890e9db62fe1d2375fef2bb6f5e260c6819ddccedf72c8407df03d19df3a1efedfd0a84c593225ae0aba4b9c77be1ec603dc595b7aa5da53e115955986b429ae0b9d5ec1331bbc9c6b70c0ad752a4b2d64f45200d661e8dcfcf15c8f2d9ae4dc17a737d67915fb2facdbbbbd51f128e52d8ab47317703cb94d2437fbd10069d092642bc8684c171d286d5f14cc3fed0ebc5e37475b05a1be8e1652e15f00a0f408e4fb17e5ea016b8108f74b90c218abd5e9a98a74cd8f5db2a27e9843b685335d0d5d9f80073df30b62f699e8f907084d244e95efbc148a8942553615d28837798185e7583d2a5a07d3ce0db8a9b2373a2614c1fc0d11b649254b48d5c96d38da937a9f3050bd19a866acc4bf58c33b2e6fa8b1296aa3f7b7444cd721d8f8dfc0d92d924b7bedba8e6274eac764578260f4b9de1f7afcdfb474d83fd1256d2da09aa1e093d97b4d4b337f73c2c3d002f25634482b697f8e38342b6105c90454b86bd0dbb44fbf6fe5495de1d03fc57aeaca9e815dd5397b8f90244d5f858a9dbbe0116fe8adf12605a0867e3046eee8390f69fbd7d42fdc835499b7d435a883eb58af0931315b96ea0ba91f6816700b0c2193a4a392bbf44f00e609a64771dee0f6fc78ad0f90907cdcc77b8cb103347f0689265eb3032c7ab01f1feee4730810950d884d040c6f937759f09b93412b259a4193ce027dec07219ee2f8e18b4e9a608be945750870cc5427ce7111740f0a9c33179c3630c6d42178b1d1dd4a7fc57b09ee27bae6aa99f4b83198be2c23dfb0217d51465af89ac2561dfd5834b300f8e46711fe5569367cc698ee02461f644d3a8738e981cdb891967bffae88f9e7d931065bd6b2d8e5b9958be95043fab3279220852b86a28f02a13eb92f645ceed7eddeecb5c8a5748e2df66af2e557b006252394b00ed0c2a2c4a72d747693f938016c307730ad9a784e64be0f24a08533282649c6b42f4e119348d18af4a26180b51c13d61198177a37978b335e733a4121306f4355f92750d86dbd5b7e445b2be1a13b84be3d4ce033cf1069203cfb985d5ebf42f741989106e8b45faf5f65218336c152077ce506851fc4ca620a3c65ff77976670fdc42261e0093609b934acd8ff3239f560888bede94918a16707d3cf2d59226bf89da14a66dc63d4b4d8671b75adbb2d335be4dbfb93ebed8ab6a6728d82b2058f83e1d1b7ba4ba4c554c26ed2c00f600078ba75d6a2eee5ae8df5f3bf5185783ef1907751127f49d82c62b8f1a2fadf93e5b6e3af532248b8a093e2ca0c2181a9b7f19fe775ce3459a8cae420b807875a0f010382b8451efdfb5a5f6600e602b3eea18328d2a3190f15323a3b849ff6da6dccb800932503eda0674e4149ba335bfe0098a8f6a8cabd40f28f61867995a2863558c4ed99d51df1775cccd9d9f9a97b50f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056ce8437399468871bc08889702cd874b9e86221277a3917ff9633b268c52f12eb2030e7df3fb5837144f0aa1a232b2439ced7b9d96ab2f79d45176b32c8770d764bfb13d8950f222f6f74b3085af2d30968c18ba7fc330bcaa295b6b506292459b37bcb99e20b217372ea7e59b57f9c89156015d04bc2e52b80d97c4486f41c941af113e69a3acaa61d2fc32eaf683c14c0f8636a20667686d000edbd0ac70b015a0596d66120fce81f994ce5e719b87ac49878bf435f4dbfdb6024f5f5840f23f9684b90d4e4a4235e78eb844976aed388f10d52a847d6e5f9a4d3b89cc301d16eeac6926e6e2579c5537000f70c1e2536448e5763e8a4b249b2a15bab3b084de2c5f186ecf868240c408847b265e0923c456f057dc94d1f4a4deedc93b81868a8e5a715493cb40ee57bb5d00d71301e077b6546c5fc4750962cb85c79f30eb63bd17cdb710d61fa188388564e9b912ed53722ae36b1b7b695d382fa2e7d1f45c8108b289570149ff7200389440f6981eaf1f478cfd5040ad1b1f4d87e431d4d23a00e3431d654c50dc94e071585e9fbe35d48b66351eef0585b6434d7eb239b6e182977fa89a88c0254703753f27870d319ff2aea9ed922dc513891736c1f39574d41b942aef0e7c323372cf91b418f74a0af969936479c9ecb1ed3bb7a1c8bdf09f3621cf44b8435fdaab8ed603201a4c9e9ccb6a675818da1ace5a363005315218a6df270d6785c4bfb61d61822e2d368cbede3d1cb42c1a429e0a18e266becf35c4eb1d16875d791b156c0e21fbb336c20e20a610c7165dbc509fa35148e412a671477e04226d7c198955a43bb6ba6cf855c00e717aeb25bb27e7ecd21b8cb8b5051fda35161c30c058a7a3101d5ab1f02803996d2803a40b3847c3a2e5946c09912a4da3806e6dd8fb35dc4c98028167916cf7d0174ac2f366440d504d0060f3404154a8ce400feb53844336fc154b05d0fdaed3f2515731824d073140bbd5f09fd206702d9d8c26ab0705aaca998f45fc95a6dd9bb01be1808a98421361ba43991ab54039eb0423a3b92052a959fe3e804c00180793e1a2d5204e30f5c45ce0490714af5bae95fdfae8ed5595784244089780156b62b1c2b5b245646f77405e01ab8166cda0a5e7de5738d1e9fd456c81ac244fe725852ecb5cb5009", + "resultLen": 8 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000005208", + "0x0000000000000000000000000000000000000000000000000000000000011eb1", + "0x00000000000000000000000000000000000000000000000000000000000fdf9f", + "0x0000000000000000000000000000000000000000000000000000000000116c73", + "0x00000000000000000000000000000000000000000000000000000000001355ef", + "0x000000000000000000000000000000000000000000000000000000000013cde2", + "0x00000000000000000000000000000000000000000000000000000000001087f9", + "0x0000000000000000000000000000000000000000000000000000000000198821" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000052, + "txIdx": 2, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000053, + "txIdx": 3, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000054, + "txIdx": 4, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000055, + "txIdx": 5, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000056, + "txIdx": 6, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000057, + "txIdx": 7, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/receipt/same_receipt_diff_fields.build.json b/harness/test/integration/output/receipt/same_receipt_diff_fields.build.json new file mode 100644 index 00000000..5edc9b11 --- /dev/null +++ b/harness/test/integration/output/receipt/same_receipt_diff_fields.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2u1xCPl9q9xjvXClHy3tUadVQYbCeUXSOidg14rso3GdaiD6xkGrBMjKD9WvQ5gsOHRVuNeoJLGAxYj5DOmEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARvIU8S6sA7xy5jo+6AymoJqJfB5t8Wv5uHASdnkF8Dikc2NqrTobhrz5vJh3aL76eh4m4QXe5oYt20UMe/uhAINHPvSS4B3XBFfQzaDozCBj6EuhItaZLkyC+6my40FBIM3K1ojMlm8nmssfuXNr5jjn+W2W6Sa/oWbN4l+twPgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHxGJs085aI5kJvLV+LT0+jh+xyfP1UPV8Zp9WtkOOKwRpwEp4oC5IcUNsLhtioQchpVmGUBko8zPb4fXV6jvpRk=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x947742bc84628041f572959bb07d7b89ba17e47d1899826f65f77e5eed03409e", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0UmVjZWlwdCkoOTAwMDA1MCArIGksIGkpOwogICAgICAgIGF3YWl0IHR4LmJsb2NrTnVtYmVyKCk7CiAgICAgICAgYXdhaXQgdHguY3VtdWxhdGl2ZUdhcygpOwogICAgICAgIGF3YWl0IHR4LnR4SWR4KCk7CiAgICAgICAgYXdhaXQgdHguc3RhdHVzKCk7CiAgICB9Cn0=" +} \ No newline at end of file diff --git a/harness/test/integration/output/receipt/same_receipt_diff_fields.circuit.ts b/harness/test/integration/output/receipt/same_receipt_diff_fields.circuit.ts new file mode 100644 index 00000000..7fa0ea5b --- /dev/null +++ b/harness/test/integration/output/receipt/same_receipt_diff_fields.circuit.ts @@ -0,0 +1,29 @@ +import { +CircuitValue, +CircuitValue256, +getReceipt, +mul, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 2; i++) { + let tx = getReceipt(9000050 + i, i); + await tx.blockNumber(); + await tx.cumulativeGas(); + await tx.txIdx(); + await tx.status(); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/receipt/same_receipt_diff_fields.output.json b/harness/test/integration/output/receipt/same_receipt_diff_fields.output.json new file mode 100644 index 00000000..723fdcc4 --- /dev/null +++ b/harness/test/integration/output/receipt/same_receipt_diff_fields.output.json @@ -0,0 +1,106 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x4ca3358f00ac7bea1bfa9973018067b3a095176483075523b4d4fbb1ebb17921", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xc3d7f8144128d55a09bca60e2496ba2070473b2ab9d6e3798f217a2456061707", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xf11d0e46bbd347026e542006dc45e24713f3b19c1bc29a32920129889e14616d", + "0x3c0fdfe53df45484175a96c8178abad56e38e7608dfc6f75ac1646c7a91ffe48", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xd37474e0b01691e2ce83b7547438db5cc6778b5bf60f0d9eca30a7eea3ac4829" + ], + "computeProof": "0x98cedfe41b911029a247e633cbd5b95a700fc88c602ac3d5da61ee6bc3d7f055d2b7d42ea34643692f695fad4e79ae13e58f33e6bc44e7e8d5dfea39f2c616513ec79b2d8ab243624afbc3d0c76ca68db0a9195476c5b94043280031140ec55a9182041a1af8b0fa946dc21023b7b9bc91bf962491d3b676040d8fe9608b2e15180e90ebafcc659ef01a65507860985a95863f682065cdc5326838b179af1e1959f919cac9dcf161dbb06d6305664d618d000dafe7fc7dc7ef2d0a1154a3031232f13820d88a7501f82df6e8051c08a416c6f0e102294a72156325f562e70d52c7e5c3ad32ab5594fa8aa6f4583f767349f73346604eae10703b92e00f7d9a2c5ddc2e7ceda72e524c2547e726e4e935d6766470270b95661fefb6af187b3625cb164093413306d6872532b6a404bb01da7807a81eeef6ee4a4c952d54a1642b06f20625e7e3827ca1e18a871db7b24a8376c7dbe9f0121ed86d32df035f16533ca9a148ebee6cb75d8167a3216138f7f17d912934c8999fb9710b0d41af2761ec3170abae088f323cb5396eadee25b0bbcbe7d1ea25d76773b1ea3352713656ad73cd4d6d165abe85be9c054fc28013ffde1d05534f7c90f9bca5ef871ae24fd24010f025a91150bcaad86c0f70126090f706b90ab811831c2c1cdd7bdfc36383a40db08ac9b86910c2816d60a6d13ced69a4515ce92ff73d057b6b9bddae4efaff5f4ba64de267d9a401b626b88ad71e84ed47bfd5ab68db8706ac97a7b31f9a74fce56e1378c567369d8079db351d7c180acd69407196cf1c8030b79aa32728a88f36fe20c9e51670dd391650e1c747a178c70f829a21967d3a7e2730202e4fdd50e941d17a06a8f6394e1c7546cc42690ffd09054ec12d80694c5a20db20163e64b7dee25e2f83111ceb663b57be6fa01e7f6bb718190c300e108954fd2eb68350db783769b65f1b74212825104429c79f2a5d1207123ac46055ac78a829f7e3bd7f9394e5c689ce58308bc06c433756e2012fafcc4494e2f07b11d99a226ddeafa57b60e5a334f0ede3fd02f48eb8ca7c302b2fdbd527d223c30d4c822fedfdb614601d597efbeeeca3017221e2f079abbc0bc70e51c085e5f25516fe14d6f12796eaaa1618fcdf160accf94aa2f794b3fd8e2b4039b3aab2b057d8d000bf636c958b893d966509393c8ff7d040c271b9f9ffec178fee84857825c2621b6162cd5f98192f4b35eb46b1ea9e2a90faacac22af8cfd4363075ac5e9d11e191ebb34058ca493b06e9c027ab1cea50942722dca6a2daae3fddd4a203e101714d9b2dea053a83291f3d4f5b1ebcb12a018446c101461bebf264e4634889d160a50a936a2582a57993cfc92bd08f0d661eb3f4028b630fc26672e98ec4e123a08f6a2ac37f4de7987e85ada27e3adffe1bc23d2c65adeb83b089d6fe920a28e21cb9e31ce7b4655124b8872217aac60b27d3288182e04f699453802c2820f562332e6226851acc0a8eb0ddfa1a945b335ae39d760157ba2bf91fb88e068842b04a15e8e1acf9097af662255c3d91d3808321d29e353e672cdef6507ad2486a71a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073f326cd02abd4f5ae45c9d4aa61205310a77055b70ef379d73d5cd6936eb90607d8d8a8213130e9a40df42c7ea96e5d5ffd17b36b26680b859afa26ccd96c1974b723e99938924c201a61514676cda9c8586ce7e27c85c5bdef56ffe6e1b11e752dfc65917f0ac52ab39f9d5ec713e631059e654e1384d7dde17a557270650163df1330ea9e78dc95d4b7dca9a2df64b2c0adc248b518da122b654f51b8a8126d12d65acd20afa6a44503ba2a89bc6c76263d1d120964822e9f124affaeee1efaaca480846a1daa92c2781847f85c5a46afbeb8838f9163ff656eb05cd29608db66a9b899bb134e67f651aaa8b9e2cd45ad5495df33cabacb6663be7cb8500472f0bf2c445aa8bae4d9adcd268d59cce1d795968abf044ad121c3d74ed51b189697433483dfdc04ecd6c40c8244c9d253e96373251c870bdf1547999010b302eea3ce07a3670e4403411a2167bedeb6450c061df72ed2061c4c1e2214ab2819f61297d5a40796f287e7b6f88b85ac8fd5d02afb1ec882d59e9990aaf5df2d15375cfb6fe39ed53fdfae71d4566a611bb875dbc63d6b6bd4361220bb3127262bc0a3c6114b2fc55be978392cf515755a9fb678fbcbad4ae38448b35605a6280a49bcdbb9c880480a83e2858dbef379ed55b7644fac0d293921acf14f68a9e80c35cda436ba782dd701da101c5e723ae19339358c6c1c56f5d21dd619449c401909a36076ac67eb665c36eaa430ca1a63a4b03a00f471d139c2b85aadbe36ed049186180fa6153b08b9b57883dfff3a51ccbfa2291eaee2551f2bf2627d4ff020c53539f8ea4928f28c368045fe865c690530cf3fea0346e20a67de89bf659b165a0083ac2f395b2e7bca269ceae2c5cdb805d3124fa0cbb0e1e21b6c3a403f2a76825954f4824917b477b5cbc28bcf272a641e16edc2ce9fa408dbe4e05a22145a9b7e50712c454d2f86cafae044eb9074edf7e6735d955aa885cd9d7362c7004bd1c9f14051cf23fe624fcb669963948fce5d412b6aa45557c28cf70211cf2b6e3b5c9d636851ddb873623f90dcf3a1b0f4355091648d7392159be5a5e4dc087e03dc1a2d69532702c2943f4b439e1ec68dd1281c3321fcdf58256a47e8c569c04aedd528f8df9fc3e681111a01ca82b24b75b980866a8538b2c1f40c404967", + "resultLen": 0 + }, + "computeResults": [], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 52, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 53, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000050, + "txIdx": 0, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 52, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 2, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 53, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + }, + { + "subqueryData": { + "blockNumber": 9000051, + "txIdx": 1, + "fieldOrLogIdx": 0, + "topicOrDataOrAddressIdx": 0, + "eventSchema": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 5 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_empty_slot.build.json b/harness/test/integration/output/storage/7_empty_slot.build.json new file mode 100644 index 00000000..bc7ab4a2 --- /dev/null +++ b/harness/test/integration/output/storage/7_empty_slot.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC3BHgYbza2AqZ15j73oSh1+5QMQgHScb7CdL84njoDGLFY5P7K0yA8oPhyl044ZAeL1UN+7H2rwhFeJFGapeZgkO0noUgI3w17VJIYzMLoHnbhYnCxyWOAMNIVnVNip3R++5CbfGn4tUEUOkoPXef5t2CNLalWiUFwJRxObIN+gLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9ohvOBh8XiTW6mk4zrU8Q0c1abRHruL9EjfMDlPPwfvxGuqPgHhr6O2c42BnD5U6+ldqEf7zrbJb3CYHyY+CIWQvzXGZ4a1c2isJVLRt/yDKy9ElnfW2vYHEZ/k1LPKsyQ3i2Yfs0q8lpoG3Y1otA3rTndthFDZxkYQHQAaaEUgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHwPQrRuLSyiKenCxhbnDID+VZ+fjQ1LdAXYqoauN06cMIC7U/e8hqXsdW8k2QLMttnpeFydB+iM5OhntzXhATS4=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xdc12e4231f584094778a453ebafc81671421d4ad51e199830c6eb26db381d079", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgY29uc3QgYmxvY2tOdW1iZXIgPSAxMDAwMDAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldFN0b3JhZ2UpKCgwLCBjbGllbnRfMS5hZGQpKGJsb2NrTnVtYmVyLCBpKSwgIjB4IiArIGkudG9TdHJpbmcoMTYpKTsKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgYWNjdC5zbG90KGkpKTsKICAgIH0KfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_empty_slot.circuit.ts b/harness/test/integration/output/storage/7_empty_slot.circuit.ts new file mode 100644 index 00000000..16a05ed6 --- /dev/null +++ b/harness/test/integration/output/storage/7_empty_slot.circuit.ts @@ -0,0 +1,28 @@ +import { +CircuitValue, +CircuitValue256, +getStorage, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + const blockNumber = 1000000; + for (let i = 0; i < 7; i++) { + const acct = getStorage(add(blockNumber, i), "0x" + i.toString(16)); + addToCallback(await acct.slot(i)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_empty_slot.output.json b/harness/test/integration/output/storage/7_empty_slot.output.json new file mode 100644 index 00000000..3eb5cca3 --- /dev/null +++ b/harness/test/integration/output/storage/7_empty_slot.output.json @@ -0,0 +1,90 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x8b1ed9608b15b867d42576dd51dac0891b83f7c5f239f5e358a5234aa6877502", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xd99d8ffa93f5de5b1bed67c7258c2e505da3876402592daf7fabe55fd11e9c67", + "0x0efed7d9d444d2155de23cdeccb6fa4473fdb72c05dda53ee6fad8356761d30d", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x90ccaf13f84651647fb8e6256481349cc9948bffd813ccf21d9b67b1aa53d361", + "0xa639b6142e8eb2252c3a8860237e56dc63c10bf2f0dc73c468c236fade77570b", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xc18262b837a0dabed5ed5ba0a99998113e1f75a8602e8f097273cf2712c73a03" + ], + "computeProof": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6d38fb94e692980d8b386c28c38bc9dc8e2ac3ac892e0f288da2aee9645285f6364df2befbbefc69dfc2caa098b3d276b4b2ba583babfcc24903fdc137d696188631ceffe1058a14f4c9e908942cfbf8e3b2017db3100941c438e79ddfaf610fbc653723caa60f3136b3e9a9a1e511c633047b0c36649ed13ecc53cf7271f54cf50bb1766669db6f56dc79f2ee8705c543650e13182c2154498145d23c77f6385fadc2a0ae51f26866211967b7a3c60b4f50607ce6e82a9415604c56ea37459049853e751466965f7a314c50abfe36114497fe2bb170b3ad4886446d39d6910ad341256b2907b0fbe3b424dfd4f4a9c3dd0b67a835672fc8d89e3f80bf5c24bd7583d00bf96acc4d74df32471c73ddd8bd14f8410e202d4b6b606ae2f70a15dba4e1a7fc6ae4997b3e1fbb733b4cd2c0abb9ca7b1848c5ad6885c299f9b572a839472c8945c2020282deb11e6513c4cf6a1f8334fc536bcf44a18d582df4b02acee9aae53a7113038121b713f44c9b4e75020bcb17699c4fd76b5ca1f01cc2de8db610e15e606753be843ba7ba7b35ec07568197b0591944d808e386484374b033eda5bcf0e60c65db1274985f34ebc4a362598b902caf12fd847d58dfe855d7159416929c1094995d261f8b645a5b651131690dc4502b52089c4d88e51a65c8aa29718b44e5c0e11464c37f589119e1355ac9d9d5b490cec179b4147d0b128d3a9010bd16f13ca2dea29c79b5f69d0ef9b7bec14bebeff34fd42a6dd10c10bceddb31740ed6294035f8054fe8a7c3b758f7abb6d771bf1d645f702bd7b9d0654785397eea9c9a6f1b5dd9667a9864ae556a1e70788271a11db9978d48fc90bcfd8ae78cee9b61225c1c34acc946ea4f69f3a42a8f1bfb6aa3caad65af3c002cb263ede4e8a20a17b09ea6341a39b79bb1cb343ec6db4103b58774c6421fc2ed1266bdf2a4ec1ddadc0e2a003afd128567dfcb25acb0b5fb40369001ee3131809835dbf3ed361141371f0e6b950c3dd57b898dc897e3dc064544f68ab5f4702b56a6f00fdff16b9321247739ffe5bba885b39564c932f70738547ad617b3330b03bd57acdae0f4ea6abc309c20d984519dfce4ad9835e23a47fcd4da8fa3c2c3944f4f33af04a7a4dcf8617ba96094298408a11cf188c109ee2a29d1940061d010f7dd1fa9b75364b3bb4812c3c0ed3bfee8fe2c170d41940fbdf18d4a32a2049ea3cf22e4aff3e1580fbc637816ecd3873858c19c26be70324a446c1654d216d3e618a4aeeaf316d8c7e04aeda8e6db0b8672254b1617f69c16e673f14cb2b31da88871801799419b5e7953060feadec84477f7930c77da0c48503a7068905cb5b611fa284cf0a5786e550172db794b345fbc348f295c5adbc555dd6d37708654bc724e77d6a8baf6973c122aa304d5ef9d8bdf1d05a591423f0b7b7eddb2bdd53f46f5fca7cee13922387142bcce955d142f79485dfa669cda888567fd5285bd76c320b01f998ea75c7cbbc3b6426903a584b1fea9a1de0a51d6c52692920837938c8f644a832af0644a443e240020332c258dd71301831b907bc7928a71d4880dae17347e359ce983c7bbb36df4c9e90cb63a8077d3284d5b75d417d851d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018b5fc728eecf75a7223286030941a86f5fd10764aad70b89181046f162d8527a00f099d4f4880e9a1089b722fb8977994d54b6687f1de0aada9fd0a88ffbc241932c1d63125df1c2e66b7c85435d6c6383e89b8ef2590e369d68b0c2bf3a52bf4605dd797cd5f94ba710119a94a17d83aa66543081aa3432d841eaa2373fc2bcc9988d8adab93bdc70b81238736f8b4e48ce6337ba56a4b624ab0d64dd68b18cf356e5c53ade3eaedef0716aedd76e1ba0bd6ca64e5957f9348d43f9a51a01befe6dc947d6b43e2584d90e2fb5a9f08daa6078aae08497cd4531944918d3f18337a0b2c3bbfe20f90692314863797098b36f55a03aeeac149fe28ef70132e00466155b6d34b272d9cda438aaade988ac79b1763c51ebeeaeec0aaa450ab9a2acf4c3ee91b6fe7a035e4936e6a8d703c7771e2adb0ca3c703704e409954b3728eba3d2be19dbacfae9aa5caafb1d2e6d525413dd9a94e92d1d9b0d3d93f781006f4ea6a4228a8481cc181fd48e3f381f2e371fa948cf6940dea46eb0c9aeaf2a9e57dc860b4ab6449cb8648992bf867ca786d93caafd0ca4677bd6a99ad3fe242a15988d793632e3007f7241ef467390ade45a798c25765ae982dce681d50718024c557c44d94fafce5681e6b3ce9cdf21886fc56ac757a79ad704fbc87d550ca0a8b32a0904a5aef0e3f44adb4fe186a96021d11472105888670a09f1a4812c7e040b7e38f7a34e3f51e777aa1f96d77cf3990cfefd8b3924dcbba9025aa51cc17271992a636aac8dc4d8d742b27b24cd0b3924e5b828a800c402d5f11b2f14810b30952bf4a058bd21e7391c6c0cefaf8926b51b31d4c8e390ac0a05bf2715ead314d493418ca983b3fd32eff8883d6c1e7a44fe1889b55f1669939d571e183150d22eb1122a3f6273114952bcd17bcb51f85bc4efbbd0024ff48c211bd019930d5c6f07cf2ef3d0e2424692d24d258eed1fe06522bb4385bb8d8d0f594f1ebd7d72135c90a7ebaa0b46b69fd3f4986de6f3109bd2882ac8f804b31b48f3194bbefe57b59744050d42418aef5bfda9076b22631277362ef02341ea1c43282965f41507adf6d910768d1c19fad7fb85942ec8da2d0c6e7a28f7ab91935f6f5574e907dea94fb9dad22995f302d5293f36e9eb7d937bfafa04b60e6d37d18e09", + "resultLen": 7 + }, + "computeResults": [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 1000000, + "addr": "0x0000000000000000000000000000000000000000", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000001, + "addr": "0x0000000000000000000000000000000000000001", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000002, + "addr": "0x0000000000000000000000000000000000000002", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000003, + "addr": "0x0000000000000000000000000000000000000003", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000003" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000004, + "addr": "0x0000000000000000000000000000000000000004", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000004" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000005, + "addr": "0x0000000000000000000000000000000000000005", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000005" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 1000006, + "addr": "0x0000000000000000000000000000000000000006", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000006" + }, + "type": 3 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_slots.build.json b/harness/test/integration/output/storage/7_slots.build.json new file mode 100644 index 00000000..2b3e4172 --- /dev/null +++ b/harness/test/integration/output/storage/7_slots.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1ZEJvc219D6zKRUESOh+1l0tnRrl4ivGf6KBxZ2VDzKwqWElv/7n/UZXXbPlFlwMLXDlvHjcqdS4Ok/ymU9vwIO0noUgI3w17VJIYzMLoHnbhYnCxyWOAMNIVnVNip3R++5CbfGn4tUEUOkoPXef5t2CNLalWiUFwJRxObIN+gLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS7Hem2rRzq2U7GDEXjza5Cy9hfIaXowQ1uXrpTNPcTuEDPKH/qvmejkoQgxWaSGqVC023TZ0wY29/L0bwH8QEWQvzXGZ4a1c2isJVLRt/yDKy9ElnfW2vYHEZ/k1LPKsyQ3i2Yfs0q8lpoG3Y1otA3rTndthFDZxkYQHQAaaEUgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYHxoGeJkZJCUeMuPPn0KOspL+V+5v1o/fS8kvwcgmfNATumxosKvddJ6uLijzCByoSHC8BWzMr776xBxQOAZDaxE=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0x85f38b4904bd4927f6560a9eb627dd99cb25936c5cfa1f5d67e58796e8394f6b", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgY29uc3QgYmxvY2tOdW1iZXIgPSA1MDAwMDAwOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHsKICAgICAgICBjb25zdCBhY2N0ID0gKDAsIGNsaWVudF8xLmdldFN0b3JhZ2UpKCgwLCBjbGllbnRfMS5hZGQpKGJsb2NrTnVtYmVyLCBpKSwgIjB4Yzc2NTMxQmIwOGU4RTI2NkU0ZUI4YTk4OEQzMTRBQTY2NTAyOTJhZiIpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCBhY2N0LnNsb3QoaSkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_slots.circuit.ts b/harness/test/integration/output/storage/7_slots.circuit.ts new file mode 100644 index 00000000..36ace652 --- /dev/null +++ b/harness/test/integration/output/storage/7_slots.circuit.ts @@ -0,0 +1,28 @@ +import { +CircuitValue, +CircuitValue256, +getStorage, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + const blockNumber = 5000000; + for (let i = 0; i < 7; i++) { + const acct = getStorage(add(blockNumber, i), "0xc76531Bb08e8E266E4eB8a988D314AA6650292af"); + addToCallback(await acct.slot(i)); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/storage/7_slots.output.json b/harness/test/integration/output/storage/7_slots.output.json new file mode 100644 index 00000000..1da02e1d --- /dev/null +++ b/harness/test/integration/output/storage/7_slots.output.json @@ -0,0 +1,90 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x8466084d507c45d2973a121b3364df1bf371577afaf5dfca1465435a0b764124", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x76aee825e4659ecdf47f65c48733eee76903f4d1770deeba5e4020e95d696701", + "0x0efed7d9d444d2155de23cdeccb6fa4473fdb72c05dda53ee6fad8356761d30d", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x55c5b797eaab3bc960e4c9cf62426928c70e2b4e094367ea07e2c05fafb8ea62", + "0xa639b6142e8eb2252c3a8860237e56dc63c10bf2f0dc73c468c236fade77570b", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x596b4e2ca9c1fe0b3c85766435aa6738de2543b892f74085a9f9941258e42d52" + ], + "computeProof": "0x00000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b6dcefa8ef798a6dacdf78ec6cf7c66b738abe9c8f4933fb0db183034c7bf89300000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f00000000000000000000000021f52f5dccb5b09c3ffd1e8b1bb38c6010d34c04ec0273e059813c462791ca072e04bd95a0dcde65964fca78d7da18ee873e11637ba58fea570c2a5b88a57bbe348ef0fdd399f0bee4bf2cf09cdbffef164ba72f5ba323bb86f41ef012c7ad72c89b86b4643bcd264684ed1f1acadaa2c6459b1e704a5216c6e1d87d7c2d5b5c34bf5251a8408d5bf59e987448faf3e6d5aeef28a2977ea69bd477dd94b4f45b3af1e4eb4c88f3721e82a31697ac01ed559a7b6518b64e3f28288170033c1b7a6192d90c2fd30b998100162891b6a1751cbeb26a63b6bfd57b437cace12e0729610558e247d88763305f4b480cb0d170ffeaa912fc8efd010333fe31f08d93273733a677738075d063c949286f89db6fff6f3467bb62dab5f25821f8cbe53123a815b1b834634dab7a5d83e103c9c5b66a8f0c67ccd03614478c3d2238dfd8057bf62d9e70b7b1fa6452262035b691445e57cd23104289ab90d0e3f539f85e2cac0b6c8d0a8ecc1076ca9a72fbf967ede786386fbda42f806040699ede63e3a7316b571b03d0d6bd500628b586d1ccfdc666d36fc4962e475841474d16d1f544ec5c4551251ad08b94f4ff17ce268b029e0f775d108f56ddbb04876507ea386a51f4c83a77d691cdc96a6639b5f8a5168e327507009fb2989f6ebfc8f3f89b0210e372df13e9b37661e61d679328773ea9367c2e869d90b55d2494b6e2d9ca0c0f5e72d20f43f97bfa599bb8e828d9fbcf800752dd31bcba66b20be56e6df56b6df0ec4eef0d964655b59995fbbf22bfe5a0842a6481c10e4cb411a672e4aa8720ed11300c70244583b9638457caf6eea46e3e26f39e482b5fbcb374a8e071b9fed8a2fcf7aeb8d9cd60a7df815a99a70fea3f241d47b67aa0f012a1fd21e399b15d009ea24a55a2c37a41533e1628de05d8341b22aef902e770374e29463bd2e22636a2f53b4e54bc913e000952baedc3c97e009f0f8184dd2942649511142eb7646c236e157d5d8c11830fb15dba716cd6c41e076a4b44e25111ce4a9bff2b44b38ac8847a76c0a8a7ff92670b2ba47c6bdb0bd37b1c5806b6b4a2b12ee62dc2beec15fd809a222d080ecb58b566a8f898f4246615757eee95547f57e15f8b024de500c5d751a34908320d7a825682e2b91f01737f95d3f4d8b9cecca308dc1f2082c1f96f8c55de7c960d6d1fc702cd8b5723bf88d920f29579c9117e61d600c93611d92119c9b3e99c0c23dda2c819f9fe232e25a14d3518cada11d590598dc2d33ac109f011ff5cebb53b7709444b08cf10548e67d174f3e995371e4ffa2a482088834624ac4a10a08c2a66ee948cd67920fad0130e82657f2ea51a8f16a81cde09933ac266080ebd64e68da282c3ce130714ef1761dcbb484de295132989aa8d35a12fe3462d18155a3ddd16923d8cdf017e05f028d11543516468443a299a3a9179348fe9302ceb0486e7a23efd7e60214a47d0ff65c2ab4d20a5e93f75d3567d04add338966080b9b5771ed27fd14827f5152a55acf298bbee7c0457281ead527730b911189f203f33c0b09c14e54604f4500a0cac984e058dbd1fcac2432635621bcd856df96340fd23fa0459d07117c635d21db7521c107251c84541e5a939995f21e1f06a463cade42eb4801cc613000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fdc41ce3fe11eeb90f06a6a8c835f3292db2484ec7cfc37aeb836658e24bb32fa80ac30e47f1c5abef43ddc2cf028f80f2f8ce7cb0ad7169eb149eaed62ae12de207c88fced45a27b6b605bfa8d9c200c1fac00925f6abcdfd248ec815829e0363f5f57dc06b00af0f2306ff1896d7b52ff8f439410f016ddf34b4d4190c0f30cd7df00796a313ae86f8572725a776c3e3fbda5b325a89c9a525d49eaca4922062c960a18a3f70be248457a94fd5addb348a09241961e9becba117c25be0b213bcaad512b25619b8b51806694e0a9b911b81a1a7e6d454819d83ae90f5bc910ada74f0f91ec6da2e0f84249f58960c92621747b784166d3b7e6aec2418bb8e2c6769299f5f040194a190e198bcd4d62fd26aef2a3fdbf949e1ffff4d50591200ca7d51707610e17d56a19b943ae85595bb8ece6d85e5b73adc95141b5ed9552a768e0652f345fcb47550156ee73b5c96571f9e7ffda4cae3fa154696c60ee5231842a9c89fd9ba6f6a4a219398d8b2ff567387da50f064039771e9e5a8309b012276d5c1ec08b6bdd0cf8cabc08676d23962d31879cf80764b093622a1d08d108e72ea6c3df900791fc0262b3a29d8ba3c357546c621182323112e219206961b2f40fed05da969717337f365fbcad9323071a319024ce3f2e46b206fc3b59c0a3d2404766aa37192c2850be8d3c4dd2122056ebfb5417144253ff755d556251c37a67e9d4fedbe08c3a2b520e2dadadf934712537795761059333dc753144d0e858e416653ff5de0a853a8fa549b56afda137a34d57b025c800fb399dd35b90deacf3913ac4f7f4cfbd09ce77fa579a76964fa2f0bd8a18413c65c93f026d718917b32bc3d9825d3c07c39efc77a12f919e8a342c5e9fb90006ce42edcc24f263511555530ca09cdc0ab2e0cc8a1c6853b1462f8349a94913f733a8e1b18b02d706bf46e5595b55140c05e411f639837f0c1a6f42fa60670e0026b3b9b26a201e7c6b32476a249702285bde658d5786822b8285bffccdd9acb00874159a0cc0e4115a7aee38f1c6e8996ca560099cbe8b1ed326099674d601ddd25f38558ed0021093145373a2375f9d318c16a654ff3ceb113154eace6a4c9ceb8330b84d05793f520f87530be911826cf6f4b281230702c8bcc26c60cbc7f2cf26074f0f94a", + "resultLen": 7 + }, + "computeResults": [ + "0x00000000000000000000000000000000000000000000000000005af3107a4000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0xb6dcefa8ef798a6dacdf78ec6cf7c66b738abe9c8f4933fb0db183034c7bf893", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f", + "0x00000000000000000000000021f52f5dccb5b09c3ffd1e8b1bb38c6010d34c04" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 5000000, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000001, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000002, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000002" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000003, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000003" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000004, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000004" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000005, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000005" + }, + "type": 3 + }, + { + "subqueryData": { + "blockNumber": 5000006, + "addr": "0xc76531bb08e8e266e4eb8a988d314aa6650292af", + "slot": "0x0000000000000000000000000000000000000000000000000000000000000006" + }, + "type": 3 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx.build.json b/harness/test/integration/output/tx/diff_block_diff_tx.build.json new file mode 100644 index 00000000..f05f1b32 --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC062Zf+SClQk+Yg9mk+2w2vIAla5ZYAMAT4+QltOkfiKk2arsp9s3Da/CtW/YYjGYm4R+hMOB/a9TYucTgbScsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIajLFsjPxeDMFILBSkkZjJZfz7/xaMruhgxTOubnmgJgxcIJiQMW0EdIU7nph5EaMV5BkUFJooogtr8lLGXNQaS3LnTLDTmG/U1H8uGvqSfIwaFpDVTaBlCWnz5gRigKFJPR9ea9KEeGnu0Z+RLDg5HCOXj0KQ6EqScQ4ZOlcIfgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH9WwQSFvKxAS3qqR3mBqQU4PNpbxmEJ9y3xU9eQP2Qgn+riwF8ZDf8i2SFkTP8JpErdAxI7qzt2xznHednXIYg0=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xdcba4e3cd35725fba745cf797b00fc32fa51cc03bc4b7d8dacda06ff81a6ae76", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAgKyBpLCAxMCArIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx.circuit.ts b/harness/test/integration/output/tx/diff_block_diff_tx.circuit.ts new file mode 100644 index 00000000..b7c67b44 --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx.circuit.ts @@ -0,0 +1,27 @@ +import { +CircuitValue, +CircuitValue256, +getTx, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000 + i, 10 + i); + addToCallback(await tx.r()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx.output.json b/harness/test/integration/output/tx/diff_block_diff_tx.output.json new file mode 100644 index 00000000..0ba531e9 --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx.output.json @@ -0,0 +1,99 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x44be57c7fea5fc47536b1cb21cfa231ba46abf52fc1b699d08e019e0774d9625", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0x59b9ee1a2f750c516a4c5d752847cfbbbf6357399d135f6e604a13726d703907", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xc358042183c73ff0dfcf9c04dfe588d481a7b4015fe762fa3ad21f242077e853", + "0x104234b1037aabd32d1b6dd9a1f3ca5bf0518666391ac4eebb82c0889e757c4a", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x540e2ec74b76c2ebb205cdd29238c9baae242bf09741c6794ad7b9c7c6ed0c2d" + ], + "computeProof": "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473f27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56d1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708a8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba767fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f41de665a2182f06c714b0380f1e1e8c8d7d0e96e3b6306f0cf5dec8f488eddd621b352cd6509860e1ec951c1910d6d7bbe74bb87b5ee99e6aa0a450ff8c1fd80e9bf8350be7fba9b5bd697be39b383a735ded78c35c0653879c14fb9609c39d5d278be03d824f25f4ebf274a089c6d446453d5682ff547d759aa913b0fb3386007f1579a4424bfeefe20a91dcda58330b1a6d358ccef8753bec57303860978a442892d7647b143449facafdc4d92a970fb0ca0198ee1cc3a187cc9bc9c44d876ac1f9ec217c99bac77963d9d1e4346b25a955d121784b80f1f50bc0e2f9bb8565625c88b255ec9b734f784cfae985d5dee2e7eb2c765d12752277b930fd000b4ee83d16fedbe72df8246d23bffc4d1e3587b224f5a4c7a73a0c57e05ed1593a1a2a4842b30b05c64c63492c3a862b8edb1c21bfe85940238b7c0fb9a763ebac05ee24533c702c0217f2c942b8be48391712aa757c4b6a10dd67d14ee94cb99b11ac9291343d1b611b247babe70c345306672c76ba843db5b1791ab4ebaa199429e5fd42d391b641f6cb23b915601f538be99504a088bf8b2abafcdca73f9fd906436dd5d61fdc69fb6019a7c0dc1272b5aebee69685b602b5548fafdeb5b42d6f01da2bf452b41943f78b5623593ece73daa6f1f35636c673ffcf1b34e188674f35d72c8bff255ae28722fde3162352abf715450eb431c71ab5a169c8e088474ff6c62dbb1f0d154617a09dbb6e2357411803a90d369efe5dc3a7cbb8e0dc3700381408ef059b397f7d218fbe55131aaafd21743cea39caa6a2b066d573c8700ddacb6f37edb0e0dc20598934122a47055aed60f4ef93e3fd98e4e9c712ade4117b5f3c5ac407f6ad8af5436dec3f804614606cb972920ef33b888a1a0211600c3b526194dc18ae3104050a8eb0923be1f82f2bc878511403aa61ff3e16bd35160b78c6c5d70a95ab4f428cbf4f59d6bd67afafc0d64878f38968709aa36fe80192a507817d307f427113a2bc0b0c31e73a98bdf9f0eb3fb456604c944a3e641b310d6c408d098e2f4e72333a02ef2a975c3f3d0de9e9ee63e99269da06164318ca90cd9955588a9c31f76be818a23c2a97b69f76d6e9c9c27f788ce380d2241e38fb3c687ad8d6794e7dde4aa87e45de42ecd48a2a2a5765bf4e0e35734d8b02bc457623d3fe424e83f4ae817bcb402f677882475a8ffd03c5ccca21a448ee02f04ad01ba9ffb8316b86abdee60aee0feedb906e72c04b84813e2f4e602e611d9e7a41b36e3c1ac1047b6c3739fa563607ef9776e2e363b4974941e0cfc7341fe1252b3d4b67f43973a497f06f6ca859e994e665a0866f706a7b08d5ccbcba273743c13fae53a3450c644386c8b83be28ed2e9a5ffe6e9ffdd10f67e827e1716ad58972fa374e0bc50ffb70218f3313680c852154a314ea65a1f006c2714a7269621c8d9bdabc43c5aaede176ce6d02f228c7835c8e148b74303acebd4c7ac1ab964dc465ad751b424ad846d23c05b957799a632d642ac6e813383e85a2f7604127bd3bed8cc680d3d0179ed3a85ce75c673db7f7b4a445e6929e1cb29f22f1a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e9a849d170fd79508c505dd22a7de42391131ea6b11de124ca620acc7812b129d2c691df8ba6aed5e9dedf9327b64b2c4f3f84935511f8ed1fcc6d4914ad7137be7635f1b8c2fab5b5ab5bb30a483cbdbda2d78a0790258ee99b13589d4f214f98b3dc2f0b050798a358adc435c1abccaf5b22473d61a57f43981bd30a8ca2f252d2de8771931791a985fc921b21ab8fc7644e6dac522efa621e249f0cd01111ad2b098e060445200f25eb86d458c7cc184d9dd7453cccb6f7718f09017e4295f701e97e3c87566c4862d05c5b6e36f0ac79c1359bb25a42dee3ff65efff101b2e0581d4bf246f10a0454dc8e64f33670a6f23afd3723b8753d189ec6601008b998abd176d5a00a0db44040271b99aed4f2cff1a11392be19d38aebc3f1541cdef017646dec52db7a5316827fdd75ab35a8dc7d961556734a95249740d6c51697744bf4d6a9efb35c87a27c60bfb0d939a7a33b38c9cd41986f83747c9f301858eef079897e67a2f6ad3f0121cf4becafabc7ea17a949e3bbe64e033a356b07d7c049c8465d3b13682cd4ae5d0a4e323c362eecee049c6a5731b4b2daee51017f438dce578108baf6a79c78f38f19985761058fa1a5b412b52b690b4b60cf2ced2a2847e8c4b75c2480efbcacb1bef35c8b85d37d6be2d3dbf669c1a4cf8b18c9e19190b24f255f704ed7121d7185fa16cd2cc4e6c8f15bb30e0f2167c27307652895590cb024d38929ae01cb35addbacb716bde0f752b788bf5a38ed8f3c223f1ad82ed0644090ba095026c9aee4b6bf5d951b3a99b2de936a603883d84c0f657332b3521a2d8ed6861d675baff845743eed97633a17cda3dc7f2ae2f8d31966da8d5039efa183d0ebd70119737efbdfa95922e4d3d4200f7e414e06f96c2ff8799f13f3e322f5aaa3fb0ad93fc10caf8ef7e85b90f37774feac7ddf23d42d2b0f7a6ff219cf8152226d5a028207ab94323d803bc90ed30e762aac13d50b30adec3a2c420e5bdbe6f1f96529534463da99e139dee06a3b6ac8b7cfc832d51ffd62ffca82e7ea54d885a90534b6649b2a3b0f9ef79ee6e3535c561e05c0581eb072a099a013d082a723428fcd7083ad03339ddb015cfd33f87cc58e808dd955f0ca321d6fb166b9b83e30f03099dff304657c4a246ba037c6978d4ebf8fa353", + "resultLen": 8 + }, + "computeResults": [ + "0x3a57acd1a3c16a97de291dae6c04ebfc43a603090ac6faffbebd6a4e309b5473", + "0xf27b02e9e47774968c0060278656964fc2108f453c1c13e81a25d8f216cdf179", + "0x168eeb8c62e378e1d99f6145d8b1f90e782713aa5adb451725a24e0917da741b", + "0x01321695005abf6c7750de99ec467f54abd37e7033c30a6423478cf7045ea27d", + "0x1d9f281b63ed5f5101e356394303c6591c31592e0c9403fee83bfe872f10ac56", + "0xd1333dac5e4c2d77f3e6e073a00e629303f90129e6390af6d976ced0ec8ee708", + "0xa8ee272bf47415688e752618f4cc131a533d6ac7fbc3f4a85b4573d78bd1ba76", + "0x7fee4a8a4ebfb0d1d0ad069bde5bacdecbb88af6a33ce0fdb2f5a8d122d2a3f4" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 10, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000001, + "txIdx": 11, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000002, + "txIdx": 12, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000003, + "txIdx": 13, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000004, + "txIdx": 14, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000005, + "txIdx": 15, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000006, + "txIdx": 16, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000007, + "txIdx": 17, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx_legacy.build.json b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.build.json new file mode 100644 index 00000000..d60f3e38 --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC2axBEKw3XSXz3Bc/VVV8fPYTkQal4ihGtJRtRQrMUaEHWOepcARokzz1XWNaKViIW58ANlqSB62n/p82hWOJsSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHz47hlK+YZmZ6EZGf/EE/r93/ia+cVxyQgLvr32HeIV5VYLTCjR4rb/YRdG95a3VhNPQ0QCXIqfRpNij/CIXwKS3LnTLDTmG/U1H8uGvqSfIwaFpDVTaBlCWnz5gRigKFJPR9ea9KEeGnu0Z+RLDg5HCOXj0KQ6EqScQ4ZOlcIfgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH+pjSNlg5sW58D89AoOGEDPXBGbtoKxJYptMzGfltJgf3vIsD1/tM7F2FAHDGx7yeguxN53GtkoWubeTTSGdjCQ=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xaeb49e1314df4fe0442faabf5738fdbf2f71e48a41ac8548ae45ae5f201d583e", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDgwMDAwMDAgKyBpLCBpKTsgLy8gODAwMDAwMSBpcyBsZWdhY3kgdHgKICAgICAgICAoMCwgY2xpZW50XzEuYWRkVG9DYWxsYmFjaykoYXdhaXQgdHgucigpKTsKICAgIH0KfQ==" +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx_legacy.circuit.ts b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.circuit.ts new file mode 100644 index 00000000..7d00ee76 --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.circuit.ts @@ -0,0 +1,27 @@ +import { +CircuitValue, +CircuitValue256, +getTx, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getTx(8000000 + i, i); // 8000001 is legacy tx + addToCallback(await tx.r()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/tx/diff_block_diff_tx_legacy.output.json b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.output.json new file mode 100644 index 00000000..f0d1f47b --- /dev/null +++ b/harness/test/integration/output/tx/diff_block_diff_tx_legacy.output.json @@ -0,0 +1,99 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0x47b6894dc4fe8520af791ab6b4dd1db8ee93d4b322dffc2affd18d70811ab226", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xb4ef309315abc0ea07bfdc346f826e3b487cb14a6a5cf8a1ea6d037c9f543a11", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0xba3c73f37f2bd02138e411642e72bbb09941b9d0e2d8a38d9b425e2952733830", + "0x104234b1037aabd32d1b6dd9a1f3ca5bf0518666391ac4eebb82c0889e757c4a", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0xca67741a5b2c8291d1e02235b8a8261201b9597313a14f3ad2a65de125328926" + ], + "computeProof": "0xe6c51797979239ec7408fdc065082ab2757c29554513f536b32aecf3953004bb2926a314cf9736832c16735bcdc87fa0933f7890aab8fb632433dde24651b92979b7e759b263749ba831aeb551e2be09f43db009558d1ae90d3a1455c720308297292698fd1cb7a6a57b5d2cd49d910a79abcc6578116095af2583bd22e535a8fd45726c3b2908bd504d263cdd547aef7e0c6fe6c04fcf96445c176b248f75c55696969203534ce5389816a69e59dc4e6e27018c243f7fb546a3d12b66f7c399a8edfe12a7fcfa0f52ee98c3a937a17258160678a37f661c4ff11e7ed9bab9feeff4e561fcbb805cc9a10da0144d8d35387ef92a6872df969b0ca7a1cf39c2fffaed95b30eb833f510bd61d48b7e0ae0c429ead4d5730c6d3fc77fdd6d52d54b5ed19722ba036019d6adfbea423a30b19dbaa401ef44541b673cc38e13da5b1ee3e2e308bca4182e71485db5aac7a7bcff34f1ee1ff66ce5ccbe293a533eab0d56dc7b2d73325a8aaab52a3add9241101da937fa7487fd10294089a7880c1b2c108c5b4303a7d154a196d0b36e8d6cb32934c6e1478ea8914550bdd1d66e6962970d3eb8539690ced42f81389cf659c6477e270767ff0df4691a50d3a1a1ab661cefc9f0057531aa7e40d2de3c510a179f43db15c23f8ed5df3feecc48524d5b1aee62be433c76ef13ec6db9fa657486b622ce6f2311d4b834918b1258d6131fb82aaeefd765ab8614141a8fa2387f87cad5029ef377b927919ca34af1c8a82bc23918d732450bf968f4e0e2008e56333ef097dc4a880a1a23c2bca27dba5743a636feba885daa42483dc78539ea525b4909a6d77713b05f4d9233ce2881134d9560731458311914643adad5ee279ebb483e0aedafe7041de67aa9df23342e6e77e43ded03a9b47c96cd1b9a3d9df3638989edd3d5a0b8835ed30354670b2e67181d61b752c13308a9d5635d11a8c133ff9827c538cf1da12cfc7ddd2665034b0503d933ffacd09b6436b07a9a31ef6f56bd8f5b46faa29d22fcbca9b2969c119a5eebffc150ffef7809320922002438a9184b4b727a2e2c802206afd158ef586b953dc5c470db5a78312b3c41b8154fa506118eb5c0c2d1a72728234153a31ce40f8d6503515d4a81c30e24a37cdb8ee5b8e7c34ecb83a5b117079729a76921de654cbaf123105b584784fa9198927e42f03b1d5da1bbd7500369446ef5902ac86eb733dbd4d3b270e1bf93664adc1861d3a529e9d26a6ab2a44ae65c267600340d3448a3f80dabb603aad01d6b7e374f69ce30a0bfe8d7f1ea24fe23233a21b3fe89e79e922e4ee14b145868c87f25f8b8f9f6cd17290d6898a58320bf6124b3995807a8eda9965d6560d8e0da6d67c3595be96600a13cd5a31f8d203bbf05fd34406ecd018e1570b32321ae9e29dcac04f7c03b1a391dc92b6a4ae3f8ae061faac2152e70fd250eceeabf2b90f24c8380210534f65a9d5ab20463090d5325569af04b0f33b37cace5b49c852b4f5cd46fb2e58b9aee64c67dea77468ccc242ac477acb6972cb1337048ab4557a6822d40b7a201b373e79ab493c64924f4120cd8bb7da4532209f5d5b1150bbc5ebea841df83c9ac2ffeffdd6fa41c12bf23f53cab3fb5eb60f19dcaefed8aba499319e0c2b41d809a2e3a7f22737113f307bf6d01af55e9e9b714d6df309085281b583a431421ab33b5bd8f3e225cc2ea0c740f155ad7a8e594789ce92f5c44ff8a7c95d461fa827787e359b57f9c75e51d172d739c87b625abf346f04dd5e36f4f9a00178e3dc842b4a8c972ef467c3323681e637365f60991e82b161e32c2202c090c0c05d385ed5a8766e3ce1a1972169da41c1f26208ea12301168c12359077c5e99c83d97fa9969e6ec7d6388a892a9a3de4c249b8c2d7018af208b55b9769f83d5dd390b33fbad657bd40a5b2082200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f0a5e5f2b1214cc861e30a6c3808aa9a0cd5181aae0f50357d62ffc268a251edb95c8cbbded46a816c6af9f42891184aa1bae3eab13d723c4a649f904d97725b1fcaea9da02afb40046bccd9c62f2a5a29486a533e65553cff217492d1a8a13e3d830df0208fabb1457b134cbc03295a4fa3b8878fe0d6d20ab375e663e0016525d38320457ba2915915d2fb92be28b392b869f52968084d1662d0b86ee49250032427280f92f40c2e7aa4c3b9c1f4e75280913f5d23e415225c306060b4f1fd8885e15964e04e164c76403682efaa7e5c4ae3e3e78d2714099ae6950746d0e345ed1073e90c21479109b468292c672ae89b7d5e9813c095daefc467151391585453c6e06c797e570a099a262b9c9ae44dd6a4713c644450cc40ab6684144023a0c62388ea29ba7e037a91b167485a27436b4f9d297565f42a7b3855e68fa1d5d98d94a06e1115292a060d9817caf9704e65e21d46bd7d8d4ab400a78e71f1981ab3a37e0377c66c9e1f5aae4753dbaa243fa153dcc2f25722e8aec60342a0c491a86ee722c4e0612e493e865a7a7280ed6d3ea4ac24ef466663700451033300628e75fb601f76c093b1d26dab8f33fb7f800ad3af42cdb0af5e16e9b09ec186316902e788e9288636c3bee59eb0d88929e19dc36da4a1c3e6cf2bb707e292524ce17d89ad7ff26a79ab3ad675113c26dd8ff0d76f99de33abaa25c0943f41c1bb0040c4913e9010fffa5fee0c094b14a64d4fd6309c8ad59840c687231df00618867933af03d06d45120ede94b406c92d1201191ded14454efde901275c6172d1ff781020fbed3e51189ab020988043c34658d8ac6217c4ab8bd1e78c66d2d4feb4b7e9281543167e00928df41f28c32401c6a07b5cd0cf14fa8947fcc7027236057e512b82880af4164895b0132b28bc79a1a45a47e08f350c705e7b377178b222f6f29e61c3d8e4bdaea88406c49454f383ef3b6b9ef1a100c9192c9250525d5fbb4f41040cb624494404fd483ebbd2ed2d0a8a7a9d9fd475836238da628f8fd80f457f902e68b2c03096e9e5d61b15fcd4d6a00f9c128bd8fccdb0b9320abae11e23b122a44ed1fa784915878ddaeb98f6bf5bb3703b61ce8a535b562503302c51b04668efb3333fc898ec46c896779fe28ad206f921629f6b8b4c99550", + "resultLen": 8 + }, + "computeResults": [ + "0xe6c51797979239ec7408fdc065082ab2757c29554513f536b32aecf3953004bb", + "0x2926a314cf9736832c16735bcdc87fa0933f7890aab8fb632433dde24651b929", + "0x79b7e759b263749ba831aeb551e2be09f43db009558d1ae90d3a1455c7203082", + "0x97292698fd1cb7a6a57b5d2cd49d910a79abcc6578116095af2583bd22e535a8", + "0xfd45726c3b2908bd504d263cdd547aef7e0c6fe6c04fcf96445c176b248f75c5", + "0x5696969203534ce5389816a69e59dc4e6e27018c243f7fb546a3d12b66f7c399", + "0xa8edfe12a7fcfa0f52ee98c3a937a17258160678a37f661c4ff11e7ed9bab9fe", + "0xeff4e561fcbb805cc9a10da0144d8d35387ef92a6872df969b0ca7a1cf39c2ff" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 8000000, + "txIdx": 0, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000001, + "txIdx": 1, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000002, + "txIdx": 2, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000003, + "txIdx": 3, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000004, + "txIdx": 4, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000005, + "txIdx": 5, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000006, + "txIdx": 6, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 8000007, + "txIdx": 7, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + } + ] +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/same_block_diff_tx.build.json b/harness/test/integration/output/tx/same_block_diff_tx.build.json new file mode 100644 index 00000000..d3dd62f9 --- /dev/null +++ b/harness/test/integration/output/tx/same_block_diff_tx.build.json @@ -0,0 +1,14 @@ +{ + "vk": "Ag0AAAAABgAAABY1r7+9LC99Zt9EtzUY3fULKNJUkyLxb/sssGEoF28F7Kw2Hs1EiyUi/27eP9WnaS59lAJp5Aavcgkf7raFqC1mJlIamtPDU2gSNPqwn7KsbFWZa5y4omQktP4F/8fwG/TmlxFPZUwSE53tUv+PUC/bhpWjOk3m5VMv6VV0pSQmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZ0feWwyvvB9U9ZEPtuAepq6ukw+urZbfBW7Tl4P8ElRpMhxI4LBRIfoTO91pZ4nO+br1Xh/qu2N5BRLV2WtQWS3LnTLDTmG/U1H8uGvqSfIwaFpDVTaBlCWnz5gRigKFJPR9ea9KEeGnu0Z+RLDg5HCOXj0KQ6EqScQ4ZOlcIfgSDdoAIPg/lfNr4zJdJLCnukqtwuAiAAfqKhF3b+CAiRyoXHd845K0f6scr39zHQGDeGzqcOwwVDS+V3XdhLMIF/bYRt26gXnwiikw/38FZsUPjwQZ/t99e+v0bw2l8Pi1TEsfyexOmtFTuLeH7xT7CcFeFio9rI0mpYRyB3hh74EaA3eah8VQXonAvgWXROtS14xt/LnL2gjHVpCjXUJYzK4F/McgXq4xNUA9pTUArPQkgpaFDSrQaTAwPMCdorrsJ1HqrIi0vPeWnMo+VHvr2JPT91GrwFivdhtkar8h2u9xHDlJxvWZmc+NCxLHwlZwDm7Gc1BJcLurB2wtrYH68JRjK+8qP5r7C2w/TtOs1S7zV8YeOu1qgmccRl01siB6nC9qutjrPV5QlfnZXvDVKkZF2amU+9ebNK265bCSM=", + "config": { + "k": 13, + "numAdvice": 4, + "numLookupAdvice": 1, + "numInstance": 1, + "numLookupBits": 12, + "numVirtualInstance": 2 + }, + "querySchema": "0xa43e36c8ad1f5c279f0f561795a490c7539799279cf2418c24266c66a6b573e4", + "inputSchema": "e30=", + "circuit": "Y29uc3QgY2xpZW50XzEgPSBBWElPTV9DTElFTlRfSU1QT1JUCmFzeW5jICh7fSkgPT4gewogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBsZXQgdHggPSAoMCwgY2xpZW50XzEuZ2V0VHgpKDkwMDAwMDAsIGkpOwogICAgICAgICgwLCBjbGllbnRfMS5hZGRUb0NhbGxiYWNrKShhd2FpdCB0eC5yKCkpOwogICAgfQp9" +} \ No newline at end of file diff --git a/harness/test/integration/output/tx/same_block_diff_tx.circuit.ts b/harness/test/integration/output/tx/same_block_diff_tx.circuit.ts new file mode 100644 index 00000000..772cc1a9 --- /dev/null +++ b/harness/test/integration/output/tx/same_block_diff_tx.circuit.ts @@ -0,0 +1,27 @@ +import { +CircuitValue, +CircuitValue256, +getTx, +addToCallback, +add, +or, +} from "@axiom-crypto/client"; + +export const inputs = { + // $input +}; +export type CircuitInputType = typeof inputs; +export interface CircuitInputs extends CircuitInputType { } +export interface CircuitValueInputs { + // $typeInputs +} +export const circuit = async ({ + // $cvInputs +}: CircuitValueInputs) => { + + for (let i = 0; i < 8; i++) { + let tx = getTx(9000000, i); + addToCallback(await tx.r()); + } + +}; \ No newline at end of file diff --git a/harness/test/integration/output/tx/same_block_diff_tx.output.json b/harness/test/integration/output/tx/same_block_diff_tx.output.json new file mode 100644 index 00000000..68752585 --- /dev/null +++ b/harness/test/integration/output/tx/same_block_diff_tx.output.json @@ -0,0 +1,99 @@ +{ + "computeQuery": { + "k": 13, + "vkey": [ + "0xafa82e8510ec6d0e837a94d7cf566f6d7c342583158f8e66d6ec1bec509c520b", + "0xc04b25057d0bddf35d4542077516abb76445b8e745a457e3ccc1bf9aac2ba406", + "0xdbf4c3ee3b558cb740fa8829b35dc881c73cd6a52372cfe1861b20a48e8b9e4a", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x0000000000000000000000000000000000000000000000000000000000000080", + "0x72d88887cae52ab93b6a7585fdc50b71d3140cbe471ecb26d04d69c113867e61", + "0x104234b1037aabd32d1b6dd9a1f3ca5bf0518666391ac4eebb82c0889e757c4a", + "0x22e4c62aacfc240ed0553bfad00122ba8c7627c870c739f3f818584e066a8b1f", + "0x841485e0a9f109688bdc4f5ff851d9e2e44833ae573456742c1237322e938542", + "0x79a62f1cc2f1440cc9fdcd534b612a49da4b6139bbed8cf53a26f4568ac3f567", + "0xe40c0e4521b32cf17ce45eee625a7e525481b412984310e1fb44eef5a34ab34c", + "0x3fa52470f2d5749e0502e5723888c33eb089acdc4802446668c1683c2751b02b" + ], + "computeProof": "0x088c14f01d580ddb200cbcd6549ff3cdf918940470f9c9d28a424fdb256ab6dae8f03bbe926058e60ef5e59115e938e10f8614356f48f5f0fa93d6e6f76a8d3148f525becb71d0b3eeead08dba5a866c07f0888685e1a84f7558381b10117e50e81708bdd50c4696e90b0de0e78a618d56776e9b0bb705369428304ec9c373e717b70c970250be1566163fe14bfc969621b2e1e8d8029686f235fcbf18b50a48ec008607db0981a50f383e7b039bd8cbb5d10e6ad875c7c18035b2341efbf2d8b62a2b2410a126bce9fba6c43aac7978fd480c73699147fc40f1bf09accc76fe41ca7bc0ba7bddf47fae9b62be8e7381495cd80a25f60f6e028bfc32926521b96d38564ed161555a66b99ee7ff9ab50a872acfe87fea020b31401cbe75aac1505feab2cdf13e5e44b60367c90917215d25d64d086bc3c483e377e0764828692fb0b6bf7699c4a8143c67165a042f543bcd716ec15100259cea5f01db93a14255d7211c3f34587a61b0abaa18d062cba04d3c94696fb5121703b6ee307350292eb8aa2fa2e2af7630f4522771974be8c7e4cf93269ec30b0729dd0296e216636e49c814a9a65f350154f31f856a0a7079da53fed6d6e2af38c256fa2572d1e854dacfd69412609d751ba4184901ddaab87914a869643df1321bc067def9f4b01dda5ec70f0a037e8539650d339c38c9bfe00e8a86a629cca81e164e9f2273c843fff471f878ff942e017ddb47bd0c6239c386aeaa022c3c7b90d42e8787c1514d26ba0c25bb9b3200d707b139c5b2d0d62bb1caa163933df2fa8b1fa0d0467960894cc6f6578b39988b7fe7c338d1266e71d7759806f4de7a3a2acdea9a54262ccfc61a84732e3ab69e4b058a7d954270ae8eb2317c710980ee98e0597396021a65233abc028afabaf5cc1e4797c810719baa509500a4f0b8b2c0c287b38b481233b918453624cc5506144afe3d5ee9684956349c4260d3bc1c3d371559a19a200cacb076ba188463767a4084d063d415dfa41d2f019539525415232139115144e5311da3c5833439086ec99e997a0fdb7ec4f0c3186efb349593705dcada0f2ba1df8b3d30000d62b571d3db6f3525d86b7624e322eb1077524efc3d63728d2fcd73d4a5a7ec48279345b8b50665074b8149f452370fb009ed6d97f104dacd171a337bc0dd821850f4fd98b87160f45223fe2346d7dc9c1c5c8bc6e77da5461bd3a227681d5eaca10a413eddb8f10e9c7ec1f03214c8804e5c60d09fe6036c234dfcb330bd4c05110762a4256a4af812392ac99b307f71ed5aad7aaf15a99a2a3709a4ca364c07d6cc582e0d35f422f90d2b86e5c6d65da56ceba02e362db00475660486153dc4bc5876560f47c483a75f215ff9dc7db8e2b58515f7eea0b812e657f5599dc312e4cb8fb2f20108116910dccbcec95599ea6ce125a0009a0915266ef87e631414276c1b004077a1a9070c0f471f87fee2fe5df46ed68c91ec2abfd945210642ecfd226b832bdd28ae41f61d3f86a4dcc88cec1f6ce535daf92e4908965cbe00cbe562d014b175c7235920397071dfd92aff76e76324ea62562f8ea893e2edcc442a447baa1dd3c9055188fcfa830f8de9535cb8dbbb80c6a509760001f1db379cf925f5ef6a244bb4a33ac200bdae24f67b9dbcebe0d6c5fa11ab86308b398bade75526d5e9f7fa366d09baf591741af2ef87bc347fc623a90402483f1d74c01f8850ff347c4467e584b7570a6b72b750e9d047e72786624e0e005f9ff62b48d16b1284c9cb6a51dd21eb99bf56408f11b36ff8a62939459007a7e95b579289744ecf6d9660ec25c595219f7d17c778a2d393a09fb0bfa33a123a42f6e9da7e7d24d82f76dad074e280ba8639bf9c1544cff2c58cad04bfae2d763c74a234df78bd53b161fbf72d9a57da80400e0620117c8bf383805fd4a92200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007bb362f3e9dc28bae08f498acb606b5cc128755e8c667ab6df0e6a3fdfd5671c4aa4dfabbb4fd514d9cf7b2e56aea62e60cad0789f47328092a7808a3f1f572ff47b971d150025b23f0cf85649043e751f42b5451f596dbde0701c4070ce7401978b2461c361757c2e03f643aae051b15f9fa8b69dacc5cd122cde9bd5d7ad2c660325718458eedd4887ca4a9244ec2c87748e1bc11730278385be2093ba1214eb6482c75e65c80c1302c8d183a6aca9808f020be6409ac2b08c7ac4cd058f206f2320f6819ea6f319a41e67b2fdd60d8fb6f114a59f932ab36c0c3090ef1815e3611280811f03f03a9b9227ca66b6cac85c38a697cfebc6cd25c1b381dc4317f2e8a6865d897074d5125b889341134442c4b19160c0e368ca087099bb4e691464fc310dc08484b3b5cc2a6c2cce40d28e2733d3b01cae8eadd20d9036f3ef2699c68173427a455716c2049727e3ecc790f3de1b00c455d68f4da0e231c54c11a2995d00198b13c9dadfee147d5f81d91aa1c8d2407a11df21d2de4f0e253215f171a7c675215b79b7eeb7f401a5ffd7b9cfa27c740a1f69f4122a5a895ffc14318c24feed327732d800a5fb171370d0b88c8d5e59a0987156899f8875bd7815909cc484037544306ce13dcebb0bcaa9cbdd60f3efef100c42f218d4bc122823f58ad8284ca61227890227a38fb3384c801866123c681e5ff6c334152fab840311ab8679e47d1ba916b495f5b5dc86921a8b53fe366aaf786a1f55a52718e60a836b3e4d5de7759e272157657979ef3ccee329265ff387adbab6205913cf7d11bc1448f031e7e527deedc2010cc360c46a00b3c57c281e2cb875b778ed2bb71d3ac0cc61332faf83233e36fefc5c3ab87819abdb6b855b35eebe1a07ba0eee27ea88a8585937c2287069ab373375a2edd588901998dc4703a32c49a4edbd7600d7e892863ddf17d947a9215ec04e39febe70f05d04d37f4a66288f66d7768f1e8f5559ca373e65c9bff45ef603ea8af42aa7ab4094b36cd6d17fc87a54de661d6d1c752d59b7ab241b4037b3623d7bba202acccdea6175bddc331ae14a5f2b2184bca09ad62209bc6a3d758d2edb32f6c03dba4b249f32d990bbd8c43f14b42a6fd1ee3fbce677d13bd05186799ae76597d038b7b33f779b9f159f445ab7a71f", + "resultLen": 8 + }, + "computeResults": [ + "0x088c14f01d580ddb200cbcd6549ff3cdf918940470f9c9d28a424fdb256ab6da", + "0xe8f03bbe926058e60ef5e59115e938e10f8614356f48f5f0fa93d6e6f76a8d31", + "0x48f525becb71d0b3eeead08dba5a866c07f0888685e1a84f7558381b10117e50", + "0xe81708bdd50c4696e90b0de0e78a618d56776e9b0bb705369428304ec9c373e7", + "0x17b70c970250be1566163fe14bfc969621b2e1e8d8029686f235fcbf18b50a48", + "0xec008607db0981a50f383e7b039bd8cbb5d10e6ad875c7c18035b2341efbf2d8", + "0xb62a2b2410a126bce9fba6c43aac7978fd480c73699147fc40f1bf09accc76fe", + "0x41ca7bc0ba7bddf47fae9b62be8e7381495cd80a25f60f6e028bfc32926521b9" + ], + "dataQuery": [ + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 0, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 1, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 2, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 3, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 4, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 5, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 6, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + }, + { + "subqueryData": { + "blockNumber": 9000000, + "txIdx": 7, + "fieldOrCalldataIdx": 10 + }, + "type": 4 + } + ] +} \ No newline at end of file diff --git a/harness/test/utils.ts b/harness/test/utils.ts new file mode 100644 index 00000000..5f1d4d51 --- /dev/null +++ b/harness/test/utils.ts @@ -0,0 +1,28 @@ +import fs from 'fs'; +import path from 'path'; + +export function listDir(dir: string): string[] { + const files: string[] = []; + fs.readdirSync(dir).forEach(file => { + let fullPath = path.join(dir, file); + if (fs.lstatSync(fullPath).isDirectory()) { + const dirFiles = listDir(fullPath); + files.push(...dirFiles); + } else { + files.push(fullPath); + } + }); + return files; +} + +export function makeFileMap(files: string[]): object { + const fileMap: {[key: string]: string[]} = {}; + for (let file of files) { + const [folder, fileName] = file.split("/").slice(-2); + if (fileMap[folder] == undefined) { + fileMap[folder] = [] as string[]; + } + fileMap[folder].push(fileName); + } + return fileMap; +} \ No newline at end of file diff --git a/harness/tsconfig.json b/harness/tsconfig.json new file mode 100644 index 00000000..59fd066d --- /dev/null +++ b/harness/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "CommonJS", + "moduleResolution": "node", + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "importHelpers": true, + "lib": [ + "es2020", + "es6" + ], + "preserveSymlinks": true, + "preserveWatchOutput": true, + "pretty": false, + "strict": true, + "sourceMap": true, + "skipLibCheck": true, + "outDir": "dist", + "types": [ + "node", + "jest" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.json" + ], + "exclude": [ + "dist", + "test", + "node_modules", + "scripts" + ], + "ts-node": { + "esm": true + } +} + \ No newline at end of file diff --git a/readme.md b/readme.md index 16945655..c4b9a08f 100644 --- a/readme.md +++ b/readme.md @@ -1 +1,7 @@ -# @axiom-crypto/client \ No newline at end of file +# @axiom-crypto/client + +This repository is split into 3 components: + +- `client`: Contains the Axiom CLI interface and developer-facing AxiomCircuit exports +- `circuit`: Handles lower-level interface with Wasm circuit libraries +- `test`: Tests for the `client` \ No newline at end of file